aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/javascript/reference
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/web/javascript/reference
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/ja/web/javascript/reference')
-rw-r--r--files/ja/web/javascript/reference/about/index.html48
-rw-r--r--files/ja/web/javascript/reference/classes/constructor/index.html190
-rw-r--r--files/ja/web/javascript/reference/classes/extends/index.html91
-rw-r--r--files/ja/web/javascript/reference/classes/index.html424
-rw-r--r--files/ja/web/javascript/reference/classes/private_class_fields/index.html207
-rw-r--r--files/ja/web/javascript/reference/classes/public_class_fields/index.html267
-rw-r--r--files/ja/web/javascript/reference/classes/static/index.html132
-rw-r--r--files/ja/web/javascript/reference/deprecated_and_obsolete_features/index.html291
-rw-r--r--files/ja/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html75
-rw-r--r--files/ja/web/javascript/reference/errors/already_has_pragma/index.html42
-rw-r--r--files/ja/web/javascript/reference/errors/array_sort_argument/index.html47
-rw-r--r--files/ja/web/javascript/reference/errors/bad_octal/index.html51
-rw-r--r--files/ja/web/javascript/reference/errors/bad_radix/index.html61
-rw-r--r--files/ja/web/javascript/reference/errors/bad_regexp_flag/index.html106
-rw-r--r--files/ja/web/javascript/reference/errors/bad_return_or_yield/index.html55
-rw-r--r--files/ja/web/javascript/reference/errors/called_on_incompatible_type/index.html72
-rw-r--r--files/ja/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html60
-rw-r--r--files/ja/web/javascript/reference/errors/cant_access_property/index.html59
-rw-r--r--files/ja/web/javascript/reference/errors/cant_assign_to_property/index.html55
-rw-r--r--files/ja/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.html64
-rw-r--r--files/ja/web/javascript/reference/errors/cant_delete/index.html58
-rw-r--r--files/ja/web/javascript/reference/errors/cant_redefine_property/index.html51
-rw-r--r--files/ja/web/javascript/reference/errors/cyclic_object_value/index.html72
-rw-r--r--files/ja/web/javascript/reference/errors/dead_object/index.html51
-rw-r--r--files/ja/web/javascript/reference/errors/delete_in_strict_mode/index.html70
-rw-r--r--files/ja/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.html75
-rw-r--r--files/ja/web/javascript/reference/errors/deprecated_expression_closures/index.html82
-rw-r--r--files/ja/web/javascript/reference/errors/deprecated_octal/index.html66
-rw-r--r--files/ja/web/javascript/reference/errors/deprecated_source_map_pragma/index.html61
-rw-r--r--files/ja/web/javascript/reference/errors/deprecated_string_generics/index.html105
-rw-r--r--files/ja/web/javascript/reference/errors/deprecated_tolocaleformat/index.html91
-rw-r--r--files/ja/web/javascript/reference/errors/equal_as_assign/index.html54
-rw-r--r--files/ja/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html168
-rw-r--r--files/ja/web/javascript/reference/errors/getter_only/index.html83
-rw-r--r--files/ja/web/javascript/reference/errors/identifier_after_number/index.html53
-rw-r--r--files/ja/web/javascript/reference/errors/illegal_character/index.html75
-rw-r--r--files/ja/web/javascript/reference/errors/in_operator_no_object/index.html75
-rw-r--r--files/ja/web/javascript/reference/errors/index.html25
-rw-r--r--files/ja/web/javascript/reference/errors/invalid_array_length/index.html77
-rw-r--r--files/ja/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.html54
-rw-r--r--files/ja/web/javascript/reference/errors/invalid_const_assignment/index.html91
-rw-r--r--files/ja/web/javascript/reference/errors/invalid_date/index.html54
-rw-r--r--files/ja/web/javascript/reference/errors/invalid_for-in_initializer/index.html75
-rw-r--r--files/ja/web/javascript/reference/errors/invalid_for-of_initializer/index.html64
-rw-r--r--files/ja/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.html62
-rw-r--r--files/ja/web/javascript/reference/errors/is_not_iterable/index.html105
-rw-r--r--files/ja/web/javascript/reference/errors/json_bad_parse/index.html113
-rw-r--r--files/ja/web/javascript/reference/errors/malformed_formal_parameter/index.html65
-rw-r--r--files/ja/web/javascript/reference/errors/malformed_uri/index.html64
-rw-r--r--files/ja/web/javascript/reference/errors/missing_bracket_after_list/index.html56
-rw-r--r--files/ja/web/javascript/reference/errors/missing_colon_after_property_id/index.html77
-rw-r--r--files/ja/web/javascript/reference/errors/missing_curly_after_function_body/index.html67
-rw-r--r--files/ja/web/javascript/reference/errors/missing_curly_after_property_list/index.html51
-rw-r--r--files/ja/web/javascript/reference/errors/missing_formal_parameter/index.html80
-rw-r--r--files/ja/web/javascript/reference/errors/missing_initializer_in_const/index.html59
-rw-r--r--files/ja/web/javascript/reference/errors/missing_name_after_dot_operator/index.html68
-rw-r--r--files/ja/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html42
-rw-r--r--files/ja/web/javascript/reference/errors/missing_parenthesis_after_condition/index.html70
-rw-r--r--files/ja/web/javascript/reference/errors/missing_semicolon_before_statement/index.html67
-rw-r--r--files/ja/web/javascript/reference/errors/more_arguments_needed/index.html48
-rw-r--r--files/ja/web/javascript/reference/errors/negative_repetition_count/index.html44
-rw-r--r--files/ja/web/javascript/reference/errors/no_non-null_object/index.html66
-rw-r--r--files/ja/web/javascript/reference/errors/no_properties/index.html40
-rw-r--r--files/ja/web/javascript/reference/errors/no_variable_name/index.html90
-rw-r--r--files/ja/web/javascript/reference/errors/non_configurable_array_element/index.html78
-rw-r--r--files/ja/web/javascript/reference/errors/not_a_codepoint/index.html55
-rw-r--r--files/ja/web/javascript/reference/errors/not_a_constructor/index.html95
-rw-r--r--files/ja/web/javascript/reference/errors/not_a_function/index.html122
-rw-r--r--files/ja/web/javascript/reference/errors/not_defined/index.html72
-rw-r--r--files/ja/web/javascript/reference/errors/precision_range/index.html96
-rw-r--r--files/ja/web/javascript/reference/errors/property_access_denied/index.html51
-rw-r--r--files/ja/web/javascript/reference/errors/read-only/index.html81
-rw-r--r--files/ja/web/javascript/reference/errors/redeclared_parameter/index.html61
-rw-r--r--files/ja/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html88
-rw-r--r--files/ja/web/javascript/reference/errors/reserved_identifier/index.html80
-rw-r--r--files/ja/web/javascript/reference/errors/resulting_string_too_large/index.html49
-rw-r--r--files/ja/web/javascript/reference/errors/stmt_after_return/index.html81
-rw-r--r--files/ja/web/javascript/reference/errors/strict_non_simple_params/index.html111
-rw-r--r--files/ja/web/javascript/reference/errors/too_much_recursion/index.html119
-rw-r--r--files/ja/web/javascript/reference/errors/typed_array_invalid_arguments/index.html77
-rw-r--r--files/ja/web/javascript/reference/errors/undeclared_var/index.html67
-rw-r--r--files/ja/web/javascript/reference/errors/undefined_prop/index.html59
-rw-r--r--files/ja/web/javascript/reference/errors/unexpected_token/index.html81
-rw-r--r--files/ja/web/javascript/reference/errors/unexpected_type/index.html77
-rw-r--r--files/ja/web/javascript/reference/errors/unnamed_function_statement/index.html115
-rw-r--r--files/ja/web/javascript/reference/errors/unterminated_string_literal/index.html67
-rw-r--r--files/ja/web/javascript/reference/errors/var_hides_argument/index.html56
-rw-r--r--files/ja/web/javascript/reference/functions/arguments/@@iterator/index.html63
-rw-r--r--files/ja/web/javascript/reference/functions/arguments/callee/index.html158
-rw-r--r--files/ja/web/javascript/reference/functions/arguments/caller/index.html56
-rw-r--r--files/ja/web/javascript/reference/functions/arguments/index.html227
-rw-r--r--files/ja/web/javascript/reference/functions/arguments/length/index.html124
-rw-r--r--files/ja/web/javascript/reference/functions/arrow_functions/index.html405
-rw-r--r--files/ja/web/javascript/reference/functions/default_parameters/index.html225
-rw-r--r--files/ja/web/javascript/reference/functions/get/index.html176
-rw-r--r--files/ja/web/javascript/reference/functions/index.html575
-rw-r--r--files/ja/web/javascript/reference/functions/method_definitions/index.html218
-rw-r--r--files/ja/web/javascript/reference/functions/rest_parameters/index.html215
-rw-r--r--files/ja/web/javascript/reference/functions/set/index.html146
-rw-r--r--files/ja/web/javascript/reference/global_objects/aggregateerror/aggregateerror/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/aggregateerror/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/@@iterator/index.html126
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/@@species/index.html73
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/@@unscopables/index.html78
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/array/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/concat/index.html141
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/copywithin/index.html181
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/entries/index.html89
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/every/index.html243
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/fill/index.html147
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/filter/index.html287
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/find/index.html236
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/findindex/index.html191
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/flat/index.html177
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/flatmap/index.html148
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/foreach/index.html370
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/from/index.html307
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/includes/index.html137
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/index.html465
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/index/index.html22
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/indexof/index.html215
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/input/index.html25
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/isarray/index.html120
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/join/index.html96
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/keys/index.html70
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/lastindexof/index.html148
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/length/index.html125
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/map/index.html366
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/observe/index.html89
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/of/index.html107
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/pop/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/prototype/index.html176
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/push/index.html126
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/reduce/index.html592
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/reduceright/index.html353
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/reverse/index.html91
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/shift/index.html98
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/slice/index.html154
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/some/index.html197
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/sort/index.html256
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/splice/index.html160
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/tolocalestring/index.html179
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/tosource/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/tostring/index.html73
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/unobserve/index.html134
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/unshift/index.html108
-rw-r--r--files/ja/web/javascript/reference/global_objects/array/values/index.html122
-rw-r--r--files/ja/web/javascript/reference/global_objects/arraybuffer/@@species/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/arraybuffer/arraybuffer/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/arraybuffer/bytelength/index.html56
-rw-r--r--files/ja/web/javascript/reference/global_objects/arraybuffer/index.html89
-rw-r--r--files/ja/web/javascript/reference/global_objects/arraybuffer/isview/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/arraybuffer/slice/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/arraybuffer/transfer/index.html126
-rw-r--r--files/ja/web/javascript/reference/global_objects/asyncfunction/index.html104
-rw-r--r--files/ja/web/javascript/reference/global_objects/asyncfunction/prototype/index.html109
-rw-r--r--files/ja/web/javascript/reference/global_objects/atomics/add/index.html85
-rw-r--r--files/ja/web/javascript/reference/global_objects/atomics/and/index.html131
-rw-r--r--files/ja/web/javascript/reference/global_objects/atomics/compareexchange/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/atomics/exchange/index.html85
-rw-r--r--files/ja/web/javascript/reference/global_objects/atomics/index.html145
-rw-r--r--files/ja/web/javascript/reference/global_objects/atomics/load/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/atomics/or/index.html128
-rw-r--r--files/ja/web/javascript/reference/global_objects/atomics/store/index.html84
-rw-r--r--files/ja/web/javascript/reference/global_objects/atomics/sub/index.html84
-rw-r--r--files/ja/web/javascript/reference/global_objects/atomics/wait/index.html97
-rw-r--r--files/ja/web/javascript/reference/global_objects/atomics/wake/index.html142
-rw-r--r--files/ja/web/javascript/reference/global_objects/bigint/asintn/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/bigint/asuintn/index.html79
-rw-r--r--files/ja/web/javascript/reference/global_objects/bigint/bigint/index.html65
-rw-r--r--files/ja/web/javascript/reference/global_objects/bigint/index.html296
-rw-r--r--files/ja/web/javascript/reference/global_objects/bigint/tostring/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/bigint64array/bigint64array/index.html94
-rw-r--r--files/ja/web/javascript/reference/global_objects/bigint64array/index.html170
-rw-r--r--files/ja/web/javascript/reference/global_objects/biguint64array/biguint64array/index.html96
-rw-r--r--files/ja/web/javascript/reference/global_objects/biguint64array/index.html170
-rw-r--r--files/ja/web/javascript/reference/global_objects/boolean/boolean/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/boolean/index.html125
-rw-r--r--files/ja/web/javascript/reference/global_objects/boolean/tosource/index.html56
-rw-r--r--files/ja/web/javascript/reference/global_objects/boolean/tostring/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/boolean/valueof/index.html85
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/buffer/index.html60
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/bytelength/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/byteoffset/index.html63
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/dataview/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/getfloat32/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/getfloat64/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/getint16/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/getint32/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/getint8/index.html81
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/getuint16/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/getuint32/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/getuint8/index.html81
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/index.html164
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/setfloat32/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/setfloat64/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/setint16/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/setint32/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/setint8/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/setuint16/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/setuint32/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/dataview/setuint8/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/@@toprimitive/index.html75
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/date/index.html135
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getdate/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getday/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getfullyear/index.html71
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/gethours/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getmilliseconds/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getminutes/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getmonth/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getseconds/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/gettime/index.html110
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html98
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getutcdate/index.html65
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getutcday/index.html65
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getutcfullyear/index.html68
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getutchours/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getutcminutes/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getutcmonth/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getutcseconds/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/getyear/index.html108
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/index.html263
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/now/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/parse/index.html199
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setdate/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setfullyear/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/sethours/index.html85
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setmilliseconds/index.html73
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setminutes/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setmonth/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setseconds/index.html81
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/settime/index.html74
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setutcdate/index.html73
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setutcfullyear/index.html79
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setutchours/index.html81
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html73
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setutcminutes/index.html79
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setutcmonth/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setutcseconds/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/setyear/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/todatestring/index.html84
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/togmtstring/index.html68
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/toisostring/index.html96
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/tojson/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/tolocaledatestring/index.html159
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/tolocalestring/index.html180
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/tolocaletimestring/index.html155
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/tosource/index.html50
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/tostring/index.html113
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/totimestring/index.html71
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/toutcstring/index.html110
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/utc/index.html124
-rw-r--r--files/ja/web/javascript/reference/global_objects/date/valueof/index.html68
-rw-r--r--files/ja/web/javascript/reference/global_objects/decodeuri/index.html92
-rw-r--r--files/ja/web/javascript/reference/global_objects/decodeuricomponent/index.html98
-rw-r--r--files/ja/web/javascript/reference/global_objects/encodeuri/index.html122
-rw-r--r--files/ja/web/javascript/reference/global_objects/encodeuricomponent/index.html154
-rw-r--r--files/ja/web/javascript/reference/global_objects/error/columnnumber/index.html42
-rw-r--r--files/ja/web/javascript/reference/global_objects/error/error/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/error/filename/index.html46
-rw-r--r--files/ja/web/javascript/reference/global_objects/error/index.html220
-rw-r--r--files/ja/web/javascript/reference/global_objects/error/linenumber/index.html53
-rw-r--r--files/ja/web/javascript/reference/global_objects/error/message/index.html56
-rw-r--r--files/ja/web/javascript/reference/global_objects/error/name/index.html55
-rw-r--r--files/ja/web/javascript/reference/global_objects/error/stack/index.html125
-rw-r--r--files/ja/web/javascript/reference/global_objects/error/tosource/index.html58
-rw-r--r--files/ja/web/javascript/reference/global_objects/error/tostring/index.html100
-rw-r--r--files/ja/web/javascript/reference/global_objects/escape/index.html87
-rw-r--r--files/ja/web/javascript/reference/global_objects/eval/index.html307
-rw-r--r--files/ja/web/javascript/reference/global_objects/evalerror/evalerror/index.html76
-rw-r--r--files/ja/web/javascript/reference/global_objects/evalerror/index.html87
-rw-r--r--files/ja/web/javascript/reference/global_objects/finalizationregistry/cleanupsome/index.html74
-rw-r--r--files/ja/web/javascript/reference/global_objects/finalizationregistry/finalizationregistry/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/finalizationregistry/index.html152
-rw-r--r--files/ja/web/javascript/reference/global_objects/finalizationregistry/register/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/finalizationregistry/unregister/index.html134
-rw-r--r--files/ja/web/javascript/reference/global_objects/float32array/float32array/index.html105
-rw-r--r--files/ja/web/javascript/reference/global_objects/float32array/index.html197
-rw-r--r--files/ja/web/javascript/reference/global_objects/float64array/float64array/index.html105
-rw-r--r--files/ja/web/javascript/reference/global_objects/float64array/index.html197
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/apply/index.html241
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/arguments/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/bind/index.html350
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/call/index.html181
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/caller/index.html84
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/displayname/index.html90
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/function/index.html91
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/index.html114
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/length/index.html76
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/name/index.html233
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/tosource/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/function/tostring/index.html216
-rw-r--r--files/ja/web/javascript/reference/global_objects/generator/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/generator/next/index.html137
-rw-r--r--files/ja/web/javascript/reference/global_objects/generator/return/index.html97
-rw-r--r--files/ja/web/javascript/reference/global_objects/generator/throw/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/generatorfunction/index.html94
-rw-r--r--files/ja/web/javascript/reference/global_objects/globalthis/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/index.html210
-rw-r--r--files/ja/web/javascript/reference/global_objects/infinity/index.html70
-rw-r--r--files/ja/web/javascript/reference/global_objects/int16array/index.html167
-rw-r--r--files/ja/web/javascript/reference/global_objects/int16array/int16array/index.html103
-rw-r--r--files/ja/web/javascript/reference/global_objects/int32array/index.html167
-rw-r--r--files/ja/web/javascript/reference/global_objects/int32array/int32array/index.html103
-rw-r--r--files/ja/web/javascript/reference/global_objects/int8array/index.html168
-rw-r--r--files/ja/web/javascript/reference/global_objects/int8array/int8array/index.html103
-rw-r--r--files/ja/web/javascript/reference/global_objects/internalerror/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/internalerror/internalerror/index.html53
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/collator/collator/index.html112
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/collator/compare/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/collator/index.html109
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.html87
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.html85
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/datetimeformat/datetimeformat/index.html191
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/datetimeformat/format/index.html113
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formatrange/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formatrangetoparts/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.html241
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/datetimeformat/index.html195
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/datetimeformat/prototype/index.html87
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.html128
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/displaynames/index.html154
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/getcanonicallocales/index.html74
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/index.html133
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/listformat/index.html104
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/basename/index.html75
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/calendar/index.html159
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/casefirst/index.html92
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/collation/index.html166
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/hourcycle/index.html96
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/index.html104
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/language/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/locale/index.html61
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/maximize/index.html79
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/minimize/index.html78
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/numberingsystem/index.html419
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/numeric/index.html65
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/region/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/script/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/locale/tostring/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/numberformat/format/index.html89
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/numberformat/formattoparts/index.html151
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/numberformat/index.html148
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/numberformat/numberformat/index.html257
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.html139
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.html84
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/pluralrules/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/pluralrules/select/index.html84
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/pluralrules/supportedlocalesof/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/format/index.html109
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/formattoparts/index.html91
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/index.html112
-rw-r--r--files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/relativetimeformat/index.html122
-rw-r--r--files/ja/web/javascript/reference/global_objects/isfinite/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/isnan/index.html115
-rw-r--r--files/ja/web/javascript/reference/global_objects/iterator/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/json/index.html161
-rw-r--r--files/ja/web/javascript/reference/global_objects/json/parse/index.html219
-rw-r--r--files/ja/web/javascript/reference/global_objects/json/stringify/index.html364
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/@@iterator/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/@@species/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/@@tostringtag/index.html60
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/clear/index.html72
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/delete/index.html75
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/entries/index.html71
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/foreach/index.html107
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/get/index.html72
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/has/index.html72
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/index.html369
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/keys/index.html71
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/map/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/set/index.html87
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/size/index.html60
-rw-r--r--files/ja/web/javascript/reference/global_objects/map/values/index.html70
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/abs/index.html87
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/acos/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/acosh/index.html91
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/asin/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/asinh/index.html98
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/atan/index.html89
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/atan2/index.html96
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/atanh/index.html92
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/cbrt/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/ceil/index.html155
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/clz32/index.html181
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/cos/index.html85
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/cosh/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/e/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/exp/index.html78
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/expm1/index.html87
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/floor/index.html139
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/fround/index.html127
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/hypot/index.html127
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/imul/index.html111
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/index.html188
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/ln10/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/ln2/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/log/index.html98
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/log10/index.html94
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/log10e/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/log1p/index.html104
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/log2/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/log2e/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/max/index.html100
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/min/index.html102
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/pi/index.html65
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/pow/index.html97
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/random/index.html101
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/round/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/sign/index.html113
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/sin/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/sinh/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/sqrt/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/sqrt1_2/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/sqrt2/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/tan/index.html85
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/tanh/index.html87
-rw-r--r--files/ja/web/javascript/reference/global_objects/math/trunc/index.html120
-rw-r--r--files/ja/web/javascript/reference/global_objects/nan/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/null/index.html76
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/epsilon/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/index.html183
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/isfinite/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/isinteger/index.html97
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/isnan/index.html100
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/issafeinteger/index.html97
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/max_safe_integer/index.html81
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/max_value/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/min_safe_integer/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/min_value/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/nan/index.html63
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/negative_infinity/index.html84
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/number/index.html62
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/parsefloat/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/parseint/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/positive_infinity/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/toexponential/index.html91
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/tofixed/index.html97
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/tolocalestring/index.html191
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/toprecision/index.html92
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/tosource/index.html39
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/tostring/index.html99
-rw-r--r--files/ja/web/javascript/reference/global_objects/number/valueof/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/__definegetter__/index.html100
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/__definesetter__/index.html115
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/__lookupgetter__/index.html90
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/__lookupsetter__/index.html90
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/assign/index.html278
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/constructor/index.html257
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/count/index.html44
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/create/index.html404
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/defineproperties/index.html182
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/defineproperty/index.html499
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/entries/index.html155
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/freeze/index.html245
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/fromentries/index.html108
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html149
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html110
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/getownpropertynames/index.html157
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/getprototypeof/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/hasownproperty/index.html146
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/index.html287
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/is/index.html125
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/isextensible/index.html103
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/isfrozen/index.html167
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/isprototypeof/index.html113
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/issealed/index.html130
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/keys/index.html161
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/object/index.html84
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/preventextensions/index.html129
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/propertyisenumerable/index.html135
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/proto/index.html131
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/seal/index.html136
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/setprototypeof/index.html213
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/tolocalestring/index.html112
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/tosource/index.html131
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/tostring/index.html169
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/valueof/index.html120
-rw-r--r--files/ja/web/javascript/reference/global_objects/object/values/index.html98
-rw-r--r--files/ja/web/javascript/reference/global_objects/parallelarray/index.html59
-rw-r--r--files/ja/web/javascript/reference/global_objects/parsefloat/index.html112
-rw-r--r--files/ja/web/javascript/reference/global_objects/parseint/index.html226
-rw-r--r--files/ja/web/javascript/reference/global_objects/promise/all/index.html236
-rw-r--r--files/ja/web/javascript/reference/global_objects/promise/allsettled/index.html100
-rw-r--r--files/ja/web/javascript/reference/global_objects/promise/any/index.html154
-rw-r--r--files/ja/web/javascript/reference/global_objects/promise/catch/index.html190
-rw-r--r--files/ja/web/javascript/reference/global_objects/promise/finally/index.html109
-rw-r--r--files/ja/web/javascript/reference/global_objects/promise/index.html367
-rw-r--r--files/ja/web/javascript/reference/global_objects/promise/promise/index.html109
-rw-r--r--files/ja/web/javascript/reference/global_objects/promise/race/index.html182
-rw-r--r--files/ja/web/javascript/reference/global_objects/promise/reject/index.html74
-rw-r--r--files/ja/web/javascript/reference/global_objects/promise/resolve/index.html139
-rw-r--r--files/ja/web/javascript/reference/global_objects/promise/then/index.html300
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/index.html453
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/apply/index.html112
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/construct/index.html134
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/defineproperty/index.html140
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/deleteproperty/index.html126
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/get/index.html132
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html128
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/getprototypeof/index.html148
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/has/index.html127
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/index.html124
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/isextensible/index.html119
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/ownkeys/index.html133
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/preventextensions/index.html121
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/set/index.html131
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/proxy/setprototypeof/index.html133
-rw-r--r--files/ja/web/javascript/reference/global_objects/proxy/revocable/index.html91
-rw-r--r--files/ja/web/javascript/reference/global_objects/rangeerror/index.html130
-rw-r--r--files/ja/web/javascript/reference/global_objects/rangeerror/rangeerror/index.html108
-rw-r--r--files/ja/web/javascript/reference/global_objects/referenceerror/index.html99
-rw-r--r--files/ja/web/javascript/reference/global_objects/referenceerror/referenceerror/index.html89
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/apply/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/comparing_reflect_and_object_methods/index.html100
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/construct/index.html148
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/defineproperty/index.html100
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/deleteproperty/index.html100
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/get/index.html97
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/getownpropertydescriptor/index.html96
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/getprototypeof/index.html97
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/has/index.html99
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/index.html84
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/isextensible/index.html104
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/ownkeys/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/preventextensions/index.html96
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/set/index.html101
-rw-r--r--files/ja/web/javascript/reference/global_objects/reflect/setprototypeof/index.html90
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/@@match/index.html116
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/@@matchall/index.html112
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/@@replace/index.html120
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/@@search/index.html113
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/@@species/index.html70
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/@@split/index.html111
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/compile/index.html85
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/dotall/index.html87
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/exec/index.html198
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/flags/index.html73
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/global/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/ignorecase/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/index.html261
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/input/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/lastindex/index.html89
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/lastmatch/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/lastparen/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/leftcontext/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/multiline/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/n/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/regexp/index.html114
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/rightcontext/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/source/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/sticky/index.html96
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/test/index.html130
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/tosource/index.html59
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/tostring/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/regexp/unicode/index.html71
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/@@iterator/index.html85
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/@@species/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/add/index.html76
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/clear/index.html72
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/delete/index.html91
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/entries/index.html71
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/foreach/index.html110
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/has/index.html85
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/index.html283
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/set/index.html76
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/size/index.html61
-rw-r--r--files/ja/web/javascript/reference/global_objects/set/values/index.html73
-rw-r--r--files/ja/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.html55
-rw-r--r--files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html135
-rw-r--r--files/ja/web/javascript/reference/global_objects/sharedarraybuffer/sharedarraybuffer/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/stopiteration/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/@@iterator/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/anchor/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/big/index.html78
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/blink/index.html74
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/bold/index.html70
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/charat/index.html244
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/charcodeat/index.html164
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/codepointat/index.html146
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/concat/index.html93
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/endswith/index.html94
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/fixed/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/fontcolor/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/fontsize/index.html85
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/fromcharcode/index.html98
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/fromcodepoint/index.html149
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/includes/index.html123
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/index.html384
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/indexof/index.html169
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/italics/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/lastindexof/index.html110
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/length/index.html103
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/link/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/localecompare/index.html170
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/match/index.html188
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/matchall/index.html145
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/normalize/index.html229
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/padend/index.html71
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/padstart/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/quote/index.html75
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/raw/index.html118
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/repeat/index.html128
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/replace/index.html296
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/search/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/slice/index.html120
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/small/index.html74
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/split/index.html226
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/startswith/index.html98
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/strike/index.html70
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/string/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/sub/index.html70
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/substr/index.html120
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/substring/index.html182
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/sup/index.html71
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/tolocalelowercase/index.html92
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html96
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/tolowercase/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/tosource/index.html54
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/tostring/index.html65
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/touppercase/index.html90
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/trim/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/trimend/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/trimstart/index.html116
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/valueof/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/asynciterator/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/description/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/for/index.html107
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/hasinstance/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/index.html204
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html98
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/iterator/index.html112
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/keyfor/index.html74
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/match/index.html70
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/matchall/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/replace/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/search/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/species/index.html68
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/split/index.html65
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/symbol/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/toprimitive/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/tosource/index.html57
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/tostring/index.html76
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/tostringtag/index.html100
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/unscopables/index.html90
-rw-r--r--files/ja/web/javascript/reference/global_objects/symbol/valueof/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/syntaxerror/index.html99
-rw-r--r--files/ja/web/javascript/reference/global_objects/syntaxerror/syntaxerror/index.html89
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/@@iterator/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/@@species/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/buffer/index.html59
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/bytelength/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/byteoffset/index.html59
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/bytes_per_element/index.html65
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/copywithin/index.html81
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/entries/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/every/index.html105
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/fill/index.html96
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/filter/index.html105
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/find/index.html109
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/findindex/index.html149
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/foreach/index.html110
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/from/index.html188
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/includes/index.html81
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/index.html313
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/indexof/index.html81
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/join/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/keys/index.html88
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/lastindexof/index.html82
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/length/index.html66
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/map/index.html115
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/name/index.html65
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/of/index.html101
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/reduce/index.html99
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/reduceright/index.html98
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/reverse/index.html65
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/set/index.html81
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/slice/index.html103
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/some/index.html119
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/sort/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/subarray/index.html86
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/tolocalestring/index.html78
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/tostring/index.html73
-rw-r--r--files/ja/web/javascript/reference/global_objects/typedarray/values/index.html121
-rw-r--r--files/ja/web/javascript/reference/global_objects/typeerror/index.html107
-rw-r--r--files/ja/web/javascript/reference/global_objects/typeerror/typeerror/index.html89
-rw-r--r--files/ja/web/javascript/reference/global_objects/uint16array/index.html168
-rw-r--r--files/ja/web/javascript/reference/global_objects/uint16array/uint16array/index.html105
-rw-r--r--files/ja/web/javascript/reference/global_objects/uint32array/index.html167
-rw-r--r--files/ja/web/javascript/reference/global_objects/uint32array/uint32array/index.html103
-rw-r--r--files/ja/web/javascript/reference/global_objects/uint8array/index.html168
-rw-r--r--files/ja/web/javascript/reference/global_objects/uint8array/uint8array/index.html103
-rw-r--r--files/ja/web/javascript/reference/global_objects/uint8clampedarray/index.html169
-rw-r--r--files/ja/web/javascript/reference/global_objects/uint8clampedarray/uint8clampedarray/index.html105
-rw-r--r--files/ja/web/javascript/reference/global_objects/undefined/index.html143
-rw-r--r--files/ja/web/javascript/reference/global_objects/unescape/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/uneval/index.html74
-rw-r--r--files/ja/web/javascript/reference/global_objects/urierror/index.html103
-rw-r--r--files/ja/web/javascript/reference/global_objects/urierror/urierror/index.html93
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakmap/clear/index.html99
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakmap/delete/index.html72
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakmap/get/index.html73
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakmap/has/index.html76
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakmap/index.html144
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakmap/set/index.html78
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakmap/weakmap/index.html90
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakref/index.html149
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakref/weakref/index.html67
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakset/add/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakset/clear/index.html95
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakset/delete/index.html76
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakset/has/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakset/index.html133
-rw-r--r--files/ja/web/javascript/reference/global_objects/weakset/weakset/index.html71
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/compile/index.html97
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/compileerror/index.html110
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/global/index.html118
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/index.html116
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/instance/exports/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/instance/index.html69
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/instance/instance/index.html64
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/instance/prototype/index.html63
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/instantiate/index.html171
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/instantiatestreaming/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/linkerror/index.html107
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.html62
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.html80
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/memory/index.html91
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.html94
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/memory/prototype/index.html70
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/module/customsections/index.html144
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/module/exports/index.html109
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/module/imports/index.html83
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/module/index.html97
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/runtimeerror/index.html107
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/table/get/index.html79
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/table/grow/index.html79
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/table/index.html126
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/table/length/index.html63
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/table/prototype/index.html74
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.html101
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/table/table/index.html100
-rw-r--r--files/ja/web/javascript/reference/global_objects/webassembly/validate/index.html71
-rw-r--r--files/ja/web/javascript/reference/index.html433
-rw-r--r--files/ja/web/javascript/reference/iteration_protocols/index.html394
-rw-r--r--files/ja/web/javascript/reference/lexical_grammar/index.html659
-rw-r--r--files/ja/web/javascript/reference/operators/addition/index.html82
-rw-r--r--files/ja/web/javascript/reference/operators/addition_assignment/index.html78
-rw-r--r--files/ja/web/javascript/reference/operators/array_comprehensions/index.html198
-rw-r--r--files/ja/web/javascript/reference/operators/assignment/index.html62
-rw-r--r--files/ja/web/javascript/reference/operators/async_function/index.html151
-rw-r--r--files/ja/web/javascript/reference/operators/await/index.html139
-rw-r--r--files/ja/web/javascript/reference/operators/bitwise_and/index.html114
-rw-r--r--files/ja/web/javascript/reference/operators/bitwise_and_assignment/index.html64
-rw-r--r--files/ja/web/javascript/reference/operators/bitwise_not/index.html102
-rw-r--r--files/ja/web/javascript/reference/operators/bitwise_or/index.html116
-rw-r--r--files/ja/web/javascript/reference/operators/bitwise_or_assignment/index.html66
-rw-r--r--files/ja/web/javascript/reference/operators/bitwise_xor/index.html116
-rw-r--r--files/ja/web/javascript/reference/operators/bitwise_xor_assignment/index.html71
-rw-r--r--files/ja/web/javascript/reference/operators/class/index.html116
-rw-r--r--files/ja/web/javascript/reference/operators/comma_operator/index.html94
-rw-r--r--files/ja/web/javascript/reference/operators/comparison_operators/index.html231
-rw-r--r--files/ja/web/javascript/reference/operators/conditional_operator/index.html115
-rw-r--r--files/ja/web/javascript/reference/operators/decrement/index.html83
-rw-r--r--files/ja/web/javascript/reference/operators/delete/index.html296
-rw-r--r--files/ja/web/javascript/reference/operators/destructuring_assignment/index.html444
-rw-r--r--files/ja/web/javascript/reference/operators/division/index.html76
-rw-r--r--files/ja/web/javascript/reference/operators/division_assignment/index.html63
-rw-r--r--files/ja/web/javascript/reference/operators/equality/index.html128
-rw-r--r--files/ja/web/javascript/reference/operators/exponentiation/index.html103
-rw-r--r--files/ja/web/javascript/reference/operators/exponentiation_assignment/index.html61
-rw-r--r--files/ja/web/javascript/reference/operators/expression_closures/index.html76
-rw-r--r--files/ja/web/javascript/reference/operators/function/index.html145
-rw-r--r--files/ja/web/javascript/reference/operators/function_star_/index.html88
-rw-r--r--files/ja/web/javascript/reference/operators/generator_comprehensions/index.html172
-rw-r--r--files/ja/web/javascript/reference/operators/greater_than/index.html100
-rw-r--r--files/ja/web/javascript/reference/operators/greater_than_or_equal/index.html100
-rw-r--r--files/ja/web/javascript/reference/operators/grouping/index.html78
-rw-r--r--files/ja/web/javascript/reference/operators/in/index.html141
-rw-r--r--files/ja/web/javascript/reference/operators/increment/index.html81
-rw-r--r--files/ja/web/javascript/reference/operators/index.html299
-rw-r--r--files/ja/web/javascript/reference/operators/inequality/index.html98
-rw-r--r--files/ja/web/javascript/reference/operators/instanceof/index.html175
-rw-r--r--files/ja/web/javascript/reference/operators/left_shift/index.html77
-rw-r--r--files/ja/web/javascript/reference/operators/left_shift_assignment/index.html61
-rw-r--r--files/ja/web/javascript/reference/operators/less_than/index.html115
-rw-r--r--files/ja/web/javascript/reference/operators/less_than_or_equal/index.html104
-rw-r--r--files/ja/web/javascript/reference/operators/logical_and/index.html146
-rw-r--r--files/ja/web/javascript/reference/operators/logical_and_assignment/index.html89
-rw-r--r--files/ja/web/javascript/reference/operators/logical_not/index.html109
-rw-r--r--files/ja/web/javascript/reference/operators/logical_nullish_assignment/index.html89
-rw-r--r--files/ja/web/javascript/reference/operators/logical_operators/index.html294
-rw-r--r--files/ja/web/javascript/reference/operators/logical_or/index.html155
-rw-r--r--files/ja/web/javascript/reference/operators/logical_or_assignment/index.html93
-rw-r--r--files/ja/web/javascript/reference/operators/multiplication/index.html74
-rw-r--r--files/ja/web/javascript/reference/operators/multiplication_assignment/index.html61
-rw-r--r--files/ja/web/javascript/reference/operators/new.target/index.html113
-rw-r--r--files/ja/web/javascript/reference/operators/new/index.html181
-rw-r--r--files/ja/web/javascript/reference/operators/nullish_coalescing_operator/index.html155
-rw-r--r--files/ja/web/javascript/reference/operators/object_initializer/index.html311
-rw-r--r--files/ja/web/javascript/reference/operators/operator_precedence/index.html483
-rw-r--r--files/ja/web/javascript/reference/operators/optional_chaining/index.html203
-rw-r--r--files/ja/web/javascript/reference/operators/pipeline_operator/index.html87
-rw-r--r--files/ja/web/javascript/reference/operators/property_accessors/index.html155
-rw-r--r--files/ja/web/javascript/reference/operators/remainder/index.html78
-rw-r--r--files/ja/web/javascript/reference/operators/remainder_assignment/index.html62
-rw-r--r--files/ja/web/javascript/reference/operators/right_shift/index.html79
-rw-r--r--files/ja/web/javascript/reference/operators/right_shift_assignment/index.html61
-rw-r--r--files/ja/web/javascript/reference/operators/special/index.html5
-rw-r--r--files/ja/web/javascript/reference/operators/special_operators/index.html5
-rw-r--r--files/ja/web/javascript/reference/operators/spread_syntax/index.html258
-rw-r--r--files/ja/web/javascript/reference/operators/strict_equality/index.html108
-rw-r--r--files/ja/web/javascript/reference/operators/strict_inequality/index.html102
-rw-r--r--files/ja/web/javascript/reference/operators/subtraction/index.html68
-rw-r--r--files/ja/web/javascript/reference/operators/subtraction_assignment/index.html61
-rw-r--r--files/ja/web/javascript/reference/operators/super/index.html176
-rw-r--r--files/ja/web/javascript/reference/operators/this/index.html488
-rw-r--r--files/ja/web/javascript/reference/operators/typeof/index.html288
-rw-r--r--files/ja/web/javascript/reference/operators/unary_negation/index.html80
-rw-r--r--files/ja/web/javascript/reference/operators/unary_plus/index.html80
-rw-r--r--files/ja/web/javascript/reference/operators/unsigned_right_shift/index.html79
-rw-r--r--files/ja/web/javascript/reference/operators/unsigned_right_shift_assignment/index.html61
-rw-r--r--files/ja/web/javascript/reference/operators/void/index.html150
-rw-r--r--files/ja/web/javascript/reference/operators/yield/index.html106
-rw-r--r--files/ja/web/javascript/reference/operators/yield_star_/index.html140
-rw-r--r--files/ja/web/javascript/reference/reserved_words/index.html88
-rw-r--r--files/ja/web/javascript/reference/statements/async_function/index.html261
-rw-r--r--files/ja/web/javascript/reference/statements/block/index.html118
-rw-r--r--files/ja/web/javascript/reference/statements/break/index.html157
-rw-r--r--files/ja/web/javascript/reference/statements/class/index.html102
-rw-r--r--files/ja/web/javascript/reference/statements/const/index.html157
-rw-r--r--files/ja/web/javascript/reference/statements/continue/index.html144
-rw-r--r--files/ja/web/javascript/reference/statements/debugger/index.html59
-rw-r--r--files/ja/web/javascript/reference/statements/do...while/index.html79
-rw-r--r--files/ja/web/javascript/reference/statements/empty/index.html94
-rw-r--r--files/ja/web/javascript/reference/statements/export/index.html268
-rw-r--r--files/ja/web/javascript/reference/statements/for-await...of/index.html255
-rw-r--r--files/ja/web/javascript/reference/statements/for...in/index.html152
-rw-r--r--files/ja/web/javascript/reference/statements/for...of/index.html315
-rw-r--r--files/ja/web/javascript/reference/statements/for/index.html146
-rw-r--r--files/ja/web/javascript/reference/statements/for_each...in/index.html81
-rw-r--r--files/ja/web/javascript/reference/statements/function/index.html158
-rw-r--r--files/ja/web/javascript/reference/statements/function_star_/index.html258
-rw-r--r--files/ja/web/javascript/reference/statements/if...else/index.html152
-rw-r--r--files/ja/web/javascript/reference/statements/import.meta/index.html101
-rw-r--r--files/ja/web/javascript/reference/statements/import/index.html253
-rw-r--r--files/ja/web/javascript/reference/statements/index.html130
-rw-r--r--files/ja/web/javascript/reference/statements/label/index.html188
-rw-r--r--files/ja/web/javascript/reference/statements/let/index.html280
-rw-r--r--files/ja/web/javascript/reference/statements/return/index.html143
-rw-r--r--files/ja/web/javascript/reference/statements/switch/index.html298
-rw-r--r--files/ja/web/javascript/reference/statements/throw/index.html185
-rw-r--r--files/ja/web/javascript/reference/statements/try...catch/index.html257
-rw-r--r--files/ja/web/javascript/reference/statements/var/index.html246
-rw-r--r--files/ja/web/javascript/reference/statements/while/index.html84
-rw-r--r--files/ja/web/javascript/reference/statements/with/index.html110
-rw-r--r--files/ja/web/javascript/reference/statements/yield/index.html6
-rw-r--r--files/ja/web/javascript/reference/strict_mode/index.html368
-rw-r--r--files/ja/web/javascript/reference/strict_mode/transitioning_to_strict_mode/index.html142
-rw-r--r--files/ja/web/javascript/reference/template_literals/index.html273
-rw-r--r--files/ja/web/javascript/reference/trailing_commas/index.html172
868 files changed, 101375 insertions, 0 deletions
diff --git a/files/ja/web/javascript/reference/about/index.html b/files/ja/web/javascript/reference/about/index.html
new file mode 100644
index 0000000000..b55c9f9106
--- /dev/null
+++ b/files/ja/web/javascript/reference/about/index.html
@@ -0,0 +1,48 @@
+---
+title: このリファレンスについて
+slug: Web/JavaScript/Reference/About
+tags:
+ - JavaScript
+translation_of: Web/JavaScript/Reference/About
+---
+<p>{{jsSidebar}}</p>
+
+<p>この JavaScript リファレンスは、JavaScript 言語の情報倉庫となっています。言語全体がここで詳細に記述されています。JavaScript コードを書くとき、これらのページをよく参照 (リファレンス) することになるでしょう。JavaScript を学んだり JavaScript の能力や機能について理解する助けがほしければ、<a href="/ja/docs/Web/JavaScript/Guide">JavaScript ガイド</a>を見てみてください。</p>
+
+<h2 id="JavaScript_history" name="JavaScript_history">JavaScript の情報の所在</h2>
+
+<p>JavaScript のコア言語機能 (ほとんどの部分は純粋な <a href="/ja/docs/JavaScript/Language_Resources" title="ja/docs/ECMAScript">ECMAScript</a>) の文書としては、次のものがあります。</p>
+
+<ul>
+ <li><a href="/ja/docs/JavaScript/Guide" title="ja/docs/JavaScript/Guide">JavaScript ガイド</a></li>
+ <li><a href="/ja/docs/JavaScript/Reference" title="ja/docs/JavaScript/Reference">JavaScript リファレンス</a></li>
+</ul>
+
+<p>初めて JavaScript に触れる方は、<a href="/ja/docs/JavaScript/Guide" title="ja/docs/JavaScript/Guide">ガイド</a> から読み始めましょう。基本をしっかり理解してしまえば、<a href="/ja/docs/JavaScript/Reference" title="ja/docs/JavaScript/Reference">リファレンス</a> を紐解いて、個々のオブジェクトや言語構成物について詳しい情報が得られます。</p>
+
+<h2 id="リファレンスの構造">リファレンスの構造</h2>
+
+<p>JavaScript リファレンスには、次の章が用意されています:</p>
+
+<dl>
+ <dt><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects">標準ビルトインオブジェクト</a></dt>
+ <dd>この章では、javaScript の標準ビルトインオブジェクトと、そのメソッドおよびプロパティについて説明します。</dd>
+ <dt><a href="/ja/docs/Web/JavaScript/Reference/Statements">文と宣言</a></dt>
+ <dd>JavaScript アプリケーションは、適切な構文の文からなります。1つの文でも、複数の行に渡ることもあります。複数の文でも、各文をセミコロンで挟むことで1行に収めることができます。This isn't a keyword, but a group of keywords.</dd>
+ <dt><a href="/ja/docs/Web/JavaScript/Reference/Operators">式と演算子</a></dt>
+ <dd>この章では、JavaScript 言語の演算子、式、キーワードについて説明します。</dd>
+ <dt><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope">関数と関数スコープ</a></dt>
+ <dd>JavaScript 関数についての章。</dd>
+ <dt><a href="/ja/docs/Web/JavaScript/Reference/Classes">クラス</a></dt>
+ <dd>ECMAScript 6 で導入された JavaScript クラスについての章。</dd>
+ <dt><a href="/ja/docs/Web/JavaScript/New_in_JavaScript">JavaScript の新機能</a></dt>
+ <dd>JavaScript のバージョン履歴についての章。</dd>
+</dl>
+
+<h3 id="参照ページ">参照ページ</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features">非推奨の機能、廃止された機能</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar">字句文法</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Data_structures">データ構造</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/classes/constructor/index.html b/files/ja/web/javascript/reference/classes/constructor/index.html
new file mode 100644
index 0000000000..e6fd5e6ddb
--- /dev/null
+++ b/files/ja/web/javascript/reference/classes/constructor/index.html
@@ -0,0 +1,190 @@
+---
+title: コンストラクター
+slug: Web/JavaScript/Reference/Classes/constructor
+tags:
+ - Classes
+ - ECMAScript 2015
+ - JavaScript
+ - Language feature
+translation_of: Web/JavaScript/Reference/Classes/constructor
+---
+<div>{{jsSidebar("Classes")}}</div>
+
+<p><span class="seoSummary"><code>constructor</code> メソッドは、 {{jsxref("Statements/class", "class")}} で作成されたオブジェクトの生成と初期化のための特殊なメソッドです。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/classes-constructor.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">constructor([<var>arguments</var>]) { ... }</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>コンストラクターを使用すると、インスタンス化されたオブジェクトに対して、他のメソッドを呼び出す前に行う必要のある独自の初期化を提供することができます。</p>
+
+<pre class="brush: js notranslate">class Person {
+
+ constructor(name) {
+ this.name = name;
+ }
+
+ introduce() {
+ console.log(`Hello, my name is ${this.name}`);
+ }
+
+}
+
+const otto = new Person('Otto');
+
+otto.introduce();</pre>
+
+<p>独自のコンストラクターを提供しなかった場合は、既定のコンストラクターが提供されます。クラスが基底クラスである場合、既定のコンストラクターは空です。</p>
+
+<pre class="brush: js notranslate">constructor() {}</pre>
+
+<p>クラスが派生クラスの場合、既定のコンストラクターが親コンストラクターを呼び出し、与えられた引数を渡します。</p>
+
+<pre class="brush: js notranslate">constructor(...args) {
+ super(...args);
+}</pre>
+
+<p>それがこのようなコードを動作させることができます。</p>
+
+<pre class="brush: js notranslate">class ValidationError extends Error {
+
+ printCustomerMessage() {
+ return `Validation failed :-( (details: ${this.message})`;
+ }
+
+}
+
+try {
+ throw new ValidationError("Not a valid phone number");
+} catch (error) {
+ if (error instanceof ValidationError) {
+ console.log(error.name); // This is Error instead of ValidationError!
+ console.log(error.printCustomerMessage());
+ } else {
+ console.log('Unknown error', error);
+ throw error;
+ }
+}</pre>
+
+<p><code>ValidationError</code> クラスは、独自の初期化を行う必要がないため、明示的なコンストラクターは必要ありません。既定のコンストラクターは、与えられた引数から親の <code>Error</code> の初期化を行います。</p>
+
+<p>ただし、独自のコンストラクターを提供し、クラスが親クラスから派生している場合は、 <code>super</code> を使用して親クラスのコンストラクターを明示的に呼び出す必要があります。例えば、以下のようになります。</p>
+
+<pre class="brush: js notranslate">class ValidationError extends Error {
+
+ constructor(message) {
+ super(message); // call parent class constructor
+ this.name = 'ValidationError';
+ this.code = '42';
+ }
+
+ printCustomerMessage() {
+ return `Validation failed :-( (details: ${this.message}, code: ${this.code})`;
+ }
+
+}
+
+try {
+ throw new ValidationError("Not a valid phone number");
+} catch (error) {
+ if (error instanceof ValidationError) {
+ console.log(error.name); // Now this is ValidationError!
+ console.log(error.printCustomerMessage());
+ } else {
+ console.log('Unknown error', error);
+ throw error;
+ }
+}
+
+</pre>
+
+<p>クラスには "<code>constructor</code>" という名前の特別なメソッドが 1 つだけ存在します。クラス内に複数の <code>constructor</code> メソッドが存在すると、 {{jsxref("SyntaxError")}} エラーが発生します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_constructor_method" name="Using_the_constructor_method">constructor メソッドの使用</h3>
+
+<p>このコードスニペットは、<a href="https://github.com/GoogleChrome/samples/blob/gh-pages/classes-es6/index.html">classes sample</a> (<a href="https://googlechrome.github.io/samples/classes-es6/index.html">ライブデモ</a>) から転載しています。</p>
+
+<pre class="brush: js notranslate">class Square extends Polygon {
+ constructor(length) {
+ // Here, it calls the parent class' constructor with lengths
+ // provided for the Polygon's width and height
+ super(length, length);
+ // NOTE: In derived classes, `super()` must be called before you
+ // can use `this`. Leaving this out will cause a ReferenceError.
+ this.name = 'Square';
+ }
+
+ get area() {
+ return this.height * this.width;
+ }
+
+ set area(value) {
+ this.height = value**0.5;
+ this.width = value**0.5;
+ }
+}</pre>
+
+<h3 id="Another_example" name="Another_example">他の例</h3>
+
+<p>ここでは、 <code>Square</code> クラスのプロトタイプが変更されていますが、新しいインスタンスが作成されたときには、その基底クラスである <code>Polygon</code> のコンストラクターが呼び出されます。</p>
+
+<pre class="brush: js notranslate">class Polygon {
+ constructor() {
+ this.name = "Polygon";
+ }
+}
+
+class Square extends Polygon {
+ constructor() {
+ super();
+ }
+}
+
+class Rectangle {}
+
+Object.setPrototypeOf(Square.prototype, Rectangle.prototype);
+
+console.log(Object.getPrototypeOf(Square.prototype) === Polygon.prototype); //false
+console.log(Object.getPrototypeOf(Square.prototype) === Rectangle.prototype); //true
+
+let newInstance = new Square();
+console.log(newInstance.name); //Polygon</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-static-semantics-constructormethod', 'Constructor Method')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.classes.constructor")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Operators/super", "super()")}}</li>
+ <li>{{jsxref("Statements/class", "クラス宣言", "", "true")}}</li>
+ <li>{{jsxref("Operators/class", "クラス式", "", "true")}}</li>
+ <li>{{jsxref("Classes")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor">Object.prototype.constructor</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/classes/extends/index.html b/files/ja/web/javascript/reference/classes/extends/index.html
new file mode 100644
index 0000000000..e4c31b4128
--- /dev/null
+++ b/files/ja/web/javascript/reference/classes/extends/index.html
@@ -0,0 +1,91 @@
+---
+title: extends
+slug: Web/JavaScript/Reference/Classes/extends
+tags:
+ - Classes
+ - ECMAScript 2015
+ - JavaScript
+ - Language feature
+translation_of: Web/JavaScript/Reference/Classes/extends
+---
+<div>{{jsSidebar("Classes")}}</div>
+
+<p><strong><code>extends</code></strong> キーワードは<a href="/ja/docs/Web/JavaScript/Reference/Statements/class">クラス宣言</a>や<a href="/ja/docs/Web/JavaScript/Reference/Operators/class">クラス式</a>の中で、他のクラスの子であるクラスを生成するために使用します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/classes-extends.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">class ChildClass extends ParentClass { ... }</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>extends</code> キーワードは、独自のクラスや組込みオブジェクトをサブクラス化するために使用することができます。</p>
+
+<p>拡張したものの <code>.prototype</code> は、{{jsxref("Object")}} か {{jsxref("null")}} である必要があります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_extends" name="Using_extends">extends の使用</h3>
+
+<p>最初の例では、 <code>Square</code> と呼ばれるクラスを <code>Polygon</code> と呼ばれるクラスから作成します。この例は、<a href="https://googlechrome.github.io/samples/classes-es6/index.html">ライブデモ</a> <a href="https://github.com/GoogleChrome/samples/blob/gh-pages/classes-es6/index.html">(ソース)</a> から転載しています。</p>
+
+<pre class="brush: js notranslate">class Square extends Polygon {
+ constructor(length) {
+ // ここでは、親クラスのコンストラクターを呼び出し、
+ // Polygon の幅と高さの寸法を渡します。
+ super(length, length);
+ // 注: 派生クラスでは、 'this' を使う前に super() を
+ // 呼び出さなくてはなりません。さもないと参照エラーになります。
+ this.name = 'Square';
+ }
+
+ get area() {
+ return this.height * this.width;
+ }
+}</pre>
+
+<h3 id="Using_extends_with_built-in_objects" name="Using_extends_with_built-in_objects">組込みオブジェクトでの extends の使用</h3>
+
+<p>この例では、組込みの {{jsxref("Date")}} オブジェクトを拡張します。この例は、<a href="https://googlechrome.github.io/samples/classes-es6/index.html">ライブデモ</a> <a href="https://github.com/GoogleChrome/samples/blob/gh-pages/classes-es6/index.html">(ソース)</a> から転載しています。</p>
+
+<pre class="brush: js notranslate">class myDate extends Date {
+
+ getFormattedDate() {
+ var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
+ return this.getDate() + '-' + months[this.getMonth()] + '-' + this.getFullYear();
+ }
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-class-definitions', 'extends')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.classes.extends")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Classes">クラス</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Classes/constructor">コンストラクター</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/super">super</a></li>
+ <li><a href="https://medium.com/beginners-guide-to-mobile-web-development/super-and-extends-in-javascript-es6-understanding-the-tough-parts-6120372d3420">Anurag Majumdar - Super &amp; Extends in JavaScript</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/classes/index.html b/files/ja/web/javascript/reference/classes/index.html
new file mode 100644
index 0000000000..3f711b47ed
--- /dev/null
+++ b/files/ja/web/javascript/reference/classes/index.html
@@ -0,0 +1,424 @@
+---
+title: クラス
+slug: Web/JavaScript/Reference/Classes
+tags:
+ - Classes
+ - Constructors
+ - ECMAScript 2015
+ - Guide
+ - Inheritance
+ - Intermediate
+ - JavaScript
+translation_of: Web/JavaScript/Reference/Classes
+---
+<div>{{JsSidebar("Classes")}}</div>
+
+<p>クラスはオブジェクトを作成するためのテンプレートです。それらは、そのデータを処理するためのコードでデータをカプセル化します。JS のクラスはプロトタイプに基づいて構築されていますが、ES5 のクラスライクなセマンティクスとは共有されない構文やセマンティクスも持っています。</p>
+
+<h2 id="Defining_classes" name="Defining_classes">クラスの定義</h2>
+
+<p>クラスは実際には「特別な{{jsxref("Functions", "関数", "", "true")}}」であり、{{jsxref("Operators/function", "関数式", "", "true")}}と{{jsxref("Statements/function", "関数宣言", "", "true")}}を定義することができるように、クラス構文にも{{jsxref("Operators/class", "クラス式", "", "true")}}と{{jsxref("Statements/class", "クラス宣言", "", "true")}}の 2 つの定義方法があります。</p>
+
+<h3 id="Class_declarations" name="Class_declarations">クラス宣言</h3>
+
+<p>クラスを定義するひとつの方法は、<strong>クラス宣言</strong>を使うことです。クラスを宣言するには、クラス名 (この例では "Rectangle") 付きで <code>class</code> キーワードを使います。</p>
+
+<pre class="brush: js notranslate">class Rectangle {
+ constructor(height, width) {
+ this.height = height;
+ this.width = width;
+ }
+}</pre>
+
+<h4 id="Hoisting" name="Hoisting">ホイスティング(巻き上げ)</h4>
+
+<p><strong>関数宣言</strong>と<strong>クラス宣言</strong>の重要な違いは、関数宣言では {{Glossary("Hoisting", "Hoisting")}} されるのに対し、クラス宣言ではされないことです。クラスにアクセスする前に、そのクラスを宣言する必要があります。そうしないと、{{jsxref("ReferenceError")}} が投げられます:</p>
+
+<pre class="brush: js example-bad notranslate">const p = new Rectangle(); // ReferenceError
+
+class Rectangle {}
+</pre>
+
+<h3 id="Class_expressions" name="Class_expressions">クラス式</h3>
+
+<p>クラスを定義する別の方法は<strong>クラス式</strong>です。クラス式は、名前付きでも名前なしでもできます。名前付きクラスの名前は、クラス内のローカルとして扱われます。(ただし (インスタンスのではなく) クラスの {{jsxref("Function.name", "name")}} プロパティによって取得可能)</p>
+
+<pre class="brush: js notranslate">// 名前なし
+let Rectangle = class {
+ constructor(height, width) {
+ this.height = height;
+ this.width = width;
+ }
+};
+console.log(Rectangle.name);
+// 出力: "Rectangle"
+
+// 名前つき
+let Rectangle = class Rectangle2 {
+ constructor(height, width) {
+ this.height = height;
+ this.width = width;
+ }
+};
+console.log(Rectangle.name);
+// 出力: "Rectangle2"
+</pre>
+
+<div class="note">
+<p><strong>注:</strong> クラス<strong>式</strong>にも{{anch("Class declarations", "クラス宣言")}}で言及したのと同じホイスティング問題があります。</p>
+</div>
+
+<h2 id="Class_body_and_method_definitions" name="Class_body_and_method_definitions">クラス本体とメソッド定義</h2>
+
+<p>中括弧 <code>{}</code> 内にクラス本体を記述します。クラス本体には、メソッドやコンストラクターといったクラスメンバを記述します。</p>
+
+<h3 id="Strict_mode" name="Strict_mode">Strict モード</h3>
+
+<p>クラス本体は <a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Strict_mode">Strict モード</a> で実行されます。つまり、ここで書かれたコードは、パフォーマンスを向上させるために、より厳密な構文に従います。そうでない場合はサイレントエラーが投げられます。なお、特定のキーワードは将来のバージョンの ECMAScript 用に予約されています。</p>
+
+<h3 id="Constructor" name="Constructor">コンストラクター</h3>
+
+<p>{{jsxref("Classes/constructor", "コンストラクター", "", "true")}}メソッドは、<code>class</code> で作成したオブジェクトを作成して初期化するための特別なメソッドです。"constructor" という名前の特別なメソッドは、クラスに 1 つしか定義できません。クラスに複数のコンストラクターメソッドが存在する場合、{{jsxref("SyntaxError")}} が投げられます。</p>
+
+<p>スーパークラスのコンストラクターは <code>super</code> というキーワードで呼び出せます。</p>
+
+<h3 id="Prototype_methods" name="Prototype_methods">プロトタイプメソッド</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義</a>を参照してください。</p>
+
+<pre class="brush: js notranslate">class Rectangle {
+ constructor(height, width) {
+ this.height = height;
+ this.width = width;
+ }
+ // ゲッター
+ get area() {
+ return this.calcArea();
+ }
+ // メソッド
+ calcArea() {
+ return this.height * this.width;
+ }
+}
+
+const square = new Rectangle(10, 10);
+
+console.log(square.area); // 100</pre>
+
+<h3 id="Static_methods_and_properties" name="Static_methods_and_properties">静的メソッドとプロパティ</h3>
+
+<p>{{jsxref("Classes/static", "static", "", "true")}} キーワードは、クラスの静的メソッドまたはプロパティを定義します。静的メンバー(プロパティとメソッド)は、クラスを<a href="/ja/docs/Learn/JavaScript/Objects/Object-oriented_JS#Constructors_and_object_instances">インスタンス化</a>せずに呼び出され、クラスインスタンスを介して呼び出すことは<strong>できません</strong>。静的メソッドは、アプリケーションのユーティリティ関数を作成するためによく使用されますが、静的プロパティは、キャッシュ、固定構成、またはインスタンス間で複製する必要のないその他のデータに役立ちます。</p>
+
+<pre class="brush: js notranslate">class Point {
+ constructor(x, y) {
+ this.x = x;
+ this.y = y;
+ }
+
+  static displayName = "Point";
+ static distance(a, b) {
+ const dx = a.x - b.x;
+ const dy = a.y - b.y;
+
+ return Math.hypot(dx, dy);
+ }
+}
+
+const p1 = new Point(5, 5);
+const p2 = new Point(10, 10);
+p1.displayName; // undefined
+p1.distance; // undefined
+p2.displayName; // undefined
+p2.distance; // undefined
+
+console.log(Point.displayName); // "Point"
+console.log(Point.distance(p1, p2)); // 7.0710678118654755
+</pre>
+
+<h3 id="Boxing_with_prototype_and_static_methods" name="Boxing_with_prototype_and_static_methods">プロトタイプと静的メソッドによるボクシング</h3>
+
+<p><code>this</code> に値が付けられずに静的メソッドまたはプロトタイプメソッドが呼ばれると、<code>this</code> の値はメソッド内で <code>undefined</code> になります。たとえ <code>"use strict"</code> ディレクティブがなくても同じふるまいになります。なぜなら、<code>class</code> 本体の中のコードは常に Strict モードで実行されるからです。</p>
+
+<pre class="brush: js notranslate">class Animal {
+ speak() {
+ return this;
+ }
+ static eat() {
+ return this;
+ }
+}
+
+let obj = new Animal();
+obj.speak(); // Animal {}
+let speak = obj.speak;
+speak(); // undefined
+
+Animal.eat() // class Animal
+let eat = Animal.eat;
+eat(); // undefined</pre>
+
+<p>上のコードを従来の関数ベースの構文を使って書くと、非 Strict モードでは、最初の <code>this</code> の値をもとにして、メソッド呼び出しの中で自動ボクシングが行われます。最初の値が <code>undefined</code> の場合、<code>this</code> にはグローバルオブジェクトが入ります。</p>
+
+<p>Strict モードでは自動ボクシングは行われません。<code>this</code> の値はそのまま渡されます。</p>
+
+<pre class="brush: js notranslate">function Animal() { }
+
+Animal.prototype.speak = function() {
+ return this;
+}
+
+Animal.eat = function() {
+ return this;
+}
+
+let obj = new Animal();
+let speak = obj.speak;
+speak(); // グローバルオブジェクト(非厳格モード)
+
+let eat = Animal.eat;
+eat(); // グローバルオブジェクト(非厳格モード)
+</pre>
+
+<h3 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h3>
+
+<p>インスタンスプロパティはクラスのメソッドの中で定義しなければなりません:</p>
+
+<pre class="brush: js notranslate">class Rectangle {
+ constructor(height, width) {
+ this.height = height;
+ this.width = width;
+ }
+}</pre>
+
+<p>クラスに付随する静的なプロパティやプロトタイプのプロパティは、クラス本体の宣言の外で定義しなければなりません:</p>
+
+<pre class="brush: js notranslate">Rectangle.staticWidth = 20;
+Rectangle.prototype.prototypeWidth = 25;
+</pre>
+
+<h3 id="Field_declarations" name="Field_declarations">フィールド宣言</h3>
+
+<div class="warning">
+<p>パブリックフィールドとプライベートフィールドの宣言は JavaScript 標準委員会の <a href="https://tc39.github.io/beta/">TC39</a> で提案されている<a href="https://github.com/tc39/proposal-class-fields">実験的機能(ステージ 3)</a>です。ブラウザーでのサポートは限られていますが、この機能は <a href="https://babeljs.io/">Babel</a> のようなシステムでのビルドステップを通して使用できます。</p>
+</div>
+
+<h4 id="Public_field_declarations" name="Public_field_declarations">パブリックフィールド宣言</h4>
+
+<p>JavaScript のフィールド宣言構文を使って、上記の例は次のように書くことができます。</p>
+
+<pre class="brush: js notranslate">class Rectangle {
+ height = 0;
+ width;
+ constructor(height, width) {
+ this.height = height;
+ this.width = width;
+ }
+}
+</pre>
+
+<p>フィールドを事前宣言することで、クラス定義はより自己文書化され、フィールドは常に存在するようになります。</p>
+
+<p>上記のように、フィールドはデフォルト値の有無にかかわらず宣言できます。</p>
+
+<p>詳しい情報は、{{jsxref("Classes/Public_class_fields", "パブリッククラスフィールド", "", "true")}}を参照してください。</p>
+
+<h4 id="Private_field_declarations" name="Private_field_declarations">プライベートフィールド宣言</h4>
+
+<p>プライベートフィールドを使うと、宣言は下記のように洗練できます。</p>
+
+<pre class="brush: js notranslate">class Rectangle {
+ #height = 0;
+ #width;
+ constructor(height, width) {
+ this.#height = height;
+ this.#width = width;
+ }
+}
+</pre>
+
+<p>プライベートフィールドの参照はクラス本体内でのみ可能となり、クラス外からの参照はエラーとなります。クラス外からは見えないものを定義することで、クラスのユーザーが(変更される可能性のある)内部状態に依存できないようにします。</p>
+
+<div class="note">
+<p>プライベートフィールドは、事前宣言のみ可能です。</p>
+</div>
+
+<p>プライベートフィールドは通常のプロパティとは違い、<code>this</code> への追加によって後から作成することができません。</p>
+
+<p>詳しい情報は、{{jsxref("Classes/Private_class_fields", "プライベートクラスフィールド", "", "true")}}を参照してください。</p>
+
+<h2 id="Sub_classing_with_extends" name="Sub_classing_with_extends"><code>extends</code> によるサブクラス</h2>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Classes/extends">extends</a></code> キーワードは、クラスを別クラスの子として作成するために、<em>クラス宣言</em>または<em>クラス式</em>の中で使います。</p>
+
+<pre class="brush: js notranslate">class Animal {
+ constructor(name) {
+ this.name = name;
+ }
+
+ speak() {
+ console.log(`${this.name} makes a noise.`);
+ }
+}
+
+class Dog extends Animal {
+ constructor(name) {
+ super(name); // スーパークラスのコンストラクターを呼び出し、name パラメータを渡す
+ }
+
+ speak() {
+ console.log(`${this.name} barks.`);
+ }
+}
+
+let d = new Dog('Mitzie');
+d.speak(); // Mitzie barks.
+</pre>
+
+<p>サブクラスにコンストラクターが存在する場合は、"this" を使う前に super() を呼ぶ必要があります。</p>
+
+<p>従来の関数ベースの「クラス」も拡張できます:</p>
+
+<pre class="brush: js notranslate">function Animal (name) {
+ this.name = name;
+}
+
+Animal.prototype.speak = function () {
+ console.log(`${this.name} makes a noise.`);
+}
+
+class Dog extends Animal {
+ speak() {
+ console.log(`${this.name} barks.`);
+ }
+}
+
+let d = new Dog('Mitzie');
+d.speak(); // Mitzie barks.
+
+// 同様なメソッドでは、子のメソッドが親のメソッドよりも優先されます。</pre>
+
+<p>クラスは通常の (生成不可能な) オブジェクトを拡張できないことに注意してください。通常のオブジェクトから継承したければ、代わりに {{jsxref("Object.setPrototypeOf()")}} を使います:</p>
+
+<pre class="brush: js notranslate">const Animal = {
+ speak() {
+ console.log(`${this.name} makes a noise.`);
+ }
+};
+
+class Dog {
+ constructor(name) {
+ this.name = name;
+ }
+}
+
+// このコードが無いと、speak() を実行した時に TypeError になります。
+Object.setPrototypeOf(Dog.prototype, Animal);
+
+let d = new Dog('Mitzie');
+d.speak(); // Mitzie makes a noise.
+</pre>
+
+<h2 id="Species" name="Species">Species</h2>
+
+<p>Array の派生クラスである <code>MyArray</code> の中で {{jsxref("Array")}} オブジェクトを返したいときもあるでしょう。species パターンは、デフォルトコンストラクタ-を上書きすることができます。</p>
+
+<p>例えば、デフォルトコンストラクターを返す {{jsxref("Array.map", "map()")}} のようなメソッドを使っているとき、<code>MyArray</code> ではなく <code>Array</code> オブジェクトを返したいでしょう。{{jsxref("Symbol.species")}} シンボルを使うと次のように実現できます。</p>
+
+<pre class="brush: js notranslate">class MyArray extends Array {
+ // species を親の Array コンストラクターで上書きする
+ static get [Symbol.species]() { return Array; }
+}
+
+let a = new MyArray(1,2,3);
+let mapped = a.map(x =&gt; x * x);
+
+console.log(mapped instanceof MyArray); // false
+console.log(mapped instanceof Array); // true
+</pre>
+
+<h2 id="Super_class_calls_with_super" name="Super_class_calls_with_super"><code>super</code> でスーパークラスを呼び出す</h2>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Operators/super">super</a></code> キーワードを使ってスーパークラスのメソッドを呼び出せます。これはプロトタイプベースの継承よりも優れています。</p>
+
+<pre class="brush: js notranslate">class Cat {
+ constructor(name) {
+ this.name = name;
+ }
+
+ speak() {
+ console.log(`${this.name} makes a noise.`);
+ }
+}
+
+class Lion extends Cat {
+ speak() {
+ super.speak();
+ console.log(`${this.name} roars.`);
+ }
+}
+
+let l = new Lion('Fuzzy');
+l.speak();
+// Fuzzy makes a noise.
+// Fuzzy roars.
+</pre>
+
+<h2 id="Mix-ins" name="Mix-ins">ミックスイン</h2>
+
+<p>抽象的なサブクラスや<em>ミックスイン</em>はクラスのためのテンプレートです。ECMAScript のクラスは 1 つだけスーパークラスを持つことができます。そのため、多重継承はできません。機能はスーパークラスから提供されます。</p>
+
+<p>ECMAScript では、スーパークラスをインプットとして、そしてスーパークラスを継承した派生クラスをアウトプットとする関数を mix-in で実装できます:</p>
+
+<pre class="brush: js notranslate">let calculatorMixin = Base =&gt; class extends Base {
+ calc() { }
+};
+
+let randomizerMixin = Base =&gt; class extends Base {
+ randomize() { }
+};
+</pre>
+
+<p>ミックスインを使用したクラスを次のように記述することもできます:</p>
+
+<pre class="brush: js notranslate">class Foo { }
+class Bar extends calculatorMixin(randomizerMixin(Foo)) { }</pre>
+
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.classes")}}</p>
+
+<h2 id="Re-running_a_class_definition" name="Re-running_a_class_definition">クラス定義の再実行</h2>
+
+<p>クラスを再定義することはできません。再定義しようとすると <code>SyntaxError</code> が発生します。</p>
+
+<p>Firefox のウェブコンソール(<strong>メニュー</strong> &gt; <strong>ウェブ開発</strong> &gt; <strong>ウェブコンソール</strong>)などでコードを試しているときに、同じ名前のクラス定義を 2 回実行すると、<code>SyntaxError: redeclaration of let <em>ClassName</em></code> が発生します。(この問題については {{Bug(1428672)}} でさらに詳しく説明しています。)Chrome Developer Tools で同様の操作を行うと、<code>Uncaught SyntaxError: Identifier '<em>ClassName</em>' has already been declared at &lt;anonymous&gt;:1:1</code> のようなメッセージが表示されます。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Functions", "関数", "", "true")}}</li>
+ <li>{{jsxref("Statements/class", "クラス宣言", "", "true")}}</li>
+ <li>{{jsxref("Operators/class", "クラス式", "", "true")}}</li>
+ <li>{{jsxref("Classes/Public_class_fields", "パブリッククラスフィールド", "", "true")}}</li>
+ <li>{{jsxref("Classes/Private_class_fields", "プライベートクラスフィールド
+", "", "true")}}</li>
+ <li>{{jsxref("Operators/super", "super")}}</li>
+ <li><a href="https://hacks.mozilla.org/2015/07/es6-in-depth-classes/">ブログ記事: "ES6 In Depth: Classes"</a></li>
+ <li><a href="https://github.com/tc39/proposal-class-fields">Fields and public/private class properties proposal (stage 3)</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/classes/private_class_fields/index.html b/files/ja/web/javascript/reference/classes/private_class_fields/index.html
new file mode 100644
index 0000000000..6310aa5092
--- /dev/null
+++ b/files/ja/web/javascript/reference/classes/private_class_fields/index.html
@@ -0,0 +1,207 @@
+---
+title: プライベートクラスフィールド
+slug: Web/JavaScript/Reference/Classes/Private_class_fields
+tags:
+ - Classes
+ - JavaScript
+ - Language feature
+translation_of: Web/JavaScript/Reference/Classes/Private_class_fields
+---
+<div>{{JsSidebar("Classes")}}</div>
+
+<p>クラスのプロパティはデフォルトで公開されており、クラスの外で調べたり変更したりすることができます。しかし、ハッシュ <code>#</code> 接頭辞を使ってプライベートなクラスフィールドを定義できるようにする<a href="https://github.com/tc39/proposal-class-fields">実験的な提案</a>があります。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">class ClassWithPrivateField {
+ #privateField
+}
+
+class ClassWithPrivateMethod {
+ #privateMethod() {
+ return 'hello world'
+ }
+}
+
+class ClassWithPrivateStaticField {
+ static #PRIVATE_STATIC_FIELD
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Private_static_fields" name="Private_static_fields">プライベートスタティックフィールド</h3>
+
+<p>プライベートフィールドは、クラスのコンストラクタ上でクラス宣言の内部からアクセスできます。</p>
+
+<p>静的変数は静的メソッドからのみ呼び出せるという制限はまだあります。</p>
+
+<pre class="brush: js notranslate">class ClassWithPrivateStaticField {
+ static #PRIVATE_STATIC_FIELD
+
+ static publicStaticMethod() {
+ ClassWithPrivateStaticField.#PRIVATE_STATIC_FIELD = 42
+ return ClassWithPrivateStaticField.#PRIVATE_STATIC_FIELD
+ }
+}
+
+console.assert(ClassWithPrivateStaticField.publicStaticMethod() === 42)</pre>
+
+<p>プライベートスタティックフィールドは、クラスの評価時にクラスのコンストラクタに追加されます。</p>
+
+<p>プライベートスタティックフィールドには、プライベートスタティックフィールドを定義しているクラスのみが、そのフィールドにアクセスできるという出自制限があります。</p>
+
+<p>これは、<strong><code>this</code></strong> を使用しているときに予期しない動作をする可能性があります。</p>
+
+<pre class="brush: js notranslate">class BaseClassWithPrivateStaticField {
+ static #PRIVATE_STATIC_FIELD
+
+ static basePublicStaticMethod() {
+ this.#PRIVATE_STATIC_FIELD = 42
+ return this.#PRIVATE_STATIC_FIELD
+ }
+}
+
+class SubClass extends BaseClassWithPrivateStaticField { }
+
+let error = null
+
+try {
+ SubClass.basePublicStaticMethod()
+} catch(e) { error = e}
+
+console.assert(error instanceof TypeError)
+</pre>
+
+<h3 id="Private_instance_fields" name="Private_instance_fields">プライベートインスタンスフィールド</h3>
+
+<p>プライベートインスタンスフィールドは <strong># names</strong> (<em>ハッシュネーム</em>) で宣言され、これは <code>#</code> を先頭にした識別子です。この <code>#</code> は名前の一部で、宣言やアクセスにも使われます。</p>
+
+<p>このカプセル化は言語によって強制されています。範囲外から <code>#</code> の名前を参照するのは構文エラーです。</p>
+
+<pre class="brush: js notranslate">class ClassWithPrivateField {
+ #privateField
+
+ constructor() {
+ this.#privateField = 42
+ this.#randomField = 444 // Syntax error
+ }
+}
+
+const instance = new ClassWithPrivateField()
+instance.#privateField === 42 // Syntax error
+</pre>
+
+<h3 id="Private_methods" name="Private_methods">プライベートメソッド</h3>
+
+<h4 id="Private_static_methods" name="Private_static_methods">プライベートスタティックメソッド</h4>
+
+<p>プライベートスタティックメソッドは、パブリックと同様に、クラスのインスタンスではなく、クラス自体から呼び出されます。プライベートスタティックフィールドと同様に、クラス宣言の内部からのみアクセス可能です。</p>
+
+<p>プライベートスタティックメソッドは、ジェネレーター関数、async、非同期ジェネレーター関数、などがあります</p>
+
+<pre class="brush: js notranslate">class ClassWithPrivateStaticMethod {
+ static #privateStaticMethod() {
+ return 42
+ }
+
+ static publicStaticMethod1() {
+ return ClassWithPrivateStaticMethod.#privateStaticMethod();
+ }
+
+ static publicStaticMethod2() {
+ return this.#privateStaticMethod();
+ }
+}
+
+console.assert(ClassWithPrivateStaticMethod.publicStaticMethod1() === 42);
+console.assert(ClassWithPrivateStaticMethod.publicStaticMethod2() === 42);
+</pre>
+
+<p><strong><code>this</code></strong> を使用すると、予期しない動作が発生する可能性があります。次の例では、<code>Derived.publicStaticMethod2()</code> を呼び出そうとしたときに、<code>this</code> が <code>派生</code> クラス(<code>Base</code> クラスではない)を参照しており、上で述べたのと同じ "出自制限" を示します。</p>
+
+<pre class="brush: js notranslate">class Base {
+ static #privateStaticMethod() {
+ return 42;
+ }
+ static publicStaticMethod1() {
+ return Base.#privateStaticMethod();
+ }
+ static publicStaticMethod2() {
+ return this.#privateStaticMethod();
+ }
+}
+
+class Derived extends Base {}
+
+console.log(Derived.publicStaticMethod1()); // 42
+console.log(Derived.publicStaticMethod2()); // TypeError
+</pre>
+
+<h4 id="Private_instance_methods" name="Private_instance_methods">プライベートインスタンスメソッド</h4>
+
+<p>プライベートインスタンスメソッドは、プライベートインスタンスフィールドと同様にアクセスが制限されているクラスインスタンスで利用できるメソッドです。</p>
+
+<pre class="brush: js notranslate">class ClassWithPrivateMethod {
+ #privateMethod() {
+ return 'hello world'
+ }
+
+ getPrivateMessage() {
+ return this.#privateMethod()
+ }
+}
+
+const instance = new ClassWithPrivateMethod()
+console.log(instance.getPrivateMessage())
+// expected output: "hello worl​d"</pre>
+
+<p>プライベートインスタンスメソッドは、ジェネレーター関数、async、非同期ジェネレーター関数のいずれかになります。プライベートなゲッターやセッターも可能です。</p>
+
+<pre class="brush: js notranslate">class ClassWithPrivateAccessor {
+ #message
+
+ get #decoratedMessage() {
+ return `✨${this.#message}✨`
+ }
+ set #decoratedMessage(msg) {
+ this.#message = msg
+ }
+
+ constructor() {
+ this.#decoratedMessage = 'hello world'
+ console.log(this.#decoratedMessage)
+ }
+}
+
+new ClassWithPrivateAccessor();
+// expected output: "✨hello worl​d✨"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Public and private instance fields', '#prod-FieldDefinition', 'FieldDefinition')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.classes.private_class_fields")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Classes/Public_class_fields">パブリッククラスフィールド </a></li>
+ <li><a href="https://rfrn.org/~shu/2018/05/02/the-semantics-of-all-js-class-elements.html">The Semantics of All JS Class Elements</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/classes/public_class_fields/index.html b/files/ja/web/javascript/reference/classes/public_class_fields/index.html
new file mode 100644
index 0000000000..18614027ce
--- /dev/null
+++ b/files/ja/web/javascript/reference/classes/public_class_fields/index.html
@@ -0,0 +1,267 @@
+---
+title: パブリッククラスフィールド
+slug: Web/JavaScript/Reference/Classes/Public_class_fields
+tags:
+ - Classes
+ - JavaScript
+ - Language feature
+translation_of: Web/JavaScript/Reference/Classes/Public_class_fields
+---
+<div>{{JsSidebar("Classes")}}</div>
+
+<div class="note">
+<p><strong>このページは、実験的な機能について説明しています。</strong></p>
+
+<p>パブリックフィールド宣言とプライベートフィールド宣言の両方は、JavaScript の標準化委員会である <a href="https://tc39.github.io/beta/">TC39</a> で提案された<a href="https://github.com/tc39/proposal-class-fields">実験的な機能(ステージ 3)</a>です。</p>
+
+<p>ブラウザーのサポートは限られていますが、<a href="https://babeljs.io/">Babel</a> のようなシステムではビルドステップを経て機能を利用することができます。下記の<a href="#ブラウザーの互換性">互換性情報</a>を参照してください。</p>
+</div>
+
+<p>パブリックスタティックフィールドとパブリックインスタンスフィールドは、書き込み可能、列挙可能、設定可能なプロパティです。そのため、プライベートとは異なり、プロトタイプの継承に参加します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">class ClassWithInstanceField {
+  instanceField = 'instance field'
+}
+
+class ClassWithStaticField {
+ static staticField = 'static field'
+}
+
+class ClassWithPublicInstanceMethod {
+  publicMethod() {
+    return 'hello world'
+  }
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Public_static_fields" name="Public_static_fields">パブリックスタティックフィールド</h3>
+
+<p>パブリックスタティックフィールドは、すべてのクラスインスタンスを作成するのではなく、クラスごとに一度だけフィールドが存在するようにしたい場合に役立ちます。これは、キャッシュや固定設定、その他インスタンス間で複製する必要のないデータなどに便利です。</p>
+
+<p>パブリックスタティックフィールドは、<code>static</code> キーワードを使用して宣言されます。これらは、クラスの評価時に{{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}} を使用してコンストラクタに追加され、その後はコンストラクタからアクセスします。</p>
+
+<pre class="brush: js notranslate">class ClassWithStaticField {
+  static staticField = 'static field'
+}
+
+console.log(ClassWithStaticField.staticField)
+// expected output: "static field"​
+</pre>
+
+<p>初期化子のないフィールドは <code>undefined</code> に初期化されます。</p>
+
+<pre class="brush: js notranslate">class ClassWithStaticField {
+  static staticField
+}
+
+console.assert(ClassWithStaticField.hasOwnProperty('staticField'))
+console.log(ClassWithStaticField.staticField)
+// expected output: "undefined"</pre>
+
+<p>パブリックスタティックフィールドはサブクラスを再初期化しませんが、プロトタイプチェーンを介してアクセスすることができます。</p>
+
+<pre class="brush: js notranslate">class ClassWithStaticField {
+  static baseStaticField = 'base field'
+}
+
+class SubClassWithStaticField extends ClassWithStaticField {
+  static subStaticField = 'sub class field'
+}
+
+console.log(SubClassWithStaticField.subStaticField)
+// expected output: "sub class field"
+
+console.log(SubClassWithStaticField.baseStaticField)
+// expected output: "base field"</pre>
+
+<p>フィールドを初期化する場合、<code>this</code> はクラスのコンストラクタを参照します。また、名前で参照し、スーパークラスのコンストラクタが存在する場合は <code>super</code> を使用してスーパークラスのコンストラクタを取得することもできます (存在する場合)。</p>
+
+<pre class="brush: js notranslate">class ClassWithStaticField {
+  static baseStaticField = 'base static field'
+  static anotherBaseStaticField = this.baseStaticField
+
+  static baseStaticMethod() { return 'base static method output' }
+}
+
+class SubClassWithStaticField extends ClassWithStaticField {
+  static subStaticField = super.baseStaticMethod()
+}
+
+console.log(ClassWithStaticField.anotherBaseStaticField)
+// expected output: "base static field"
+
+console.log(SubClassWithStaticField.subStaticField)
+// expected output: "base static method output"
+</pre>
+
+<h3 id="Public_instance_fields" name="Public_instance_fields">パブリックインスタンスフィールド</h3>
+
+<p>パブリックインスタンスフィールドは、作成されたクラスのすべてのインスタンスに存在します。パブリックフィールドを宣言することで、フィールドが常に存在していることを確認でき、クラスの定義がより自己文書化されます。</p>
+
+<p>パブリック インスタンスフィールドは、ベースクラスの構築時(コンストラクタ本体が実行される前)、またはサブクラスの <code>super()</code> が返された直後のいずれかに {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}} で追加されます。</p>
+
+<pre class="brush: js notranslate">class ClassWithInstanceField {
+ instanceField = 'instance field'
+}
+
+const instance = new ClassWithInstanceField()
+console.log(instance.instanceField)
+// expected output: "instance field"</pre>
+
+<p>初期化子のないフィールドは <code>undefined</code> に初期化されます。</p>
+
+<pre class="brush: js notranslate">class ClassWithInstanceField {
+  instanceField
+}
+
+const instance = new ClassWithInstanceField()
+console.assert(instance.hasOwnProperty('instanceField'))
+console.log(instance.instanceField)
+// expected output: "undefined"</pre>
+
+<p>プロパティと同様に、フィールド名を計算することができます。</p>
+
+<pre class="brush: js notranslate">const PREFIX = 'prefix'
+
+class ClassWithComputedFieldName {
+    [`${PREFIX}Field`] = 'prefixed field'
+}
+
+const instance = new ClassWithComputedFieldName()
+console.log(instance.prefixField)
+// expected output: "prefixed field"</pre>
+
+<p>フィールドを初期化する場合、<code>this</code> は構築中のクラスインスタンスを参照します。パブリックインスタンスメソッドと同じように、サブクラスにいる場合は <code>super</code> を使って superclass プロトタイプにアクセスできます。</p>
+
+<pre class="brush: js notranslate">class ClassWithInstanceField {
+  baseInstanceField = 'base field'
+  anotherBaseInstanceField = this.baseInstanceField
+  baseInstanceMethod() { return 'base method output' }
+}
+
+class SubClassWithInstanceField extends ClassWithInstanceField {
+  subInstanceField = super.baseInstanceMethod()
+}
+
+const base = new ClassWithInstanceField()
+const sub = new SubClassWithInstanceField()
+
+console.log(base.anotherBaseInstanceField)
+// expected output: "base field"
+
+console.log(sub.subInstanceField)
+// expected output: "base method output"</pre>
+
+<h3 id="Public_methods" name="Public_methods">パブリックメソッド</h3>
+
+<h4 id="Public_static_methods" name="Public_static_methods">パブリックスタティックメソッド</h4>
+
+<p><code><strong>static</strong></code> キーワードは、クラスのスタティックメソッドを定義します。スタティックメソッドは、クラスのインスタンスでは呼び出されません。代わりに、クラス自体から呼び出されます。これらは、オブジェクトを作成したり、クローンを作成したりするユーティリティ関数であることが多いです。</p>
+
+<pre class="brush: js notranslate">class ClassWithStaticMethod {
+ static staticMethod() {
+ return 'static method has been called.';
+ }
+}
+
+console.log(ClassWithStaticMethod.staticMethod());
+// expected output: "static method has been called."</pre>
+
+<p>スタティックメソッドは、クラスの評価時に {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}} を使用してクラスのコンストラクタに追加されます。これらのメソッドは書き込み可能、列挙不可、設定可能です。</p>
+
+<h4 id="Public_instance_methods" name="Public_instance_methods">パブリックインスタンスメソッド</h4>
+
+<p>パブリックインスタンスメソッドはその名の通り、クラスインスタンスで利用できるメソッドです。</p>
+
+<pre class="brush: js notranslate">class ClassWithPublicInstanceMethod {
+ publicMethod() {
+ return 'hello world'
+ }
+}
+
+const instance = new ClassWithPublicInstanceMethod()
+console.log(instance.publicMethod())
+// expected output: "hello worl​d"</pre>
+
+<p>パブリックインスタンスメソッドは、{{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}} を使用して、クラスの評価時にクラスプロトタイプに追加されます。これらのメソッドは書き込み可能、列挙不可、設定可能です。</p>
+
+<p>ジェネレーター関数、async、非同期ジェネレーター関数を利用することができます。</p>
+
+<pre class="brush: js notranslate">class ClassWithFancyMethods {
+ *generatorMethod() { }
+ async asyncMethod() { }
+ async *asyncGeneratorMethod() { }
+}</pre>
+
+<p>インスタンスメソッドの中では、<code>this</code> はインスタンス自体を指します。サブクラスでは、<code>super</code> を使用してスーパークラスのプロトタイプにアクセスし、スーパークラスからメソッドを呼び出すことができます。</p>
+
+<pre class="brush: js notranslate">class BaseClass {
+  msg = 'hello world'
+  basePublicMethod() {
+    return this.msg
+  }
+}
+
+class SubClass extends BaseClass {
+  subPublicMethod() {
+    return super.basePublicMethod()
+  }
+}
+
+const instance = new SubClass()
+console.log(instance.subPublicMethod())
+// expected output: "hello worl​d"
+</pre>
+
+<p>ゲッターとセッターは、クラスのプロパティにバインドする特別なメソッドで、そのプロパティがアクセスされたり設定されたりしたときに呼び出されます。<a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/get">get</a> および <a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/set">set</a> 構文を使用して、パブリックインスタンスのゲッターまたはセッターを宣言します。</p>
+
+<pre class="brush: js notranslate">class ClassWithGetSet {
+  #msg = 'hello world'
+  get msg() {
+    return this.#msg
+  }
+  set msg(x) {
+    this.#msg = `hello ${x}`
+  }
+}
+
+const instance = new ClassWithGetSet()
+console.log(instance.msg)
+// expected output: "hello worl​d"
+
+instance.msg = 'cake'
+console.log(instance.msg)
+// expected output: "hello cake"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Public and private instance fields', '#prod-FieldDefinition', 'FieldDefinition')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.classes.public_class_fields")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://rfrn.org/~shu/2018/05/02/the-semantics-of-all-js-class-elements.html">The Semantics of All JS Class Elements</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/classes/static/index.html b/files/ja/web/javascript/reference/classes/static/index.html
new file mode 100644
index 0000000000..c743df4aff
--- /dev/null
+++ b/files/ja/web/javascript/reference/classes/static/index.html
@@ -0,0 +1,132 @@
+---
+title: static
+slug: Web/JavaScript/Reference/Classes/static
+tags:
+ - Classes
+ - ECMAScript 2015
+ - JavaScript
+ - Language feature
+ - Static
+translation_of: Web/JavaScript/Reference/Classes/static
+---
+<div>{{jsSidebar("Classes")}}</div>
+
+<p><span class="seoSummary"><code><strong>static</strong></code> キーワードは、クラスに静的メソッドや静的プロパティを定義します。静的メソッドも静的プロパティもクラスのインスタンスからは呼び出されません。その代わりに、クラスそのものから呼び出されます。</span>静的メソッドは多くの場合、オブジェクトの生成や複製を行う関数などのユーティリティ関数です。静的プロパティはキャッシュ、固定的な構成、その他の各インスタンスに複製する必要のないデータです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/classes-static.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">static <var>methodName</var>() { ... }
+static <var>propertyName </var>[= <var>value</var>];
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_static_members_in_classes" name="Using_static_members_in_classes">クラスでの静的メンバーの使用</h3>
+
+<p>次の例はいくつかのことを説明しています。</p>
+
+<ol>
+ <li>静的メンバー (メソッドまたはプロパティ) がクラスでどのように定義されるか</li>
+ <li>静的メンバーを持つクラスがサブクラスを作れるか</li>
+ <li>静的メンバーがどう呼び出せて、どう呼び出せないか</li>
+</ol>
+
+<pre class="brush: js notranslate">class Triple {
+  static customName = 'Tripler';
+  static description = 'I triple any number you provide';
+ static triple(n = 1) {
+ return n * 3;
+ }
+}
+
+class BiggerTriple extends Triple {
+  static longDescription;
+ static description = 'I square the triple of any number you provide';
+ static triple(n) {
+ return super.triple(n) * super.triple(n);
+ }
+}
+
+console.log(Triple.description); // 'I triple any number you provide'
+console.log(Triple.triple()); // 3
+console.log(Triple.triple(6)); // 18
+
+var tp = new Triple();
+
+console.log(BiggerTriple.triple(3)); // 81 (not affected by parent's instantiation)
+console.log(BiggerTriple.description); // 'I square the triple of any number you provide'
+console.log(BiggerTriple.longDescription); // undefined
+console.log(BiggerTriple.customName); // 'Tripler'
+
+console.log(tp.triple()); // 'tp.triple is not a function'.
+</pre>
+
+<h3 id="Calling_static_members_from_another_static_method" name="Calling_static_members_from_another_static_method">静的メンバーの別な静的メソッドからの呼び出し</h3>
+
+<p>同じクラス内の静的メソッドまたはプロパティを静的メソッドから呼び出すには、 <code><a href="/ja/docs/Web/JavaScript/Reference/Operators/this">this</a></code> キーワードを使います。</p>
+
+<pre class="brush: js notranslate">class StaticMethodCall {
+  static staticProperty = 'static property';
+ static staticMethod() {
+ return 'Static method and ' + this.staticProperty + ' has been called';
+ }
+ static anotherStaticMethod() {
+ return this.staticMethod() + ' from another static method';
+ }
+}
+StaticMethodCall.staticMethod();
+// 'Static method and static property has been called'
+
+StaticMethodCall.anotherStaticMethod();
+// 'Static method and static property has been called from another static method'</pre>
+
+<h3 id="Calling_static_members_from_a_class_constructor_and_other_methods" name="Calling_static_members_from_a_class_constructor_and_other_methods">クラスのコンストラクターや他のメソッドからの静的メソッドの呼び出し</h3>
+
+<p>静的メソッドは静的ではないメソッドの {{jsxref("this")}} キーワードを使用して直接アクセスすることができません。呼び出すにはクラス名を使用して <code>クラス名.静的メソッド名()</code> / <code>クラス名.静的プロパティ名</code> のようにするか、 <code>constructor</code> プロパティのメソッドとして <code>this.constructor.静的メソッド名() </code> / <code>this.constructor.静的プロパティ名</code> のようにしてください。</p>
+
+<pre class="brush: js notranslate">class StaticMethodCall {
+ constructor() {
+ console.log(StaticMethodCall.staticProperty); // 'static property'
+ console.log(this.constructor.staticProperty); // 'static property'
+ console.log(StaticMethodCall.staticMethod()); // 'static method has been called.'
+ console.log(this.constructor.staticMethod()); // 'static method has been called.'
+ }
+
+ static staticProperty = 'static property';
+ static staticMethod() {
+ return 'static method has been called.';
+ }
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.classes.static")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/class"><code>class</code> 式</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/class"><code>class</code> 宣言</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Classes">クラス</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/deprecated_and_obsolete_features/index.html b/files/ja/web/javascript/reference/deprecated_and_obsolete_features/index.html
new file mode 100644
index 0000000000..ac58824709
--- /dev/null
+++ b/files/ja/web/javascript/reference/deprecated_and_obsolete_features/index.html
@@ -0,0 +1,291 @@
+---
+title: 非推奨の機能、廃止された機能
+slug: Web/JavaScript/Reference/Deprecated_and_obsolete_features
+tags:
+ - Deprecated
+ - Guide
+ - JavaScript
+ - Obsolete
+translation_of: Web/JavaScript/Reference/Deprecated_and_obsolete_features
+---
+<p>{{JsSidebar("More")}}</p>
+
+<p>この付録リストは JavaScript で廃止予定 (まだ使用できるが削除する予定) とされた、あるいは既に廃止され使用不可となった機能の一覧です。</p>
+
+<h2 id="Deprecated_features" name="Deprecated_features">非推奨の機能</h2>
+
+<p>これらの非推奨機能はまだ使用可能かもしれません。しかし将来的には完全に削除されるでしょう。既にあなたがコード内でこれらを使用している場合は、代替となるコードに置き換えておく必要があります。</p>
+
+<h3 id="RegExp_properties" name="RegExp_properties"><code>RegExp</code> オブジェクトのプロパティ</h3>
+
+<p>以下のプロパティは非推奨です。これらは{{jsxref("String.replace", "文字列置換", "", 1)}}で使用しても効果がありません。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>プロパティ</th>
+ <th>説明</th>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.n", "$1-$9")}}</td>
+ <td>(もしあれば)括弧で囲まれた部分文字列にマッチします。
+ <p><strong>警告:</strong>このプロパティを使うことで、問題が起きる恐れがあります。なぜなら、ブラウザーの拡張がそれらを変更可能なためです。使用は避けるべきです。</p>
+ </td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.input", "$_")}}</td>
+ <td><code>input</code> プロパティを参照してください。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.multiline", "$*")}}</td>
+ <td><code>multiline</code> プロパティを参照してください。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.lastMatch", "$&amp;")}}</td>
+ <td><code>lastMatch</code> プロパティを参照してください。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.lastParen", "$+")}}</td>
+ <td><code>lastParen</code> プロパティを参照してください。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.leftContext", "$`")}}</td>
+ <td><code>leftContext</code> プロパティを参照してください。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.rightContext", "$'")}}</td>
+ <td><code>rightContext</code> プロパティを参照してください。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.input", "input")}}</td>
+ <td>正規表現がマッチする対象となる文字列。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.lastMatch", "lastMatch")}}</td>
+ <td>最後にマッチした文字。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.lastParen", "lastParen")}}</td>
+ <td>(もしあれば)最後に括弧で囲まれた部分文字列のマッチ。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.leftContext", "leftContext")}}</td>
+ <td>一番最近のマッチに先行する部分文字列。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.rightContext", "rightContext")}}</td>
+ <td>一番最近のマッチの後に続く部分文字列。</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>以下は、現在、<code>RegExp</code> インスタンスのプロパティであり、もはや、<code>RegExp</code> オブジェクトのプロパティではありません。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>プロパティ</th>
+ <th>説明</th>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.global", "global")}}</td>
+ <td>対象文字列で可能なマッチすべてに対して正規表現をテストするか、それとも、最初のマッチに対してのみテストするどうかのフラグ。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.ignoreCase", "ignoreCase")}}</td>
+ <td>文字列でのマッチを適用する際に、大文字と小文字の違いを無視するかどうかのフラグ。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.lastIndex", "lastIndex")}}</td>
+ <td>次のマッチが始まる位置。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.multiline", "multiline")}}</td>
+ <td>複数行に渡って文字列を検索するかどうかのフラグ。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.source", "source")}}</td>
+ <td>パターンのテキスト。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="RegExp_methods" name="RegExp_methods"><code>RegExp</code> オブジェクトのメソッド</h3>
+
+<ul>
+ <li>{{jsxref("RegExp.compile", "compile()")}} メソッドは、非推奨です。</li>
+ <li><code>valueOf</code> メソッドは、もはや <code>RegExp</code> のみのメソッドではありません。{{jsxref("Object.valueOf()")}} を使用してください。</li>
+</ul>
+
+<h3 id="Function_properties" name="Function_properties"><code>Function</code> オブジェクトのプロパティ</h3>
+
+<ul>
+ <li>{{jsxref("Global_Objects/Function/caller", "caller")}} と {{jsxref("Global_Objects/Function/arguments", "arguments")}} プロパティは廃止されました。これは呼び出した関数を取得できてしまうためです。この arguments プロパティの代わりに、クロージャ内部の {{jsxref("Functions/arguments", "arguments")}} オブジェクトを使うべきです。</li>
+</ul>
+
+<h3 id="Legacy_generator" name="Legacy_generator">旧形式のジェネレーター</h3>
+
+<ul>
+ <li>{{jsxref("Statements/Legacy_generator_function", "旧形式のジェネレーター関数文")}}および{{jsxref("Operators/Legacy_generator_function", "旧形式のジェネレーター関数式")}}は非推奨です。代わりに {{jsxref("Statements/function*", "function* 文")}}および {{jsxref("Operators/function*", "function* 式")}}を使用してください。</li>
+ <li>{{jsxref("Operators/Array_comprehensions", "JS1.7/JS1.8 の配列内包", "#Differences_to_the_older_JS1.7.2FJS1.8_comprehensions")}}および {{jsxref("Operators/Generator_comprehensions", "JS1.7/JS1.8 のジェネレーター内包", "#Differences_to_the_older_JS1.7.2FJS1.8_comprehensions")}}は非推奨です。</li>
+</ul>
+
+<h3 id="Iterator" name="Iterator">イテレーター</h3>
+
+<ul>
+ <li>{{jsxref("Global_Objects/StopIteration", "StopIteration")}} は非推奨です。</li>
+ <li>{{jsxref("Global_Objects/Iterator", "Iterator")}} は非推奨です。</li>
+</ul>
+
+<h3 id="Object_methods" name="Object_methods">Object オブジェクトのメソッド</h3>
+
+<ul>
+ <li>{{jsxref("Object.watch", "watch")}} および {{jsxref("Object.unwatch", "unwatch")}} は非推奨です。代わりに {{jsxref("Proxy")}} を使用してください。</li>
+ <li><code>__iterator__</code> は非推奨です。</li>
+ <li>{{jsxref("Object.noSuchMethod", "__noSuchMethod__")}} は非推奨です。代わりに {{jsxref("Proxy")}} を使用してください。</li>
+</ul>
+
+<h3 id="Date_methods" name="Date_methods"><code>Date</code> オブジェクトのメソッド</h3>
+
+<ul>
+ <li>{{jsxref("Global_Objects/Date/getYear", "getYear")}} と {{jsxref("Global_Objects/Date/setYear", "setYear")}} は「{{interwiki('wikipedia', '2000年問題')}}」の影響を受けます。代替策として、{{jsxref("Global_Objects/Date/getFullYear", "getFullYear")}} および {{jsxref("Global_Objects/Date/setFullYear", "setFullYear")}} の使用が推奨されます。</li>
+ <li>新しいコードでは非推奨の {{jsxref("Global_Objects/Date/toGMTString", "toGMTString")}} メソッドは用いず、代わりに {{jsxref("Global_Objects/Date/toISOString", "toISOString")}} を用います。</li>
+ <li>{{jsxref("Global_Objects/Date/toLocaleFormat", "toLocaleFormat")}} は非推奨です。</li>
+</ul>
+
+<h3 id="Functions" name="Functions">関数</h3>
+
+<ul>
+ <li>{{jsxref("Operators/Expression_closures", "式クロージャ", "", 1)}}は非推奨です。代わりに通常の {{jsxref("Operators/function", "functions")}} または{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}を使用してください。</li>
+</ul>
+
+<h3 id="Proxy" name="Proxy">Proxy</h3>
+
+<ul>
+ <li><a href="/ja/docs/Archive/Web/Old_Proxy_API">Proxy.create</a> および <a href="/ja/docs/Archive/Web/Old_Proxy_API">Proxy.createFunction</a> は非推奨です。代わりに {{jsxref("Proxy")}} を使用してください。</li>
+ <li>以下のトラップは廃止しました:
+ <ul>
+ <li><code>hasOwn</code> ({{bug(980565)}}, Firefox 33).</li>
+ <li><code>getEnumerablePropertyKeys</code> ({{bug(783829)}}, Firefox 37)</li>
+ <li><code>getOwnPropertyNames</code> ({{bug(1007334)}}, Firefox 33)</li>
+ <li><code>keys</code> ({{bug(1007334)}}, Firefox 33)</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Escape_sequences" name="Escape_sequences">エスケープシーケンス</h3>
+
+<ul>
+ <li>文字列内と正規表現リテラル内での、8 進表記のエスケープシーケンス (\ に続く、1 つ、2 つ、もしくは、3 つの 8 進表現の数字) は非推奨です。</li>
+ <li>{{jsxref("Global_Objects/escape", "escape")}} と {{jsxref("Global_Objects/unescape", "unescape")}} 関数は非推奨です。特殊文字のためのエスケープシーケンスをエンコードかデコードするためには、{{jsxref("Global_Objects/encodeURI", "encodeURI")}}、{{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent")}}、{{jsxref("Global_Objects/decodeURI", "decodeURI")}} もしくは {{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent")}} を使用してください。</li>
+</ul>
+
+<h3 id="String_methods" name="String_methods">String オブジェクトのメソッド</h3>
+
+<ul>
+ <li>{{jsxref("String.prototype.fontsize")}} や {{jsxref("String.prototype.big")}} などの <a href="/ja/docs/tag/HTML%20wrapper%20methods">HTML ラッパーメソッド</a>。</li>
+ <li>{{jsxref("String.prototype.quote")}} は Firefox 37 で削除しました。</li>
+ <li>{{jsxref("String.prototype.search")}}、{{jsxref("String.prototype.match")}}、{{jsxref("String.prototype.replace")}} の非標準パラメータ <code>flags</code> は非推奨です。</li>
+ <li>{{jsxref("String.prototype.substr")}} probably won't be removed anytime soon, but it's defined in <a href="https://www.ecma-international.org/ecma-262/9.0/index.html#sec-string.prototype.substr" rel="noopener">Annex B</a> of the ECMA-262 standard, whose <a href="https://www.ecma-international.org/ecma-262/9.0/index.html#sec-additional-ecmascript-features-for-web-browsers">introduction</a> states: "… Programmers should not use or assume the existence of these features and behaviours when writing new ECMAScript code. …"</li>
+</ul>
+
+<h2 id="Obsolete_features" name="Obsolete_features">廃止された機能</h2>
+
+<p>これらは JavaScript において完全に廃止されており、現在では使用不可となっています。</p>
+
+<h3 id="Object" name="Object">Object</h3>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>プロパティ/メソッド</th>
+ <th>概要</th>
+ </tr>
+ <tr>
+ <td>{{jsxref("Global_Objects/Object/count", "__count__")}}</td>
+ <td>ユーザーがオブジェクトに直接定義した、列挙可能なプロパティの個数</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Global_Objects/Object/Parent", "__parent__")}}</td>
+ <td>オブジェクトのコンテキストへのポインタ</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Global_Objects/Object/eval", "Object.prototype.eval()")}}</td>
+ <td>指定したオブジェクトのコンテキスト内の JavaScript コードの文字列を評価します。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.observe()")}}</td>
+ <td>オブジェクトに対する変更を非同期に監視します。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.unobserve()")}}</td>
+ <td>observer を削除します。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.getNotifier()")}}</td>
+ <td>総合的に変更をトリガーできるオブジェクトを生成します。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Function" name="Function">Function</h3>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>プロパティ</th>
+ <th>概要</th>
+ </tr>
+ <tr>
+ <td>{{jsxref("Global_Objects/Function/arity", "arity")}}</td>
+ <td>仮引数の個数</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Array" name="Array">Array</h3>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td>プロパティ</td>
+ <td>説明</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Array.observe()")}}</td>
+ <td>配列に対する変更を非同期に監視します。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Array.unobserve()")}}</td>
+ <td>observer を削除します。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Number" name="Number">Number</h3>
+
+<ul>
+ <li>{{jsxref("Number.toInteger()")}}</li>
+</ul>
+
+<h3 id="ParallelArray" name="ParallelArray">ParallelArray</h3>
+
+<ul>
+ <li>{{jsxref("ParallelArray")}}</li>
+</ul>
+
+<h3 id="Statements" name="Statements">文</h3>
+
+<ul>
+ <li>{{jsxref("Statements/for_each...in", "for each...in")}} 文は非推奨です。代わりに {{jsxref("Statements/for...of", "for...of")}} を使用してください。</li>
+ <li>分割代入型 {{jsxref("Statements/for...in", "for...in")}} は非推奨です。代わりに {{jsxref("Statements/for...of", "for...of")}} を使用してください。</li>
+ <li>let ブロックおよび、 let 式は廃止されました。</li>
+</ul>
+
+<h3 id="E4X" name="E4X">E4X</h3>
+
+<p>詳しくは <a href="/ja/docs/Archive/Web/E4X">E4X</a> をご覧ください。</p>
+
+<h3 id="Sharp_variables" name="Sharp_variables">シャープ変数</h3>
+
+<p>詳しくは <a href="/ja/docs/Archive/Web/Sharp_variables_in_JavaScript">Sharp variables in JavaScript</a> をご覧ください。</p>
diff --git a/files/ja/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html b/files/ja/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html
new file mode 100644
index 0000000000..be3b387cc7
--- /dev/null
+++ b/files/ja/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html
@@ -0,0 +1,75 @@
+---
+title: The legacy Iterator protocol
+slug: >-
+ Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol
+tags:
+ - JavaScript
+ - Legacy Iterator
+translation_of: >-
+ Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol
+---
+<div>{{jsSidebar("More")}}</div>
+
+<div class="warning"><strong>非標準。</strong> 非標準。レガシーイテレータープロトコルは SpiderMonkey 固有の機能で、Firefox 58 以降で削除済みです。将来向きの用途に、<a href="/docs/Web/JavaScript/Reference/Statements/for...of" title="/docs/Web/JavaScript/Reference/Statements/for...of">for..of</a> ループと <a href="/docs/Web/JavaScript/Guide/The_Iterator_protocol">iterator protocol</a> を使用することを検討してください。</div>
+
+<h2 id="非推奨のFirefox専用イテレータプロトコル">非推奨のFirefox専用イテレータプロトコル</h2>
+
+<p>Firefox version 26以前は、標準の<a href="/docs/Web/JavaScript/Guide/The_Iterator_protocol">ES2015 Iterator protocol</a>に似ている別のイテレータプロトコルを実装していました。</p>
+
+<p>オブジェクトが次のセマンティックスをもつ<code>next()</code>メソッドを実装するとき、そのオブジェクトはレガシーイテレータで、イテレーションの最後に{{jsxref("Global_Objects/StopIteration", "StopIteration")}}をスローします。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">プロパティ</th>
+ <th scope="col">値</th>
+ </tr>
+ <tr>
+ <td><code>next</code></td>
+ <td>引き数なしの関数。値を返します。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="レガシーイテレータプロトコルとES6イテレータプロトコルの違い">レガシーイテレータプロトコルとES6イテレータプロトコルの違い</h3>
+
+<ul>
+ <li>プレースホルダオブジェクトの<code>value</code>プロパティのかわりに、<code>next</code>の呼び出しの戻り値として直接値が返されます。</li>
+ <li>{{jsxref("Global_Objects/StopIteration", "StopIteration")}}オブジェクトをスローすることによって反復終了が発現しました。</li>
+</ul>
+
+<h3 id="古いプロトコルをもつ簡単な例">古いプロトコルをもつ簡単な例</h3>
+
+<pre class="brush: js">function makeIterator(array){
+ var nextIndex = 0;
+
+ return {
+ next: function(){
+ if(nextIndex &lt; array.length){
+ return array[nextIndex++];
+ else
+ throw new StopIteration();
+ }
+ }
+}
+
+var it = makeIterator(['yo', 'ya']);
+
+console.log(it.next()); // 'yo'
+console.log(it.next()); // 'ya'
+try{
+ console.log(it.next());
+}
+catch(e){
+ if(e instanceof StopIteration){
+ // iteration over
+ }
+}
+</pre>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Guide/Iterators_and_Generators">イテレーターとジェネレーター</a></li>
+ <li>More <a href="/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features">非推奨の機能、廃止された機能</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/already_has_pragma/index.html b/files/ja/web/javascript/reference/errors/already_has_pragma/index.html
new file mode 100644
index 0000000000..ece0c870f4
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/already_has_pragma/index.html
@@ -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:
+ - Errors
+ - JavaScript
+ - Source maps
+ - Warning
+translation_of: Web/JavaScript/Reference/Errors/Already_has_pragma
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">Warning: -file- is being assigned a //# sourceMappingURL, but already has one.</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>警告です。JavaScript の実行が停止されることはありません。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>JavaScript ソースに対して、ソースマップが複数回指定されています。</p>
+
+<p>より効率的にサーバから配信するため、しばしば JavaScript ソースの結合や縮小が行われます。 <a href="http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/">ソースマップ</a>を使用すると、デバッガーは実行されているコードとオリジナルのソースファイルをマッピングできます。ソースマップを割り当てるには、コメントを使用するか JavaScript ファイルにヘッダーを設定するかの 2 つの方法があります。</p>
+
+<h2 id="例">例</h2>
+
+<p>ファイルでコメントを使用してソースマップを設定します:</p>
+
+<pre class="brush: js example-good">//# sourceMappingURL=http://example.com/path/to/your/sourcemap.map</pre>
+
+<p>あるいは、JavaScript ファイルにヘッダーを設定することもできます:</p>
+
+<pre class="brush: js example-good">X-SourceMap: /path/to/file.js.map</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Debugger/How_to/Use_a_source_map">ソースマップを使用する – Firefox ツールドキュメント</a></li>
+ <li><a href="http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/">Introduction to source maps – HTML5 rocks</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/array_sort_argument/index.html b/files/ja/web/javascript/reference/errors/array_sort_argument/index.html
new file mode 100644
index 0000000000..11581e3d9b
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/array_sort_argument/index.html
@@ -0,0 +1,47 @@
+---
+title: 'TypeError: invalid Array.prototype.sort argument'
+slug: Web/JavaScript/Reference/Errors/Array_sort_argument
+tags:
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Array_sort_argument
+---
+<div>{{jsSidebar("Errors")}}
+<h2 id="Message" name="Message">メッセージ</h2>
+</div>
+
+<pre class="syntaxbox">TypeError: invalid Array.prototype.sort argument (Firefox)
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">何がうまくいかなかったのか?</h2>
+
+<p>{{jsxref("Array.prototype.sort()")}} の引数には、{{jsxref("undefined")}} かオペランドを比較する関数のいずれかが求められれます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Invalid_cases" name="Invalid_cases">無効なケース</h3>
+
+<pre class="brush: js example-bad">[1, 3, 2].sort(5); // TypeError
+
+var cmp = { asc: (x, y) =&gt; x &gt;= y, dsc: (x, y) =&gt; x &lt;= y };
+[1, 3, 2].sort(cmp[this.key] || 'asc'); // TypeError
+</pre>
+
+<h3 id="Valid_cases" name="Valid_cases">有効なケース</h3>
+
+<pre class="brush: js example-good">[1, 3, 2].sort(); // [1, 2, 3]
+
+
+var cmp = { asc: (x, y) =&gt; x &gt;= y, dsc: (x, y) =&gt; x &lt;= y };
+[1, 3, 2].sort(cmp[this.key || 'asc']); // [1, 2, 3]</pre>
+
+<h2 id="See_also" name="See_also">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.sort()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/bad_octal/index.html b/files/ja/web/javascript/reference/errors/bad_octal/index.html
new file mode 100644
index 0000000000..d3f5c51403
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/bad_octal/index.html
@@ -0,0 +1,51 @@
+---
+title: 'SyntaxError: "x" is not a legal ECMA-262 octal constant'
+slug: Web/JavaScript/Reference/Errors/Bad_octal
+tags:
+ - Errors
+ - JavaScript
+ - Strict Mode
+ - SynataxError
+ - Warning
+translation_of: Web/JavaScript/Reference/Errors/Bad_octal
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">Warning: SyntaxError: 08 is not a legal ECMA-262 octal constant.
+Warning: SyntaxError: 09 is not a legal ECMA-262 octal constant.
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a> でのみ、{{jsxref("SyntaxError")}} の警告が出ます。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>小数リテラルは、そのほかの十進数が続くゼロ(<code>0</code>)から開始できますが、先頭の <code>0</code> 以降の数値がすべて 8 以下の場合、数値は八進数として解釈されます。それゆえ、 <code>08</code> や <code>09</code> はあり得ないため、JavaScript はこれを警告します。</p>
+
+<p>八進数リテラルと八進数エスケープシーケンスは非推奨であり、追加の非推奨警告が発生することに注意してください。ECMAScript 6 以降では、小文字または大文字のラテンリテラル "O"(<code>0o</code> か <code>0O</code>)が続くゼロ始まりの構文が使用されます。詳細は、<a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Octal">lexical grammar</a> のページを見てください。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効な八進数">無効な八進数</h3>
+
+<pre class="brush: js example-bad">08;
+09;
+// SyntaxError: 08 is not a legal ECMA-262 octal constant
+// SyntaxError: octal literals and octal escape sequences are deprecated</pre>
+
+<h3 id="有効な八進数">有効な八進数</h3>
+
+<p>"o" の文字が続くゼロを使用します。</p>
+
+<pre class="brush: js example-good">0O755;
+0o644;
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Octal">Lexical grammar</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/bad_radix/index.html b/files/ja/web/javascript/reference/errors/bad_radix/index.html
new file mode 100644
index 0000000000..dfcf5f1591
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/bad_radix/index.html
@@ -0,0 +1,61 @@
+---
+title: 'RangeError: radix must be an integer'
+slug: Web/JavaScript/Reference/Errors/Bad_radix
+tags:
+ - Errors
+ - JavaScript
+ - RangeError
+translation_of: Web/JavaScript/Reference/Errors/Bad_radix
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">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)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("RangeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>{{jsxref("Number.prototype.toString()")}} メソッドで、オプションの <code>radix</code> パラメーターを使用しています。このパラメーターは、数値を表すために使用するナンバーシステムを指定する 2 から 36 の整数(数)でなければなりません。</p>
+
+<p>なぜ上限が 36 なのでしょうか?10 よりも大きい基数には、アルファベットが数値として用いられます。ラテンアルファベットは 26 文字しかないため、基数は 36 以上にはできません。</p>
+
+<p>一般的な基数として、以下のものを使用します:</p>
+
+<ul>
+ <li><a href="https://ja.wikipedia.org/wiki/%E4%BA%8C%E9%80%B2%E6%B3%95">二進法</a>のための 2、</li>
+ <li><a href="https://ja.wikipedia.org/wiki/%E5%85%AB%E9%80%B2%E6%B3%95">八進法</a>のための 8、</li>
+ <li><a href="https://ja.wikipedia.org/wiki/%E5%8D%81%E9%80%B2%E6%B3%95">十進法</a>のための 10、</li>
+ <li><a href="https://ja.wikipedia.org/wiki/%E5%8D%81%E5%85%AD%E9%80%B2%E6%B3%95">十六進法</a>のための 16。</li>
+</ul>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<pre class="brush: js example-bad">(42).toString(0);
+(42).toString(1);
+(42).toString(37);
+(42).toString(150);
+// フォーマットのために、このような文字列は使用できません:
+(12071989).toString("MM-dd-yyyy");
+</pre>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<pre class="brush: js example-good">(42).toString(2); // "101010" (二進数)
+(13).toString(8); // "15" (八進数)
+(0x42).toString(10); // "66" (十進数)
+(100000).toString(16) // "186a0" (十六進数)
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Number.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/bad_regexp_flag/index.html b/files/ja/web/javascript/reference/errors/bad_regexp_flag/index.html
new file mode 100644
index 0000000000..cf05155777
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/bad_regexp_flag/index.html
@@ -0,0 +1,106 @@
+---
+title: 'SyntaxError: invalid regular expression flag "x"'
+slug: Web/JavaScript/Reference/Errors/Bad_regexp_flag
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Bad_regexp_flag
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: invalid regular expression flag "x" (Firefox)
+SyntaxError: Invalid regular expression flags (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>コード内に、不正な正規表現フラグがあります。スラッシュで囲まれたパターンで構成される正規表現リテラルでは、フラグは 2 番目のフラグの後に定義されます。{{jsxref("RegExp")}} オブジェクトのコンストラクター関数 (2 つ目の引数)で定義することもできます。正規表現フラグは個別に使うこともできれば、好きな順序で複数使うこともできますが、ECMAScript では 5 つしかありません。</p>
+
+<p>規表現にフラグを含めるには、次の構文を使用します:</p>
+
+<pre class="brush: js">var re = /pattern/flags;
+</pre>
+
+<p>または、</p>
+
+<pre class="brush: js">var re = new RegExp('pattern', 'flags');</pre>
+
+<table class="standard-table">
+ <caption>正規表現フラグ</caption>
+ <thead>
+ <tr>
+ <th scope="col">フラグ</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>g</code></td>
+ <td>グローバルサーチ。</td>
+ </tr>
+ <tr>
+ <td>i</td>
+ <td>大文字小文字を区別したサーチ。</td>
+ </tr>
+ <tr>
+ <td>m</td>
+ <td>複数行サーチ</td>
+ </tr>
+ <tr>
+ <td>u</td>
+ <td>ユニコード; パターンを Unicode コードポイントシーケンスとして扱う。</td>
+ </tr>
+ <tr>
+ <td>y</td>
+ <td>対象の文字列の現在の位置から一致を探す "sticky" サーチ。{{jsxref("RegExp.sticky", "sticky")}} を見てください。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="例">例</h2>
+
+<p>有効な正規表現フラグは 5 つしかありません。</p>
+
+<pre class="brush: js example-bad">/foo/bar;
+
+// SyntaxError: invalid regular expression flag "b"
+</pre>
+
+<p>正規表現を生成するつもりでしたか?2 つのスラッシュを含む式は正規表現リテラルとして解釈されます。</p>
+
+<pre class="brush: js example-bad">let obj = {
+ url: /docs/Web
+};
+
+// SyntaxError: invalid regular expression flag "W"
+</pre>
+
+<p>または、文字列を生成するつもりでしたか?文字列リテラルを生成するためにはシングルコーテーション、またはダブルコーテーションを追記します。</p>
+
+<pre class="brush: js example-good">let obj = {
+ url: '/docs/Web'
+};</pre>
+
+<h3 id="有効な正規表現フラグ">有効な正規表現フラグ</h3>
+
+<p>JavaScript で使用できる 5 つの正規表現フラグについては、上述の表を見てください。</p>
+
+<pre class="brush: js example-good">/foo/g;
+/foo/gim;
+/foo/uy;
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a></li>
+ <li><a href="http://xregexp.com/flags/">XRegEx flags</a> – regular expression library that provides four new flags (<code>n</code>, <code>s</code>, <code>x</code>, <code>A</code>)</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/bad_return_or_yield/index.html b/files/ja/web/javascript/reference/errors/bad_return_or_yield/index.html
new file mode 100644
index 0000000000..2f749435aa
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/bad_return_or_yield/index.html
@@ -0,0 +1,55 @@
+---
+title: 'SyntaxError: return not in function'
+slug: Web/JavaScript/Reference/Errors/Bad_return_or_yield
+tags:
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Bad_return_or_yield
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: return not in function
+SyntaxError: yield not in function
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/return">return</a></code> ステートメントか <code><a href="/ja/docs/Web/JavaScript/Reference/Operators/yield">yield</a></code> ステートメントが、 <a href="/ja/docs/Web/JavaScript/Guide/Functions">関数</a> の外側で呼び出されました。どこかで、波括弧を忘れたのかもしれません。<code>return</code> ステートメントと <code>yield</code> ステートメントは、関数内で使用しなければなりません。なぜなら、これらのステートメントは、関数の実行を終了(または、停止や再開)し、関数の呼び出し元に返す値を指定するからです。</p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: js example-bad">var cheer = function(score) {
+ if (score === 147)
+ return "Maximum!";
+ };
+ if (score &gt; 100) {
+ return "Century!";
+ }
+}
+
+// SyntaxError: return not in function</pre>
+
+<p>一見して、波括弧は正しく見えますが、このコードスニペットでは、最初の <code>if</code> ステートメントの後の <code>{</code> を忘れています。正しくは以下のようにします:</p>
+
+<pre class="brush: js example-good">var cheer = function(score) {
+ if (score === 147) {
+ return "Maximum!";
+ }
+ if (score &gt; 100) {
+ return "Century!";
+ }
+};</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/return">return</a></code></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Operators/yield">yield</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/called_on_incompatible_type/index.html b/files/ja/web/javascript/reference/errors/called_on_incompatible_type/index.html
new file mode 100644
index 0000000000..aaf0d62155
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/called_on_incompatible_type/index.html
@@ -0,0 +1,72 @@
+---
+title: 'TypeError: X.prototype.y called on incompatible type'
+slug: Web/JavaScript/Reference/Errors/Called_on_incompatible_type
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Called_on_incompatible_type
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の例外 "called on incompatible target (or object)" は、関数が (与えられたオブジェクト上で) 呼び出されたときに、関数が期待する型に対応していない <code>this</code> を使用して呼び出された場合に発生します。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox notranslate">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)
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">原因</h2>
+
+<p>このエラーがスローされる場合、(指定されたオブジェクト上の) 関数が、関数が予期する型に対応していない <code>this</code> と共に呼び出されています。</p>
+
+<p>この問題は {{jsxref("Function.prototype.call()")}} メソッドか {{jsxref("Function.prototype.apply()")}} メソッドを使用して、予期していない型の <code>this</code> 引数を渡した場合に発生します。</p>
+
+<p>この問題は、オブジェクトのプロパティとして格納されている関数を他の関数の引数として提供する場合にも発生します。この場合、関数を格納しているオブジェクトは、他の関数から呼び出されたときに、その関数の <code>this</code> のターゲットにはなりません。この問題を回避するには、呼び出しを行っているラムダを提供するか、 {{jsxref("Function.prototype.bind()")}} 関数を使用して <code>this</code> 引数を期待されるオブジェクトに強制的に渡す必要があります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Invalid_cases" name="Invalid_cases">無効な場合</h3>
+
+<pre class="brush: js example-bad notranslate">var mySet = new Set;
+['bar', 'baz'].forEach(mySet.add);
+// mySet.add is a function, but "mySet" is not captured as this.
+
+var myFun = function () {
+ console.log(this);
+};
+['bar', 'baz'].forEach(myFun.bind);
+// myFun.bind is a function, but "myFun" is not captured as this.
+
+</pre>
+
+<h3 id="Valid_cases" name="Valid_cases">妥当な場合</h3>
+
+<pre class="brush: js example-good notranslate">var mySet = new Set;
+['bar', 'baz'].forEach(mySet.add.bind(mySet));
+// This works due to binding "mySet" as this.
+
+var myFun = function () {
+ console.log(this);
+};
+['bar', 'baz'].forEach(x =&gt; myFun.bind(x));
+// This works using the "bind" function. It creates a lambda forwarding the argument.
+
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Function.prototype.call()")}}</li>
+ <li>{{jsxref("Function.prototype.apply()")}}</li>
+ <li>{{jsxref("Function.prototype.bind()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html b/files/ja/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html
new file mode 100644
index 0000000000..b6c629ee38
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/cant_access_lexical_declaration_before_init/index.html
@@ -0,0 +1,60 @@
+---
+title: 'ReferenceError: can''t access lexical declaration`X'' before initialization'
+slug: Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init
+tags:
+ - Errors
+ - JavaScript
+ - ReferemceError
+translation_of: Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">ReferenceError: can't access lexical declaration `X' before initialization (Firefox)
+ReferenceError: 'x' is not defined (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("ReferenceError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>初期化前に語彙変数にアクセスしました。これはブロックステートメント内で、定義される前に<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code> か <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/const">const</a></code> 宣言にアクセスすると発生します。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="不正な場合">不正な場合</h3>
+
+<p>この場合、変数 "foo" はブロックステートメント内で <code>let</code> を使用して再宣言されています。</p>
+
+<pre class="brush: js example-bad">function test() {
+ let foo = 33;
+ if (true) {
+ let foo = (foo + 55);
+ // ReferenceError: can't access lexical
+ // declaration `foo' before initialization
+ }
+}
+test();
+</pre>
+
+<h3 id="有効な場合">有効な場合</h3>
+
+<p>"foo" を if ステートメント内に変更するには、再宣言の原因となる <code>let</code> を取り除きます。</p>
+
+<pre class="brush: js example-good">function test(){
+ let foo = 33;
+ if (true) {
+ foo = (foo + 55);
+ }
+}
+test();
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone_と_let_に関するエラー">Temporal dead zone と let に関するエラー</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/cant_access_property/index.html b/files/ja/web/javascript/reference/errors/cant_access_property/index.html
new file mode 100644
index 0000000000..b9bd300b79
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/cant_access_property/index.html
@@ -0,0 +1,59 @@
+---
+title: 'TypeError: can''t access property "x" of "y"'
+slug: Web/JavaScript/Reference/Errors/Cant_access_property
+tags:
+ - Error
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Cant_access_property
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">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)
+
+Examples:
+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
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>{{jsxref("undefined")}} か {{jsxref("null")}} に対してプロパティアクセスを行いました。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<pre class="brush: js example-bad">// undefined and null cases on which the substring method won't work
+var foo = undefined;
+foo.substring(1); // TypeError: x is undefined, can't access property "substring" of it
+
+var foo = null;
+foo.substring(1); // TypeError: x is null, can't access property "substring" of it
+</pre>
+
+<h3 id="問題解決">問題解決</h3>
+
+<p><code>undefined</code> か <code>null</code> の null pointer アクセスを修正するには、たとえば <a href="/ja/docs/Web/JavaScript/Reference/Operators/typeof">typeof</a> 演算子を使用できます。</p>
+
+<pre class="brush: js">if (typeof foo !== 'undefined') {
+ // Now we know that foo is defined, we are good to go.
+}</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("undefined")}}</li>
+ <li>{{jsxref("null")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/cant_assign_to_property/index.html b/files/ja/web/javascript/reference/errors/cant_assign_to_property/index.html
new file mode 100644
index 0000000000..8a9564ddc4
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/cant_assign_to_property/index.html
@@ -0,0 +1,55 @@
+---
+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
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: <code class="highlighted" id="line-87">can't assign to property "x" on {y}: not an object</code> (Firefox)
+TypeError: Cannot create property 'x' on {y} (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}.</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>In {{jsxref("Strict_mode")}}, a {{jsxref("TypeError")}} is raised when attempting to create a property on {{Glossary("primitive")}} value such as a {{Glossary("symbol")}}, a {{Glossary("string")}}, a {{Glossary("number")}} or a {{Glossary("boolean")}}. {{Glossary("Primitive")}} values cannot hold any {{Glossary("property/JavaScript", "property")}}.</p>
+
+<p>The problem might be that an unexpected value is flowing at an unexpected place, or that an object variant of a {{jsxref("String")}} or a {{jsxref("Number")}} is expected.</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<pre class="brush: js example-bad">'use strict';
+
+var foo = "my string";
+// The following line does nothing if not in strict mode.
+foo.bar = {}; // <span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body">TypeError: can't assign to property "bar" on "my string": not an object</span></span></span>
+</pre>
+
+<h3 id="問題を修正する">問題を修正する</h3>
+
+<p>Either fix the code to prevent the {{Glossary("primitive")}} from being used in such places, or fix the issue is to create the object equivalent {{jsxref("Object")}}.</p>
+
+<pre class="brush: js example-good">'use strict';
+
+var foo = new String("my string");
+foo.bar = {};
+</pre>
+
+<h2 id="あわせて参照">あわせて参照</h2>
+
+<ul>
+ <li>{{jsxref("Strict_mode")}}</li>
+ <li>{{Glossary("primitive")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.html b/files/ja/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.html
new file mode 100644
index 0000000000..cc0eeecd06
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/cant_define_property_object_not_extensible/index.html
@@ -0,0 +1,64 @@
+---
+title: 'TypeError: can''t define property "x": "obj" is not extensible'
+slug: Web/JavaScript/Reference/Errors/Cant_define_property_object_not_extensible
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Cant_define_property_object_not_extensible
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: can't define property "x": "obj" is not extensible (Firefox)
+TypeError: Cannot define property: "x", object is not extensible. (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>通常、オブジェクトは拡張可能で、新しいプロパティを追加できます。しかしこの場合は、{{jsxref("Object.preventExtensions()")}} がオブジェクトをもはや拡張できないものに設定しているため、拡張不可のマークが付けられたときにあったプロパティ以上のプロパティを追加できません。</p>
+
+<h2 id="例">例</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a>では、拡張不可のオブジェクトに新しいプロパティを追加しようとすると <code>TypeError</code> をスローします。非 strict モードでは、"x" プロパティの追加は暗黙的に無視されます。</p>
+
+<pre class="brush: js example-bad">'use strict';
+
+var obj = {};
+Object.preventExtensions(obj);
+
+obj.x = 'foo';
+// TypeError: can't define property "x": "obj" is not extensible
+</pre>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a>と非 strict モード共に、拡張不可のオブジェクトに新しいプロパティを追加しようとして {{jsxref("Object.defineProperty()")}} を呼び出すと、例外をスローします。</p>
+
+<pre class="brush: js example-bad">var obj = { };
+Object.preventExtensions(obj);
+
+Object.defineProperty(obj,
+ 'x', { value: "foo" }
+);
+// TypeError: can't define property "x": "obj" is not extensible
+</pre>
+
+<p>このエラーを修正するには、{{jsxref("Object.preventExtensions()")}} の呼び出しを削除するか、オブジェクトが拡張不可とマークされる前にプロパティを追加するように移動する必要があります。もちろん、必要がないのであれば、追加しようとしているプロパティを削除しても良いです。</p>
+
+<pre class="brush: js example-good">'use strict';
+
+var obj = {};
+obj.x = 'foo'; // add property first and only then prevent extensions
+
+Object.preventExtensions(obj);</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Object.preventExtensions()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/cant_delete/index.html b/files/ja/web/javascript/reference/errors/cant_delete/index.html
new file mode 100644
index 0000000000..2e2a44b27d
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/cant_delete/index.html
@@ -0,0 +1,58 @@
+---
+title: 'TypeError: property "x" is non-configurable and can''t be deleted'
+slug: Web/JavaScript/Reference/Errors/Cant_delete
+tags:
+ - Errors
+ - JavaScript
+ - Strict Mode
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Cant_delete
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: property "x" is non-configurable and can't be deleted. (Firefox)
+TypeError: Cannot delete property 'x' of #&lt;Object&gt; (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>strict モードでのみ、{{jsxref("TypeError")}} の警告が出ます。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>プロパティを削除しようとしましたが、プロパティが <a href="/ja/docs/Web/JavaScript/Data_structures#Properties">non-configurable</a> でした。<code>configurable</code> 属性は、オブジェクトからプロパティを削除できるかどうか、および(<code>writable</code> を除く)属性を変更できるかどうかを制御します。</p>
+
+<p>このエラーは、<a href="/en-US/docs/Web/JavaScript/Reference/Strict_mode">strict モードのコード</a> でのみ発生します。非 strict コードでは、この操作は <code>false</code> を返します。</p>
+
+<h2 id="例">例</h2>
+
+<p>non-configurable プロパティは、さほど一般的ではありませんが、{{jsxref("Object.defineProperty()")}} か {{jsxref("Object.freeze()")}} を使用して生成できます。</p>
+
+<pre class="brush: js example-bad">"use strict";
+var obj = Object.freeze({name: "Elsa", score: 157});
+delete obj.score; // TypeError
+
+"use strict";
+var obj = {};
+Object.defineProperty(obj, "foo", {value: 2, configurable: false});
+delete obj.foo; // TypeError
+
+"use strict";
+var frozenArray = Object.freeze([0, 1, 2]);
+frozenArray.pop(); // TypeError
+</pre>
+
+<p>JavaScript に組み込まれた、少数の non-configurable プロパティもあります。もしかしたら、Math の定数を削除しようとしたのかもしれません。</p>
+
+<pre class="brush: js example-bad">"use strict";
+delete Math.PI; // TypeError</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/delete">delete</a></li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Object.freeze()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/cant_redefine_property/index.html b/files/ja/web/javascript/reference/errors/cant_redefine_property/index.html
new file mode 100644
index 0000000000..ff44eddad5
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/cant_redefine_property/index.html
@@ -0,0 +1,51 @@
+---
+title: 'TypeError: can''t redefine non-configurable property "x"'
+slug: Web/JavaScript/Reference/Errors/Cant_redefine_property
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Cant_redefine_property
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: can't redefine non-configurable property "x" (Firefox)
+TypeError: Cannot redefine property: "x" (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>プロパティを再定義しようとしましたが、そのプロパティは<a href="/ja/docs/Web/JavaScript/Data_structures#Properties">設定不可</a>です。<code>configurable</code> 属性は、プロパティをオブジェクトから削除できるかどうか、および (<code>writable</code> 以外で) 変更できるかどうかを制御します。通常、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクト初期化子</a>で生成されたオブジェクトのプロパティは、変更可能です。しかし、{{jsxref("Object.defineProperty()")}} を使用した場合などは、既定でプロパティを修正できません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="Object.defineProperty_で生成された設定不可のプロパティ"><code>Object.defineProperty</code> で生成された設定不可のプロパティ</h3>
+
+<p>設定可能にしたくない場合、{{jsxref("Object.defineProperty()")}} は設定不可のプロパティを生成します。</p>
+
+<pre class="brush: js example-bad">var obj = Object.create({});
+Object.defineProperty(obj, "foo", {value: "bar"});
+
+Object.defineProperty(obj, "foo", {value: "baz"});
+// TypeError: can't redefine non-configurable property "foo"
+</pre>
+
+<p>後のコードで再定義するためには、"foo" プロパティを設定可能にする必要があります。</p>
+
+<pre class="brush: js example-good">var obj = Object.create({});
+Object.defineProperty(obj, "foo", {value: "bar", configurable: true});
+Object.defineProperty(obj, "foo", {value: "baz", configurable: true});</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Data_structures#Properties">[[Configurable]]</a></li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/cyclic_object_value/index.html b/files/ja/web/javascript/reference/errors/cyclic_object_value/index.html
new file mode 100644
index 0000000000..0731056c8f
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/cyclic_object_value/index.html
@@ -0,0 +1,72 @@
+---
+title: 'TypeError: cyclic object value'
+slug: Web/JavaScript/Reference/Errors/Cyclic_object_value
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Cyclic_object_value
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の例外 "cyclic object value" は、 <a href="https://www.json.org/">JSON</a> の中にオブジェクトの参照が見つかったときに発生します。 {{jsxref("JSON.stringify()")}} はこれを解決しようとせず、これによって失敗します。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox notranslate">TypeError: cyclic object value (Firefox)
+TypeError: Converting circular structure to JSON (Chrome and Opera)
+TypeError: Circular reference in value argument not supported (Edge)
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">エラーの原因</h2>
+
+<p><a href="https://www.json.org/">JSON 形式</a>はオブジェクト参照に対応していません (<a href="http://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03">IETF の草案はありますが</a>)。したがって {{jsxref("JSON.stringify()")}} はこれを解決しようとせず、これによって失敗します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Circular_references" name="Circular_references">循環参照</h3>
+
+<p>次のような循環構造体では、</p>
+
+<pre class="brush: js notranslate">var circularReference = {otherData: 123};
+circularReference.myself = circularReference;
+</pre>
+
+<p>{{jsxref("JSON.stringify()")}} は失敗します。</p>
+
+<pre class="brush: js example-bad notranslate">JSON.stringify(circularReference);
+// TypeError: cyclic object value
+</pre>
+
+<p>循環参照をシリアライズするには、それに対応したライブラリ (例えば <a href="https://github.com/douglascrockford/JSON-js/blob/master/cycle.js">cycle.js</a>) を使用したり、自分自身で循環参照を探してシリアライズ可能な値に置き換える (または削除する) ことを求める解決策を実装することもできます。</p>
+
+<p>次のスニペットは、 {{jsxref("JSON.stringify()")}} の <code>replacer</code> 引数を使用して循環参照を検索してフィルタリングする方法を示しています (これによりデータ損失が発生します)。</p>
+
+<pre class="brush: js notranslate">const getCircularReplacer = () =&gt; {
+ const seen = new WeakSet();
+ return (key, value) =&gt; {
+ if (typeof value === "object" &amp;&amp; value !== null) {
+ if (seen.has(value)) {
+ return;
+ }
+ seen.add(value);
+ }
+ return value;
+ };
+};
+
+JSON.stringify(circularReference, getCircularReplacer());
+// {"otherData":123}
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("JSON.stringify")}}</li>
+ <li><a href="https://github.com/douglascrockford/JSON-js/blob/master/cycle.js">cycle.js</a> – <code>JSON.decycle</code> と <code> JSON.retrocycle</code> という 2 つの関数を導入し、循環構造と dag を JSON でエンコードしてからリカバリーできます。</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/dead_object/index.html b/files/ja/web/javascript/reference/errors/dead_object/index.html
new file mode 100644
index 0000000000..b45b644b14
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/dead_object/index.html
@@ -0,0 +1,51 @@
+---
+title: 'TypeError: can''t access dead object'
+slug: Web/JavaScript/Reference/Errors/Dead_object
+tags:
+ - Addon
+ - Addons
+ - Error
+ - Errors
+ - JavaScript
+translation_of: Web/JavaScript/Reference/Errors/Dead_object
+---
+<div>{{JSSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: can't access dead object
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>メモリ使用の向上とメモリリーク防止のため、Firefox はアドオンに対して、親ドキュメントが破棄された後に DOM オブジェクトへ強い参照を保持することをできなくしています。死んだオブジェクトは、DOM で棄された後にもかかわらず、存続する DOM 要素への強い参照を保持しています。この問題を回避するために、外部ドキュメント内の DOM ノードへの参照を、そのドキュメントに固有のオブジェクトに格納し、ドキュメントがアンロードされるときにクリーンアップするか、または<a href="/ja/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.getWeakReference">弱い参照</a>にするべきです。</p>
+
+<h2 id="オブジェクトが破棄されているか確認する">オブジェクトが破棄されているか確認する</h2>
+
+<p><a href="/ja/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils">Components.utils</a> は特権コードで使用できる <code>isDeadWrapper()</code> メソッドを提供しています。</p>
+
+<pre class="brush: js">if (Components.utils.isDeadWrapper(window)) {
+ // dead
+}</pre>
+
+<p>非特権コードは Component.utils にアクセスできないため、例外をキャッチするしかありません。</p>
+
+<pre class="brush: js">try {
+ String(window);
+}
+catch (e) {
+ console.log("window is likely dead");
+}</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="https://blog.mozilla.org/addons/2012/09/12/what-does-cant-access-dead-object-mean/">What does “can’t access dead object” mean?</a></li>
+ <li><a href="/ja/docs/Extensions/Common_causes_of_memory_leaks_in_extensions">Common causes of memory leaks in extensions</a></li>
+ <li><a href="/ja/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils">Components.utils</a></li>
+ <li><a href="/ja/docs/Mozilla/Zombie_compartments">Zombie Compartments</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/delete_in_strict_mode/index.html b/files/ja/web/javascript/reference/errors/delete_in_strict_mode/index.html
new file mode 100644
index 0000000000..0a96a3c13f
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/delete_in_strict_mode/index.html
@@ -0,0 +1,70 @@
+---
+title: >-
+ SyntaxError: applying the 'delete' operator to an unqualified name is
+ deprecated
+slug: Web/JavaScript/Reference/Errors/Delete_in_strict_mode
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Delete_in_strict_mode
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: applying the 'delete' operator to an unqualified name is deprecated (Firefox)
+SyntaxError: Delete of an unqualified identifier in strict mode. (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a> でのみ {{jsxref("SyntaxError")}}。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>JavaScript では、通常の変数を <code><a href="/ja/docs/Web/JavaScript/Reference/Operators/delete">delete</a></code> 演算子で削除できません。strict モードで、変数を削除しようとするとエラーがスローされ、削除できません。</p>
+
+<p><code>delete</code> 演算子は、オブジェクトのプロパティのみ削除できます。オブジェクトプロパティは、設定可能な場合は "修飾" されます。</p>
+
+<p>一般的に信じられていることと異なり、<code>delete</code> 演算子は直接的なメモリーを開放とは<strong>関係ありません</strong>。メモリー管理は、参照の開放によって間接的に行われます。<a href="/ja/docs/Web/JavaScript/Memory_Management">memory management</a> ページと <code><a href="/ja/docs/Web/JavaScript/Reference/Operators/delete">delete</a></code> 演算子ページで詳細を確認してください。</p>
+
+<p>このエラーは、<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict mode モード</a>でのみ発生します。非 strict モードでは、演算子はただ <code>false</code> を返します。</p>
+
+<h2 id="例">例</h2>
+
+<p>プレーンな変数を削除しようとすると、JavaScript では動作せず、strict モードだとエラーをスローします:</p>
+
+<pre class="brush: js example-bad">'use strict';
+
+var x;
+
+// ...
+
+delete x;
+
+// SyntaxError: applying the 'delete' operator to an unqualified name
+// is deprecated
+</pre>
+
+<p>変数のコンテンツを開放するには、{{jsxref("null")}} を設定します:</p>
+
+<pre class="brush: js example-good">'use strict';
+
+var x;
+
+// ...
+
+x = null;
+
+// x can be garbage collected
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Operators/delete">delete</a></code></li>
+ <li><a href="/ja/docs/Web/JavaScript/Memory_Management">Memory management</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Errors/Cant_delete">TypeError: property "x" is non-configurable and can't be deleted</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.html b/files/ja/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.html
new file mode 100644
index 0000000000..74bbfce1a4
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/deprecated_caller_or_arguments_usage/index.html
@@ -0,0 +1,75 @@
+---
+title: 'ReferenceError: deprecated caller or arguments usage'
+slug: Web/JavaScript/Reference/Errors/Deprecated_caller_or_arguments_usage
+tags:
+ - Errors
+ - JavaScript
+ - Strict Mode
+ - Warning
+translation_of: Web/JavaScript/Reference/Errors/Deprecated_caller_or_arguments_usage
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">Warning: ReferenceError: deprecated caller usage (Firefox)
+Warning: ReferenceError: deprecated arguments usage (Firefox)
+TypeError: 'callee' and 'caller' cannot be accessed in strict mode. (Safari)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>strict モードでのみ、{{jsxref("ReferenceError")}} の警告が発生します。JavaScript の実行は、停止しません。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a> で、{{jsxref("Function.caller")}} か {{jsxref("Function.arguments")}} が使われていますが、それらは使用すべきではありません。なぜならば、それらは関数の呼び出し元をリークし、非標準で、最適化が困難、かつ性能に対して有害な機能のため、非推奨です。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="非推奨の_function.caller_か_arguments.callee.caller">非推奨の <code>function.caller</code> か <code>arguments.callee.caller</code></h3>
+
+<p>{{jsxref("Function.caller")}} と <code><a href="/ja/docs/Web/JavaScript/Reference/Functions/arguments/callee">arguments.callee.caller</a></code> は非推奨です(詳細は参照記事を見てください)。</p>
+
+<pre class="brush: js example-bad">"use strict";
+
+function myFunc() {
+  if (myFunc.caller == null) {
+    return 'The function was called from the top!';
+  } else {
+    return 'This function\'s caller was ' + myFunc.caller;
+  }
+}
+
+myFunc();
+// Warning: ReferenceError: deprecated caller usage
+// "The function was called from the top!"</pre>
+
+<h3 id="Function.arguments"><code>Function.arguments</code></h3>
+
+<p>{{jsxref("Function.arguments")}} は非推奨です(詳細は参照記事を見てください)。</p>
+
+<pre class="brush: js example-bad">"use strict";
+
+function f(n) { g(n - 1); }
+
+function g(n) {
+ console.log('before: ' + g.arguments[0]);
+ if (n &gt; 0) { f(n); }
+ console.log('after: ' + g.arguments[0]);
+}
+
+f(2);
+
+console.log('returned: ' + g.arguments);
+// Warning: ReferenceError: deprecated arguments usage
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features">非推奨の機能、廃止された機能</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">Strict モード</a></li>
+ <li>{{jsxref("Function.arguments")}}</li>
+ <li>{{jsxref("Function.caller")}} と <code><a href="/ja/docs/Web/JavaScript/Reference/Functions/arguments/callee">arguments.callee.caller</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/deprecated_expression_closures/index.html b/files/ja/web/javascript/reference/errors/deprecated_expression_closures/index.html
new file mode 100644
index 0000000000..65c4262c61
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/deprecated_expression_closures/index.html
@@ -0,0 +1,82 @@
+---
+title: 'Warning: expression closures are deprecated'
+slug: Web/JavaScript/Reference/Errors/Deprecated_expression_closures
+tags:
+ - JavaScript
+ - Warning
+ - エラー
+ - 警告
+translation_of: Web/JavaScript/Reference/Errors/Deprecated_expression_closures
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の警告 "expression closures are deprecated" は、標準外の<a href="/ja/docs/Web/JavaScript/Reference/Operators/Expression_closures">式クロージャ</a>構文 (略記関数構文) が使用されたときに発生します。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox">Warning: expression closures are deprecated
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>警告。 JavaScript の実行は中断されません。</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">原因</h2>
+
+<p>標準外の<a href="/ja/docs/Web/JavaScript/Reference/Operators/Expression_closures">式クロージャ</a>構文 (略記関数構文) は非推奨のため、使用すべきではありません。この構文は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1083458">bug 1083458</a> で削除予定であり、削除された後は {{jsxref("SyntaxError")}} が発生します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Deprecated_syntax" name="Deprecated_syntax">非推奨の構文</h3>
+
+<p>式クロージャで、中括弧を省略したり、関数宣言やメソッド定義で return 文を省略したりすることです。</p>
+
+<pre class="brush: js example-bad">var x = function() 1;
+
+var obj = {
+ count: function() 1
+};
+</pre>
+
+<h3 id="Standard_syntax" name="Standard_syntax">標準の構文</h3>
+
+<p>標準外の式クロージャ構文から標準の ECMAScript 構文に変換するためには、波括弧と return ステートメントを追加します。</p>
+
+<pre class="brush: js example-good">var x = function() { return 1; }
+
+var obj = {
+ count: function() { return 1; }
+};
+</pre>
+
+<h3 id="Standard_syntax_using_arrow_functions" name="Standard_syntax_using_arrow_functions">アロー関数を使用した標準の構文</h3>
+
+<p>代わりに<a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a>を使用することもできます。</p>
+
+<pre class="brush: js example-good">var x = () =&gt; 1;</pre>
+
+<h3 id="Standard_syntax_using_shorthand_method_syntax" name="Standard_syntax_using_shorthand_method_syntax">略記メソッド構文を使用した標準構文</h3>
+
+<p>次のように、式クロージャがゲッターとセッターにも見られることがあります。</p>
+
+<pre class="brush: js example-bad">var obj = {
+ get x() 1,
+ set x(v) this.v = v
+};
+</pre>
+
+<p>ES2015 の<a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義</a>で、次のように変換することができます。</p>
+
+<pre class="brush: js example-good">var obj = {
+ get x() { return 1 },
+ set x(v) { this.v = v }
+};
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Expression_closures">式クロージャ</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/deprecated_octal/index.html b/files/ja/web/javascript/reference/errors/deprecated_octal/index.html
new file mode 100644
index 0000000000..e4e6034b5b
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/deprecated_octal/index.html
@@ -0,0 +1,66 @@
+---
+title: 'SyntaxError: "0"-prefixed octal literals and octal escape seq. are deprecated'
+slug: Web/JavaScript/Reference/Errors/Deprecated_octal
+tags:
+ - Error
+ - Errors
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Deprecated_octal
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError:
+"0"-prefixed octal literals and octal escape sequences are deprecated;
+for octal literals use the \"0o\" prefix instead
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a>でのみ {{jsxref("SyntaxError")}}。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>8 進文字と 8 進エスケープシーケンスは非推奨で、strict モードでは {{jsxref("SyntaxError")}} をスローします。ECMAScript 2015 以降では、標準文法として 0 から始まり大文字、または小文字のラテン文字 "O" (<code>0o</code> or <code>0O)</code> が続く文法を使用します。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="0_接頭辞付きの_8_進文字">"0" 接頭辞付きの 8 進文字</h3>
+
+<pre class="brush: js example-bad">"use strict";
+
+03;
+
+// SyntaxError: "0"-prefixed octal literals and octal escape sequences
+// are deprecated</pre>
+
+<h3 id="8_進エスケープシーケンス">8 進エスケープシーケンス</h3>
+
+<pre class="brush: js example-bad">"use strict";
+
+"\251";
+
+// SyntaxError: "0"-prefixed octal literals and octal escape sequences
+// are deprecated
+</pre>
+
+<h3 id="有効な_8_進数">有効な 8 進数</h3>
+
+<p>0 に "o" か "O" が続くものを使用します:</p>
+
+<pre class="brush: js example-good">0o3;
+</pre>
+
+<p>8 進エスケープシーケンスの代わりに、16 進エスケープシーケンスを使用できます:</p>
+
+<pre class="brush: js example-good">'\xA9';</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Octal">字句文法</a></li>
+ <li>
+ <p><a href="/en-US/docs/Web/JavaScript/Reference/Errors/Bad_octal">Warning: 08/09 is not a legal ECMA-262 octal constant</a></p>
+ </li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/deprecated_source_map_pragma/index.html b/files/ja/web/javascript/reference/errors/deprecated_source_map_pragma/index.html
new file mode 100644
index 0000000000..8f64fafdfb
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/deprecated_source_map_pragma/index.html
@@ -0,0 +1,61 @@
+---
+title: >-
+ SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //#
+ instead
+slug: Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - Source maps
+translation_of: Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の警告 "Using <code>//@</code> to indicate sourceURL pragmas is deprecated. Use <code>//#</code> instead" は、 JavaScript の非推奨のソースマップ構文があったときに発生します。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox notranslate">Warning: SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //# instead
+
+Warning: SyntaxError: Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("SyntaxError")}} が発生したという警告です。 JavaScript の実行は停止しません。</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">エラーの原因</h2>
+
+<p>JavaScript のソースに非推奨のソースマップ構文があることです。</p>
+
+<p>通常 JavaScript ソースは、サーバーからの提供を効率化するために、結合と最小化が行われます。<a href="http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/">ソースマップ</a>があると、デバッガーが実行中のコードを元のソースファイルに対応付けすることができます。</p>
+
+<p>IE の JScript エンジンは、<code>//@cc_on</code> の後でページが見つかると、条件付きコンパイルの有効化とみなします。 この IE での競合のために、ソースマップの仕様の構文が変更されました。IE の <a href="https://msdn.microsoft.com/ja/library/8ka90k2e%28v=vs.94%29.aspx">@cc_on 文</a> はあまり知られていない機能ですが、<a href="https://bugs.jquery.com/ticket/13274">jQuery</a> やそのほかのライブラリのソースマップを破壊します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Deprecated_syntax" name="Deprecated_syntax">非推奨の構文</h3>
+
+<p>"@" 記号による構文は非推奨です。</p>
+
+<pre class="brush: js example-bad notranslate">//@ sourceMappingURL=http://example.com/path/to/your/sourcemap.map
+</pre>
+
+<h3 id="Standard_syntax" name="Standard_syntax">標準の構文</h3>
+
+<p>代わりに "#" 記号を使用してください。</p>
+
+<pre class="brush: js example-good notranslate">//# sourceMappingURL=http://example.com/path/to/your/sourcemap.map</pre>
+
+<p>あるいは、JavaScript ファイルに {{HTTPHeader("SourceMap")}} ヘッダーを設定して、コメントを全く表示しないようにすることもできます。</p>
+
+<pre class="brush: js example-good notranslate">SourceMap: /path/to/file.js.map</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Debugger/How_to/Use_a_source_map">ソースマップの使用 – Firefox ツールドキュメント</a></li>
+ <li><a href="http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/">Introduction to source maps – HTML5 rocks</a></li>
+ <li>{{HTTPHeader("SourceMap")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/deprecated_string_generics/index.html b/files/ja/web/javascript/reference/errors/deprecated_string_generics/index.html
new file mode 100644
index 0000000000..24759a56a9
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/deprecated_string_generics/index.html
@@ -0,0 +1,105 @@
+---
+title: 'Warning: String.x is deprecated; use String.prototype.x instead'
+slug: Web/JavaScript/Reference/Errors/Deprecated_String_generics
+tags:
+ - JavaScript
+ - Warning
+ - エラー
+ - 警告
+translation_of: Web/JavaScript/Reference/Errors/Deprecated_String_generics
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の警告で、 Firefox 68 以前で使用されていた String ジェネリックに関するものです。 String ジェネリックは Firefox 68 から削除されました。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox">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
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>警告。 JavaScript の実行は中断されません。</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">原因</h2>
+
+<p>標準外のジェネリック {{jsxref("String")}} のメソッドは非推奨であり、 Firefox 68 で削除されました。 String ジェネリックは、 <code>String</code> インスタンスメソッドを <code>String</code> オブジェクトに提供し、 <code>String</code> の「メソッドを任意のオブジェクトに適用できるようにします。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Deprecated_syntax" name="Deprecated_syntax">非推奨の構文</h3>
+
+<pre class="brush: js example-bad">var num = 15;
+String.replace(num, /5/, '2');</pre>
+
+<h3 id="Standard_syntax" name="Standard_syntax">標準の構文</h3>
+
+<pre class="brush: js example-good">var num = 15;
+String(num).replace(/5/, '2');
+</pre>
+
+<h2 id="Shim">Shim</h2>
+
+<p>対応していないブラウザーで対応できるようにするための Shim です。</p>
+
+<pre class="brush: js">/*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 &lt; methodCount; i++) {
+ assignStringGeneric(methods[i]);
+ }
+}());</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/deprecated_tolocaleformat/index.html b/files/ja/web/javascript/reference/errors/deprecated_tolocaleformat/index.html
new file mode 100644
index 0000000000..685f3537d1
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/deprecated_tolocaleformat/index.html
@@ -0,0 +1,91 @@
+---
+title: 'Warning: Date.prototype.toLocaleFormat is deprecated'
+slug: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat
+tags:
+ - Error
+ - JavaScript
+ - Warning
+translation_of: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox">Warning: Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>警告。 JavaScript の実行は停止しません。</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">エラーの原因</h2>
+
+<p>非標準の {{jsxref("Date.prototype.toLocaleFormat")}} メソッドは非推奨のため、使用すべきではありません。これは C 言語の <code>strftime()</code> 関数が期待するものと同じフォーマットの文字列を使用します。<strong>この関数は Firefox 58 以降ではもう利用できません。</strong></p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Deprecated_syntax" name="Deprecated_syntax">非推奨の構文</h3>
+
+<p>{{jsxref("Date.prototype.toLocaleFormat")}} メソッドは非推奨で、削除される予定です (クロスブラウザーの対応はなく、 Firefox でのみ使用できます)。</p>
+
+<pre class="brush: js example-bad">var today = new Date();
+var date = today.toLocaleFormat('%A, %e. %B %Y');
+
+console.log(date);
+// In German locale
+// "Freitag, 10. März 2017"</pre>
+
+<h3 id="ECMAScript_Intl_API_を使用した代わりの標準構文">ECMAScript Intl API を使用した代わりの標準構文</h3>
+
+<p>ECMA-402 (ECMAScript Intl API) 標準では、言語に敏感な日付と時刻の書式設定を可能にする標準的なオブジェクトとメソッドを指定しています (Chrome 24+、Firefox 29+、IE11+、Safari10+ で使用できます)。</p>
+
+<p>ある日付のフォーマットを指定する場合、{{jsxref("Date.prototype.toLocaleDateString")}} メソッドを使用すべきです。</p>
+
+<pre class="brush: js example-good">var today = new Date();
+var options = { weekday: 'long', year: 'numeric',
+ month: 'long', day: 'numeric' };
+var date = today.toLocaleDateString('de-DE', options);
+
+console.log(date);
+// "Freitag, 10. März 2017"
+</pre>
+
+<p>または、{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} オブジェクトを使用できます。これにより、ほとんど計算が完了したオブジェクトをキャッシュして、書式設定が高速になります。これは、日付のフォーマットを繰り返すときに役立ちます。</p>
+
+<pre class="brush: js example-good">var options = { weekday: 'long', year: 'numeric',
+ month: 'long', day: 'numeric' };
+var dateFormatter = new Intl.DateTimeFormat('de-DE', options)
+
+var dates = [Date.UTC(2012, 11, 20, 3, 0, 0),
+ Date.UTC(2014, 04, 12, 8, 0, 0)];
+
+dates.forEach(date =&gt; console.log(dateFormatter.format(date)));
+
+// "Donnerstag, 20. Dezember 2012"
+// "Montag, 12. Mai 2014"
+</pre>
+
+<h3 id="Alternative_standard_syntax_using_Date_methods" name="Alternative_standard_syntax_using_Date_methods">Date メソッドを使用した代わりの標準構文</h3>
+
+<p>{{jsxref("Date")}} オブジェクトは、カスタム日付文字列を構築するいくつかのメソッドを提供しています。</p>
+
+<pre class="brush: js example-bad">(new Date()).toLocaleFormat("%Y%m%d");
+// "20170310"
+</pre>
+
+<p>以下のように変換できます。</p>
+
+<pre class="brush: js example-good">let now = new Date();
+let date = now.getFullYear() * 10000 +
+ (now.getMonth() + 1) * 100 + now.getDate();
+
+console.log(date);
+// "20170310"</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.toLocaleFormat")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleDateString")}}</li>
+ <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/equal_as_assign/index.html b/files/ja/web/javascript/reference/errors/equal_as_assign/index.html
new file mode 100644
index 0000000000..e8fa400bf1
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/equal_as_assign/index.html
@@ -0,0 +1,54 @@
+---
+title: 'SyntaxError: test for equality (==) mistyped as assignment (=)?'
+slug: Web/JavaScript/Reference/Errors/Equal_as_assign
+tags:
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Equal_as_assign
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">Warning: SyntaxError: test for equality (==) mistyped as assignment (=)?
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a> でのみ、{{jsxref("SyntaxError")}} の警告が出ます。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>通常、等価テスト(<code>==</code>)が予想されるところで、代入 (<code>=</code>)が行われています。デバッグを行いやすくするために、(厳密な警告が可能になっている)JavaScript は、このパターンについて警告を出します。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="条件式内での代入">条件式内での代入</h3>
+
+<p>(<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/if...else">if...else</a></code> のような)条件式内で、ダン純名代入を行わないことをお勧めします。なぜならば、コードを一目見たときに、代入は等価と混同しやすいからです。たとえば、次のコードは使用しないでください:</p>
+
+<pre class="brush: js example-bad">if (x = y) {
+ // 正しいことを実行する。
+}
+</pre>
+
+<p>条件式内で代入をする必要がある場合、一般t京奈方法は代入の周りに追加の括弧を置くことです。たとえば:</p>
+
+<pre class="brush: js">if ((x = y)) {
+ // 正しいことを実行する。
+}</pre>
+
+<p>または、, 比較演算(たとえば、<code>==</code> や <code>===</code>)を使用したいのかもしれません:</p>
+
+<pre class="brush: js">if (x == y) {
+ // 正しいことを実行する。
+}</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">Strict モード</a></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/if...else">if...else</a></code></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators">比較演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html b/files/ja/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html
new file mode 100644
index 0000000000..47f846f064
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/for-each-in_loops_are_deprecated/index.html
@@ -0,0 +1,168 @@
+---
+title: 'Warning: JavaScript 1.6''s for-each-in loops are deprecated'
+slug: Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated
+tags:
+ - JavaScript
+ - Warning
+translation_of: Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">Warning: JavaScript 1.6's for-each-in loops are deprecated; consider using ES6 for-of instead
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>警告</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>JavaScript 1.6 の {{jsxref("Statements/for_each...in", "for each (variable in obj)")}} ステートメントは非推奨で、近い将来削除される予定です。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="オブジェクトの反復">オブジェクトの反復</h3>
+
+<p>特定のオブジェクトの値を反復するために、{{jsxref("Statements/for_each...in", "for each...in")}} が使用されています。</p>
+
+<h4 id="非推奨の構文">非推奨の構文</h4>
+
+<pre class="brush: js example-bad">var object = { a: 10, b: 20 };
+
+for each (var x in object) {
+ console.log(x); // 10
+ // 20
+}
+</pre>
+
+<h4 id="代わりの標準構文">代わりの標準構文</h4>
+
+<p>指定したオブジェクトのキーを反復して、ループ内のそれぞれの値を取得するために、標準の {{jsxref("Statements/for...in", "for...in")}} ループを使用できます:</p>
+
+<pre class="brush: js example-good">var object = { a: 10, b: 20 };
+
+for (var key in object) {
+ var x = object[key];
+ console.log(x); // 10
+ // 20
+}
+</pre>
+
+<p>または、{jsxref("Statements/for...of", "for...of")}}(ES2015)と {{jsxref("Object.values")}}(ES2017)を使用して、特定のオブジェクトの配列値を取得して、次のように反復処理できます:</p>
+
+<pre class="brush: js example-good">var object = { a: 10, b: 20 };
+
+for (var x of Object.values(object)) {
+ console.log(x); // 10
+ // 20
+}
+</pre>
+
+<h3 id="配列の反復">配列の反復</h3>
+
+<p>{{jsxref("Statements/for_each...in", "for each...in")}} は、特定の配列要素を反復するために使用されていました。</p>
+
+<h4 id="非推奨の構文_2">非推奨の構文</h4>
+
+<pre class="brush: js example-bad">var array = [10, 20, 30];
+
+for each (var x in array) {
+ console.log(x); // 10
+ // 20
+ // 30
+}
+</pre>
+
+<h4 id="代わりの標準構文_2">代わりの標準構文</h4>
+
+<p>{{jsxref("Statements/for...of", "for...of")}}(ES2015)で同様のループができます。</p>
+
+<pre class="brush: js example-good">var array = [10, 20, 30];
+
+for (var x of array) {
+ console.log(x); // 10
+ // 20
+ // 30
+}
+</pre>
+
+<h3 id="null_の可能性がある配列の反復">null の可能性がある配列の反復</h3>
+
+<p>指定した値が <code>null</code> か <code>undefined</code> だった場合、 {{jsxref("Statements/for_each...in", "for each...in")}} は何もしませんが、{{jsxref("Statements/for...of", "for...of")}} は例外をスローします。</p>
+
+<h4 id="非推奨の構文_3">非推奨の構文</h4>
+
+<pre class="brush: js example-bad">function func(array) {
+ for each (var x in array) {
+ console.log(x);
+ }
+}
+func([10, 20]); // 10
+ // 20
+func(null); // prints nothing
+func(undefined); // prints nothing
+</pre>
+
+<h4 id="代わりの標準構文_3">代わりの標準構文</h4>
+
+<p>{{jsxref("Statements/for_each...in", "for each...in")}} ステートメントを書き換えて、{{jsxref("Statements/for...of", "for...of")}} でも <code>null</code> か <code>undefined</code> を扱えるようにするには、{{jsxref("Statements/for...of", "for...of")}} の周囲をガードする必要があります。</p>
+
+<pre class="brush: js example-good">function func(array) {
+ if (array) {
+ for (var x of array) {
+ console.log(x);
+ }
+ }
+}
+func([10, 20]); // 10
+ // 20
+func(null); // prints nothing
+func(undefined); // prints nothing
+</pre>
+
+<h3 id="オブジェクトのキーバリューペアを反復する">オブジェクトのキー/バリューペアを反復する</h3>
+
+<h4 id="非推奨の構文_4">非推奨の構文</h4>
+
+<p>{{jsxref("Statements/for_each...in", "for each...in")}} と非推奨の {{jsxref("Iterator")}} オブジェクトを使用した、特定のオブジェクトのキー/バリューペアを反復する非推奨の語彙があります。</p>
+
+<pre class="brush: js example-bad">var object = { a: 10, b: 20 };
+
+for each (var [key, value] in Iterator(object)) {
+ console.log(key, value); // "a", 10
+ // "b", 20
+}
+</pre>
+
+<h4 id="代わりの標準構文_4">代わりの標準構文</h4>
+
+<p>指定したオブジェクトのキーを反復して、ループ内のそれぞれの値を取得するために、標準の {{jsxref("Statements/for...in", "for...in")}} ループを使用できます:</p>
+
+<pre class="brush: js example-good">var object = { a: 10, b: 20 };
+
+for (var key in object) {
+ var value = object[key];
+ console.log(key, value); // "a", 10
+ // "b", 20
+}
+</pre>
+
+<p>または、{jsxref("Statements/for...of", "for...of")}}(ES2015)と {{jsxref("Object.values")}}(ES2017)を使用して、特定のオブジェクトの配列値を取得して、次のように反復処理できます:</p>
+
+<pre class="brush: js example-good">var object = { a: 10, b: 20 };
+
+for (var [key, value] of Object.entries(object)) {
+ console.log(key, value); // "a", 10
+ // "b", 20
+}
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Statements/for...of", "for...of")}}</li>
+ <li>{{jsxref("Object.values")}}</li>
+ <li>{{jsxref("Object.entries")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/getter_only/index.html b/files/ja/web/javascript/reference/errors/getter_only/index.html
new file mode 100644
index 0000000000..831fb54785
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/getter_only/index.html
@@ -0,0 +1,83 @@
+---
+title: 'TypeError: setting getter-only property "x"'
+slug: Web/JavaScript/Reference/Errors/Getter_only
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - Strict Mode
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Getter_only
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: setting getter-only property "x" (Firefox)
+TypeError: Cannot set property "prop" of #&lt;Object&gt; which has only a getter (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a>でのみ、{{jsxref("TypeError")}}。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Functions/get">getter</a> しか指定されていないプロパティに、新しい値を設定しようとしています。非 strict モードでは暗黙裡に無視されるだけですが、<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a>では {{jsxref("TypeError")}} がスローされます。</p>
+
+<h2 id="例">例</h2>
+
+<p>下記の例では、プロパティの getter の設定方法を示しています。<a href="/ja/docs/Web/JavaScript/Reference/Functions/set">setter</a> は指定していないため、<code>temperature</code> プロパティに <code>30</code> をセットしようとすると、<code>TypeError</code> がスローされます。詳細は {{jsxref("Object.defineProperty()")}} ページを見てください。</p>
+
+<pre class="brush: js example-bad">"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 getter-only property "temperature"</pre>
+
+<p>このエラーを修正するには、temperature プロパティに値を設定しようとしている 16 行目を取り除くか、次のように <a href="/ja/docs/Web/JavaScript/Reference/Functions/set">setter</a> を実装します:</p>
+
+<pre class="brush: js example-good highlight[12]">"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 }]</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Object.defineProperties()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/identifier_after_number/index.html b/files/ja/web/javascript/reference/errors/identifier_after_number/index.html
new file mode 100644
index 0000000000..1903ac1fda
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/identifier_after_number/index.html
@@ -0,0 +1,53 @@
+---
+title: 'SyntaxError: identifier starts immediately after numeric literal'
+slug: Web/JavaScript/Reference/Errors/Identifier_after_number
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Identifier_after_number
+---
+<div>{{JSSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: identifier starts immediately after numeric literal (Firefox)
+SyntaxError: Unexpected number (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>{{Glossary("Identifier", "identifiers")}} と呼ばれる変数名は特定のルールに従う必要があり、それに反しています!</p>
+
+<p>JavaScript の識別子は文字かアンダースコア (_)、ドル記号 ($) で始まる必要があります。数値からは始められません! 2 文字目以降でのみ、数値 (0-9) を使用できます。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="数値文字から始まる変数名">数値文字から始まる変数名</h3>
+
+<p>JavaScript は変数名を数値から始めることはできません。次は失敗です:</p>
+
+<pre class="brush: js example-bad">var 1life = 'foo';
+// SyntaxError: identifier starts immediately after numeric literal
+
+var foo = 1life;
+// SyntaxError: identifier starts immediately after numeric literal
+</pre>
+
+<p>数値始まりにならないように、変数名を変更する必要があります。</p>
+
+<pre class="brush: js example-good">var life1 = 'foo';
+var foo = life1;
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar">字句文法</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide">JavaScript ガイド</a>の<a href="/ja/docs/Web/JavaScript/Guide/Grammar_and_types#Variables">変数</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/illegal_character/index.html b/files/ja/web/javascript/reference/errors/illegal_character/index.html
new file mode 100644
index 0000000000..7f3ed44b20
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/illegal_character/index.html
@@ -0,0 +1,75 @@
+---
+title: 'SyntaxError: illegal character'
+slug: Web/JavaScript/Reference/Errors/Illegal_character
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Illegal_character
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: illegal character (Firefox)
+SyntaxError: Invalid or unexpected token (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>コードのこの位置に属していない無効なトークンまたは予期しないトークンがあります。シンタックスハイライトをサポートしているエディターを使用して、マイナス記号 (<code> - </code>) とダッシュ (<code> – </code>) や、クオート (<code> " </code>) と非標準のクオーテーション記号 (<code> “ </code>) のようなミスがないか、コードを注意深くチェックしてください。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="文字のミスマッチ">文字のミスマッチ</h3>
+
+<p>いくつかの文字は似たように見えますが、パーサーがコードを解釈できなくなります。</p>
+
+<pre class="brush: js example-bad">“This looks like a string”;
+// SyntaxError: illegal character
+
+42 – 13;
+// SyntaxError: illegal character
+</pre>
+
+<p>これは動作します:</p>
+
+<pre class="brush: js example-good">"This is actually a string";
+
+42 - 13;
+</pre>
+
+<h3 id="文字の付け忘れ">文字の付け忘れ</h3>
+
+<p>さまざまな個所で、文字を付け忘れやすいです。</p>
+
+<pre class="brush: js example-bad">var colors = ['#000', #333', '#666'];
+// SyntaxError: illegal character
+</pre>
+
+<p><code><strong>'</strong>#333'</code> に付け忘れたクオートを追加します。</p>
+
+<pre class="brush: js example-good">var colors = ['#000', '#333', '#666'];</pre>
+
+<h3 id="隠れた文字">隠れた文字</h3>
+
+<p>外部のソースをコピー &amp; ペーストすると、不正な文字が含まれていることがあります。気を付けて!</p>
+
+<pre class="brush: js example-bad">var foo = 'bar';​
+// SyntaxError: illegal character
+</pre>
+
+<p>Vim のようなエディターでこのコードを調査すると、実際には <a href="https://en.wikipedia.org/wiki/Zero-width_space">zero-width space (ZWSP) (U+200B)</a> 文字があることが分かります。</p>
+
+<pre class="brush: js">var foo = 'bar';​&lt;200b&gt;</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar">字句文法</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/in_operator_no_object/index.html b/files/ja/web/javascript/reference/errors/in_operator_no_object/index.html
new file mode 100644
index 0000000000..3bf515574d
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/in_operator_no_object/index.html
@@ -0,0 +1,75 @@
+---
+title: 'TypeError: cannot use ''in'' operator to search for ''x'' in ''y'''
+slug: Web/JavaScript/Reference/Errors/in_operator_no_object
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/in_operator_no_object
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の例外 "right-hand side of 'in' should be an object" は、 <a href="/en-US/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 演算子</a>が文字列、数値、その他のプリミティブ型の中を検索するために使用された場合に発生します。これは、あるプロパティがオブジェクト内にあることをチェックする用途でしか使用することができません。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox notranslate">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)
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">原因</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 演算子</a>はあるプロパティがオブジェクト内にあることをチェックする用途でしか使用することができません。文字列、数値、その他のプリミティブ型の中を検索することはできません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Searching_in_strings" name="Searching_in_strings">文字列内の検索</h3>
+
+<p>他のプログラミング言語 (Python など) とは異なり、 <a href="/ja/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 演算子</a>を使用して文字列の中を検索することはできません。</p>
+
+<pre class="brush: js example-bad notranslate">"Hello" in "Hello World";
+// TypeError: cannot use 'in' operator to search for 'Hello' in 'Hello World'</pre>
+
+<p>Instead you will need to use {{jsxref("String.prototype.indexOf()")}}, for example.</p>
+
+<pre class="brush: js example-good notranslate">"Hello World".indexOf("Hello") !== -1;
+// true</pre>
+
+<h3 id="The_operand_cant_be_null_or_undefined" name="The_operand_cant_be_null_or_undefined">オペランドを null や undefined にすることはできない</h3>
+
+<p>調査対象のオブジェクトが実際に {{jsxref("null")}} や {{jsxref("undefined")}} になっていないことを確認してください。</p>
+
+<pre class="brush: js example-bad notranslate">var foo = null;
+"bar" in foo;
+// TypeError: cannot use 'in' operator to search for 'bar' in 'foo' (Chrome)
+// TypeError: right-hand side of 'in' should be an object, got null (Firefox)
+</pre>
+
+<p><code>in</code> 演算子は常にオブジェクトを期待します。</p>
+
+<pre class="brush: js example-good notranslate">var foo = { baz: "bar" };
+"bar" in foo; // false
+
+"PI" in Math; // true
+"pi" in Math; // false
+</pre>
+
+<h3 id="Searching_in_arrays" name="Searching_in_arrays">配列の中の検索</h3>
+
+<p><code>in</code> 演算子を使用して {{jsxref("Array")}} オブジェクトの中を検索するときは注意してください。 <code>in</code> 演算子は添字の数値をチェックするのであり、その位置の値をチェックするのではありません。</p>
+
+<pre class="brush: js notranslate">var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
+3 in trees; // true
+"oak" in trees; // false</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/jas/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/index.html b/files/ja/web/javascript/reference/errors/index.html
new file mode 100644
index 0000000000..c37da5df66
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/index.html
@@ -0,0 +1,25 @@
+---
+title: JavaScript エラーリファレンス
+slug: Web/JavaScript/Reference/Errors
+tags:
+ - Debugging
+ - Error
+ - Errors
+ - Exception
+ - JavaScript
+ - exceptions
+translation_of: Web/JavaScript/Reference/Errors
+---
+<p>{{jsSidebar("Errors")}}</p>
+
+<p>以下に、 JavaScript で発生するエラーのリストがあります。これらのエラーはデバッグを大いに助けてくれますが、報告される問題がいつも直ちに明快とは限りません。以下のページでは、これらのエラーについて詳しく説明します。どのエラーも {{jsxref("Error")}} オブジェクトを基礎としたオブジェクトであり、<code>name</code> と <code>message</code> を有しています。</p>
+
+<p>ウェブコンソールに表示されたエラーには、コードにある問題を速やかに理解するのに役立つ、関連ページへのリンクが含まれていることがあります。</p>
+
+<p>JavaScript のエラーを修正するための初心者向け導入用チュートリアルについては、<a href="/ja/docs/Learn/JavaScript/First_steps/What_went_wrong">何が間違っている? JavaScript のトラブルシューティング</a>を参照してください。</p>
+
+<h2 id="List_of_errors" name="List_of_errors">エラーのリスト</h2>
+
+<p>このリストでは、各ページが名前 (エラーの種別) とメッセージ (より詳細で読解可能なエラーメッセージ) によってリストアップされています。これら 2 つのプロパティが、エラーの理解と解決の出発点となります。詳細は、以下のリンクを参照してください!</p>
+
+<p>{{ListSubPages("/ja/docs/Web/JavaScript/Reference/Errors")}}</p>
diff --git a/files/ja/web/javascript/reference/errors/invalid_array_length/index.html b/files/ja/web/javascript/reference/errors/invalid_array_length/index.html
new file mode 100644
index 0000000000..8cad04b6be
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/invalid_array_length/index.html
@@ -0,0 +1,77 @@
+---
+title: 'RangeError: invalid array length'
+slug: Web/JavaScript/Reference/Errors/Invalid_array_length
+tags:
+ - Errors
+ - JavaScript
+ - RangeError
+translation_of: Web/JavaScript/Reference/Errors/Invalid_array_length
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">RangeError: invalid array length (Firefox)
+RangeError: Invalid array length (Chrome)
+RangeError: Invalid array buffer length (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("RangeError")}}</p>
+
+<h2 id="何が悪かったの">何が悪かったの?</h2>
+
+<p>以下のいずれかです:</p>
+
+<ul>
+ <li>負数や 2<sup>32</sup> 以上の値の数を {{jsxref("Array")}} や {{jsxref("ArrayBuffer")}} に設定した。</li>
+ <li>{{jsxref("Array.length")}} プロパティを負数や 2<sup>32</sup> 以上の値の数に設定した。</li>
+</ul>
+
+<p>なぜ <code>Array</code> と <code>ArrayBuffer</code> の length が制限されるのでしょうか?<code>配列</code>と <code>ArrayBuffer</code> の <code>length</code> プロパティは、符号なし 32-bit 整数を表し、値は 0 から 2<sup><font size="2">32-1</font></sup> の範囲の値しか保持できません。</p>
+
+<p>コンストラクタを使用して<code>配列</code>を生成した場合、最初の引数が<code><font face="Courier New">配列</font></code>の length と解釈されるように、リテラル表記を使用したいかもしれません。</p>
+
+<p>さもなければ、length プロパティが設定される前、またはコンストラクタの引数として使用される前に、length を制限したいかもしれません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<pre class="brush: js example-bad">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; // length プロパティに -1 を設定
+
+let b = new Array(Math.pow(2, 32) - 1);
+b.length = b.length + 1; // length プロパティに 2^32 を設定
+</pre>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<pre class="brush: js example-good">[ 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 is the hexadecimal notation for 2^32 - 1
+// which can also be written as (-1 &gt;&gt;&gt; 0)
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+ <li>{{jsxref("Array.length")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.html b/files/ja/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.html
new file mode 100644
index 0000000000..b671a41d1b
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/invalid_assignment_left-hand_side/index.html
@@ -0,0 +1,54 @@
+---
+title: 'ReferenceError: invalid assignment left-hand side'
+slug: Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side
+tags:
+ - Errors
+ - JavaScript
+ - ReferenceError
+translation_of: Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">ReferenceError: invalid assignment left-hand side
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("ReferenceError")}}。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>どこかに予想外の割り当てがあります。たとえば、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Assignment_Operators">代入演算子</a> と <a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators">比較演算子</a> にミスマッチがあるせいかもしれません。"<code>=</code>" 記号が 1 つの場合は変数に値を割り当てる一方、"<code>==</code>" か "<code>===</code>" 演算子は値を比較します。</p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: js example-bad">if (Math.PI = 3 || Math.PI = 4) {
+ console.log('no way!');
+}
+// ReferenceError: invalid assignment left-hand side
+
+var str = 'Hello, '
++= 'is it me '
++= 'you\'re looking for?';
+// ReferenceError: invalid assignment left-hand side
+</pre>
+
+<p><code>if</code> ステートメントでは、比較演算子("==")が必要ですし、文字連結にはプラス("+")演算子が必要です。</p>
+
+<pre class="brush: js example-good">if (Math.PI == 3 || Math.PI == 4) {
+ console.log('no way!');
+}
+
+var str = 'Hello, '
++ 'from the '
++ 'other side!';
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Assignment_Operators">代入演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators">比較演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/invalid_const_assignment/index.html b/files/ja/web/javascript/reference/errors/invalid_const_assignment/index.html
new file mode 100644
index 0000000000..e446935a23
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/invalid_const_assignment/index.html
@@ -0,0 +1,91 @@
+---
+title: 'TypeError: invalid assignment to const "x"'
+slug: Web/JavaScript/Reference/Errors/Invalid_const_assignment
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Invalid_const_assignment
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: invalid assignment to const "x" (Firefox)
+TypeError: Assignment to constant variable. (Chrome)
+TypeError: Redeclaration of const 'x' (IE/Edge)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか??</h2>
+
+<p>定数は、通常の実行中にプログラムによって変更できない値です。再代入も再宣言もできません。JavaScript では、定数を <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/const">const</a></code> キーワードで宣言します。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効な再宣言">無効な再宣言</h3>
+
+<p>同じブロックスコープで同じ定数名に値を代入すると、エラーがスローされます。</p>
+
+<pre class="brush: js example-bad">const COLUMNS = 80;
+
+// ...
+
+COLUMNS = 120; // TypeError: invalid assignment to const `COLUMNS'</pre>
+
+<h3 id="エラーを修正">エラーを修正</h3>
+
+<p>エラーを修正するには、複数の選択肢があります。問題となっている定数で、達成しようとしていたことを確認してください。</p>
+
+<h4 id="リネーム">リネーム</h4>
+
+<p>ほかの定数を宣言するつもりだったならば、ほかの名前を選んで、リネームしてください。この定数名はすでにこのスコープで使用されています。</p>
+
+<pre class="brush: js example-good">const COLUMNS = 80;
+const WIDE_COLUMNS = 120;</pre>
+
+<h4 id="const、let、var"><code>const</code>、<code>let</code>、<code>var</code>?</h4>
+
+<p>定数を宣言するつもりがなかったのなら、const を使用しないでください。ブロックスコープの変数なら、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code> で、グローバルスコープの変数なら <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/var">var</a></code> で宣言してください。</p>
+
+<pre class="brush: js example-good">let columns = 80;
+
+// ...
+
+let columns = 120;
+</pre>
+
+<h4 id="スコープ">スコープ</h4>
+
+<p>正しいスコープにあるか確認してください。たとえば、この定数はこのスコープにあるべきなのでしょうか?それとも関数にあるべきなのでしょうか?</p>
+
+<pre class="brush: js example-good">const COLUMNS = 80;
+
+function setupBigScreenEnvironment() {
+ const COLUMNS = 120;
+}</pre>
+
+<h3 id="const_と不変性"><code>const</code> と不変性</h3>
+
+<p><code>const</code> 宣言は、値への読み取り専用参照を作成します。それが保持している値が不変であることを意味するものでは<strong>なく</strong>、単に変数識別子を再割り当てできないだけです。たとえば、コンテンツがオブジェクトである場合、オブジェクト自体は依然として変更可能であることを意味します。 つまり、変数に格納されている値を変更することはできません:</p>
+
+<pre class="brush: js example-bad">const obj = {foo: 'bar'};
+obj = {foo: 'baz'}; // TypeError: invalid assignment to const `obj'
+</pre>
+
+<p>しかし、変数内のプロパティは変更できます:</p>
+
+<pre class="brush: js example-good">obj.foo = 'baz';
+obj; // Object { foo: "baz" }</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/const">const</a></code></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/var">var</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/invalid_date/index.html b/files/ja/web/javascript/reference/errors/invalid_date/index.html
new file mode 100644
index 0000000000..eda2efa96f
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/invalid_date/index.html
@@ -0,0 +1,54 @@
+---
+title: 'RangeError: invalid date'
+slug: Web/JavaScript/Reference/Errors/Invalid_date
+tags:
+ - Errors
+ - JavaScript
+ - RangeError
+translation_of: Web/JavaScript/Reference/Errors/Invalid_date
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">RangeError: invalid date (Firefox)
+RangeError: invalid time value (Chrome)
+RangeError: Provided date is not in valid range (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("RangeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>{{jsxref("Date")}} か {{jsxref("Date.parse()")}} に無効な日付につながる文字列が渡されました。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<p>ISO フォーマットの文字列に不正な要素の値を含む認識できない文字列や日付は、通常 {{jsxref("NaN")}} を返します。しかし、Firefox における次のケースのように、実装によっては不適合な ISO フォーマットの文字列は <code>RangeError: invalid date</code> をスローします:</p>
+
+<pre class="brush: js example-bad">new Date('foo-bar 2014');
+new Date('2014-25-23').toISOString();
+new Date('foo-bar 2014').toString();
+</pre>
+
+<p>一方、これは Firefox で {{jsxref("NaN")}} を返します:</p>
+
+<pre class="brush: js example-bad">Date.parse('foo-bar 2014'); // NaN</pre>
+
+<p>詳細は {{jsxref("Date.parse()")}} ドキュメントをご覧ください。</p>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<pre class="brush: js example-good">new Date('05 October 2011 14:48 UTC');</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Date")}}</li>
+ <li>{{jsxref("Date.prototype.parse()")}}</li>
+ <li>{{jsxref("Date.prototype.toISOString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/invalid_for-in_initializer/index.html b/files/ja/web/javascript/reference/errors/invalid_for-in_initializer/index.html
new file mode 100644
index 0000000000..bb8948a49e
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/invalid_for-in_initializer/index.html
@@ -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:
+ - Error
+ - Errors
+ - JavaScript
+ - Strict Mode
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Invalid_for-in_initializer
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: for-in loop head declarations may not have initializers (Firefox)
+
+SyntaxError: for-in loop variable declaration may not have an initializer. (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a>でのみ、{{jsxref("SyntaxError")}}。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a> ループのヘッダーに初期化式が含まれています。つまり、変数を宣言し、値を代入しています |<code>for (var i = 0 in obj)</code>|。非 strict モードでは、このヘッダー宣言は暗黙裡に無視され、<code>|for (var i in obj)|</code> のように動作します。しかし、<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a>では <code>SyntaxError</code> がスローされます。</p>
+
+<h2 id="例">例</h2>
+
+<p>この例は <code>SyntaxError</code> をスローします:</p>
+
+<pre class="brush: js example-bad">"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
+</pre>
+
+<h3 id="有効な_for-in_ループ">有効な for-in ループ</h3>
+
+<p>for-in ループのヘッダーから初期化子 (<code>i = 0</code>) を削除します。</p>
+
+<pre class="brush: js example-good">"use strict";
+
+var obj = {a: 1, b: 2, c: 3 };
+
+for (var i in obj) {
+ console.log(obj[i]);
+}
+</pre>
+
+<h3 id="Array_イテレーション">Array イテレーション</h3>
+
+<p>for...in ループを <a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in#Array_iteration_and_for...in">Array イテレーションで使用すべきではありません</a>。{{jsxref("Array")}} を反復するのに、<code>for-in</code> ループの代わりに <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for">for</a></code> ループを使用するつもりはありますか?<code>for</code> ループでは、初期化子を設定できます:</p>
+
+<pre class="brush: js example-good">var arr = [ "a", "b", "c" ]
+
+for (var i = 2; i &lt; arr.length; i++) {
+ console.log(arr[i]);
+}
+
+// "c"</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a></code></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></code> – strict モードと非 strict モードどちらでも初期化できない。</li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for">for</a></code> – array イテレーションに向いており、初期化子を定義できる。</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/invalid_for-of_initializer/index.html b/files/ja/web/javascript/reference/errors/invalid_for-of_initializer/index.html
new file mode 100644
index 0000000000..99792a7afe
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/invalid_for-of_initializer/index.html
@@ -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:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Invalid_for-of_initializer
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">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)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a> ループのヘッダ―に初期化式が含まれています。つまり、変数が宣言され、値が代入されています |<code>for (var i = 0 of iterable)</code>|。これは、for-of ループでは許可されていません。初期化できる <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for">for</a></code> ループを使用した方が良いかもしれません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="不正な_for-of_ループ">不正な <code>for-of</code> ループ</h3>
+
+<pre class="brush: js example-bad">let iterable = [10, 20, 30];
+
+for (let value = 50 of iterable) {
+ console.log(value);
+}
+
+// SyntaxError: a declaration in the head of a for-of loop can't
+// have an initializer</pre>
+
+<h3 id="有効な_for-of_ループ">有効な <code>for-of</code> ループ</h3>
+
+<p><code>for-of</code> ループのヘッダーから初期化子 (<code>value = 50</code>) を取り除く必要があります。おそらく、50 をオフセット値にしようとしているのでしょうから、たとえばループのボディー内で 50 を加えられます。</p>
+
+<pre class="brush: js example-good">let iterable = [10, 20, 30];
+
+for (let value of iterable) {
+ value += 50;
+ console.log(value);
+}
+// 60
+// 70
+// 80
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></code></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a></code> – strict モードでは同様に初期化できない (<a href="/ja/docs/Web/JavaScript/Reference/Errors/Invalid_for-in_initializer">SyntaxError: for-in loop head declarations may not have initializers</a>)</li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for">for</a></code> – 反復時に初期化子を許可している</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.html b/files/ja/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.html
new file mode 100644
index 0000000000..5279e67cfa
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/invalid_right_hand_side_instanceof_operand/index.html
@@ -0,0 +1,62 @@
+---
+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
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">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)</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/instanceof"><code>instanceof</code> 演算子</a> は、右側のオペランドがコンストラクターオブジェクトであることを想定しています。つまり、右側のオペランドは <code>prototype</code> プロパティを持ち、呼び出し可能であるオブジェクトである必要があります。</p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: js example-bad">"test" instanceof ""; // TypeError: invalid 'instanceof' operand ""
+42 instanceof 0; // TypeError: invalid 'instanceof' operand 0
+
+function Foo() {}
+var f = Foo(); // Foo() is called and returns undefined
+var x = new Foo();
+
+x instanceof f; // TypeError: invalid 'instanceof' operand f
+x instanceof x; // TypeError: x is not a function
+</pre>
+
+<p>これらのエラータイプを修正するには、<a href="/ja/docs/Web/JavaScript/Reference/Operators/instanceof"><code>instanceof</code> 演算子</a> を <a href="/ja/docs/Web/JavaScript/Reference/Operators/typeof"><code>typeof</code> 演算子</a> に置き換えるか、評価結果の代わりに関数名を使用するようにしてください。</p>
+
+<pre class="brush: js example-good">typeof "test" == "string"; // true
+typeof 42 == "number" // true
+
+function Foo() {}
+var f = Foo; // Do not call Foo.
+var x = new Foo();
+
+x instanceof f; // true
+x instanceof Foo; // true
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/instanceof"><code>instanceof</code> 演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/typeof"><code>typeof</code> 演算子</a></li>
+</ul>
+
+<p> </p>
diff --git a/files/ja/web/javascript/reference/errors/is_not_iterable/index.html b/files/ja/web/javascript/reference/errors/is_not_iterable/index.html
new file mode 100644
index 0000000000..6da6ca9b19
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/is_not_iterable/index.html
@@ -0,0 +1,105 @@
+---
+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
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: 'x' is not iterable (Firefox, Chrome)
+TypeError: 'x' is not a function or its return value is not iterable (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Guide/Loops_and_iteration#for...of_statement">for…of</a> の右側や {{jsxref("Promise.all")}} や {{jsxref("TypedArray.from")}} のような関数の引数として与えられた値が <a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復可能オブジェクト</a> ではありません。反復可能なものは、{{jsxref("Array")}} や {{jsxref("String")}}、{{jsxref("Map")}}、ジェネレーターの結果のようなビルトイン反復可能型や <a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">反復処理プロトコル</a> を実装したオブジェクトです。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="オブジェクトのプロパティを反復処理する">オブジェクトのプロパティを反復処理する</h3>
+
+<p>JavaScript では、<a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">反復処理プロトコル</a> を実装していない限り {{jsxref("Object")}} は反復処理できません。それゆえ、オブジェクトのプロパティを反復処理するために <a href="/ja/docs/Web/JavaScript/Guide/Loops_and_iteration#for...of_statement">for…of</a> を使用することはできません。</p>
+
+<pre class="brush: js example-bad">var obj = { 'France': 'Paris', 'England': 'London' };
+for (let p of obj) { // TypeError: obj is not iterable
+ // …
+}
+</pre>
+
+<p>代わりに、オブジェクトのプロパティを反復処理するためには {{jsxref("Object.keys")}} か {{jsxref("Object.entries")}} を使用してください。</p>
+
+<pre class="brush: js example-good">var obj = { 'France': 'Paris', 'England': 'London' };
+// Iterate over the property names:
+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);
+
+
+</pre>
+
+<p>このユースケースのそのほかの選択肢として、{{jsxref("Map")}} を使用することもできます:</p>
+
+<pre class="brush: js example-good">var map = new Map;
+map.set('France', 'Paris');
+map.set('England', 'London');
+// Iterate over the property names:
+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);
+</pre>
+
+<h3 id="ジェネレーターを反復処理する">ジェネレーターを反復処理する</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators">ジェネレーター</a> は反復可能オブジェクトを生成するために呼び出す関数です。</p>
+
+<pre class="brush: js example-bad">function* generate(a, b) {
+ yield a;
+ yield b;
+}
+
+for (let x of generate) // TypeError: generate is not iterable
+ console.log(x);
+</pre>
+
+<p>ジェネレーターを呼び出していないとき、ジェネレーターに対応した {{jsxref("Function")}} オブジェクトは呼び出し可能ですが、反復処理はできません。ジェネレーターを呼び出すと、ジェネレーターの実行中に生成された値を反復処理する反復可能オブジェクトが生成されます。</p>
+
+<pre class="brush: js example-good">function* generate(a, b) {
+ yield a;
+ yield b;
+}
+
+for (let x of generate(1,2))
+ console.log(x);
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">反復処理プロトコル</a></li>
+ <li>{{jsxref("Object.keys")}}</li>
+ <li>{{jsxref("Object.entries")}}</li>
+ <li>{{jsxref("Map")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators">イテレーターとジェネレーター</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Loops_and_iteration#for...of_statement">for…of</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/json_bad_parse/index.html b/files/ja/web/javascript/reference/errors/json_bad_parse/index.html
new file mode 100644
index 0000000000..1f1af72e0e
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/json_bad_parse/index.html
@@ -0,0 +1,113 @@
+---
+title: 'SyntaxError: JSON.parse: bad parsing'
+slug: Web/JavaScript/Reference/Errors/JSON_bad_parse
+tags:
+ - Error
+ - Errors
+ - JSON
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/JSON_bad_parse
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の例外で、 {{jsxref("JSON.parse()")}} が文字列を JSON として解釈するのに失敗した場合に発生します。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox notranslate">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)</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">エラーの原因</h2>
+
+<p>{{jsxref("JSON.parse()")}} は文字列を JSON として解釈します。この文字列は妥当な JSON であるべきであり、不正確な構文に出会った場合、このエラーが発生します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="JSON.parse_does_not_allow_trailing_commas" name="JSON.parse_does_not_allow_trailing_commas">JSON.parse() は末尾のカンマを許容しない</h3>
+
+<p>どちらの行でも SyntaxError が発生します。</p>
+
+<pre class="brush: js example-bad notranslate">JSON.parse('[1, 2, 3, 4,]');
+JSON.parse('{"foo": 1,}');
+// SyntaxError JSON.parse: unexpected character
+// at line 1 column 14 of the JSON data
+</pre>
+
+<p>末尾のカンマを省略すると、正しく JSON として解釈します。</p>
+
+<pre class="brush: js example-good notranslate">JSON.parse('[1, 2, 3, 4]');
+JSON.parse('{"foo": 1}');</pre>
+
+<h3 id="Property_names_must_be_double-quoted_strings" name="Property_names_must_be_double-quoted_strings">プロパティ名は二重引用符で囲んだ文字列でなければならない</h3>
+
+<p>プロパティの周囲を囲むのに、たとえば'foo' のように単一引用符を使用してはいけません。</p>
+
+<pre class="brush: js example-bad notranslate">JSON.parse("{'foo': 1}");
+// SyntaxError: JSON.parse: expected property name or '}'
+// at line 1 column 2 of the JSON data</pre>
+
+<p>代わりに "foo" と書いてください。</p>
+
+<pre class="brush: js example-good notranslate">JSON.parse('{"foo": 1}');</pre>
+
+<h3 id="Leading_zeros_and_decimal_points" name="Leading_zeros_and_decimal_points">先頭のゼロと小数点</h3>
+
+<p>01 のような先頭の 0 は使用できません。また、小数点の後には少なくとも 1 桁以上が続かなければなりません。</p>
+
+<pre class="brush: js example-bad notranslate">JSON.parse('{"foo": 01}');
+// SyntaxError: JSON.parse: expected ',' or '}' after property value
+// in object at line 1 column 2 of the JSON data
+
+JSON.parse('{"foo": 1.}');
+// SyntaxError: JSON.parse: unterminated fractional number
+// at line 1 column 2 of the JSON data
+</pre>
+
+<p>0 を除いて 1 だけを書いてください。また、小数点の後には少なくとも 1 桁の数字を置いてください。</p>
+
+<pre class="brush: js example-good notranslate">JSON.parse('{"foo": 1}');
+JSON.parse('{"foo": 1.0}');
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("JSON")}}</li>
+ <li>{{jsxref("JSON.parse()")}}</li>
+ <li>{{jsxref("JSON.stringify()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/malformed_formal_parameter/index.html b/files/ja/web/javascript/reference/errors/malformed_formal_parameter/index.html
new file mode 100644
index 0000000000..0eeb46bcab
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/malformed_formal_parameter/index.html
@@ -0,0 +1,65 @@
+---
+title: 'SyntaxError: Malformed formal parameter'
+slug: Web/JavaScript/Reference/Errors/Malformed_formal_parameter
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Malformed_formal_parameter
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の例外 "malformed formal parameter" は、 <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Function">Function()</a></code> 呼び出しの引数リストが何らか無効である場合に発生します。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox notranslate">SyntaxError: Expected {x} (Edge)
+SyntaxError: malformed formal parameter (Firefox)
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">原因</h2>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Function">Function()</a></code> を使用しいて、最低 2 つの引数を渡すとします。最後の引数は、作成する新しい関数のソースコードです。 残りの引数は、新しく生成する関数の引数リストを構成します。</p>
+
+<p>引数リストの何らかが無効です。引数名として <code>if</code> や <code>var</code> のようなキーワードを選んでしまったかもしれませんし、引数リストに誤った区切りがあるかもしれません。または、数値やオブジェクトのような無効な値を渡しているかもしれません。</p>
+
+<h3 id="OK_that_fixed_my_problem._But_why_didnt_you_say_that_in_the_first_place" name="OK_that_fixed_my_problem._But_why_didnt_you_say_that_in_the_first_place">問題は解決した。しかし、なぜ最初にそれを伝えないのか?</h3>
+
+<p>確かに、エラーメッセージの文言は少々奇妙です。 "Formal parameter" は、 "関数の引数" を表現するにはファンシーな言い方です。 さらに、"malformed" という言葉を使っていますが、それは Firefox エンジニアが 19 世紀のゴッシックホラー小説の大ファンだからです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Invalid_cases" name="Invalid_cases">無効な場合</h3>
+
+<pre class="brush: js example-bad notranslate">var f = Function('x y', 'return x + y;');
+// SyntaxError (missing a comma)
+
+var f = Function('x,', 'return x;');
+// SyntaxError (extraneous comma)
+
+var f = Function(37, "alert('OK')");
+// SyntaxError (numbers can't be argument names)
+</pre>
+
+<h3 id="Valid_cases" name="Valid_cases">妥当な場合</h3>
+
+<pre class="brush: js example-good notranslate">var f = Function('x, y', 'return x + y;'); // correctly punctuated
+
+var f = Function('x', 'return x;');
+
+// if you can, avoid using Function - this is much faster
+var f = function(x) { return x; };
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Function">Function()</a></code></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Guide/Functions">About functions</a></li>
+ <li><a href="https://www.gutenberg.org/ebooks/84"><em>Frankenstein</em> by Mary Wollstonecraft Shelley, full e-text</a> ("Cursed (although I curse myself) be the hands that formed you! You have made me wretched beyond expression. You have left me no power to consider whether I am just to you or not. Begone! Relieve me from the sight of your detested form.")</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/malformed_uri/index.html b/files/ja/web/javascript/reference/errors/malformed_uri/index.html
new file mode 100644
index 0000000000..0cb5f16458
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/malformed_uri/index.html
@@ -0,0 +1,64 @@
+---
+title: 'URIError: malformed URI sequence'
+slug: Web/JavaScript/Reference/Errors/Malformed_URI
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - URIError
+translation_of: Web/JavaScript/Reference/Errors/Malformed_URI
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">URIError: malformed URI sequence (Firefox)
+URIError: URI malformed (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("URIError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>URI エンコードかデコードが成功しませんでした。{{jsxref("decodeURI")}} か {{jsxref("encodeURI")}}、{{jsxref("encodeURIComponent")}}、{{jsxref("decodeURIComponent")}} 関数の引数が無効のため、関数は適切にエンコード、またはデコードできませんでした。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="エンコーディング">エンコーディング</h3>
+
+<p>エンコーディングは、特定の文字インスタンスをそれぞれ、文字の UFT-8 エンコーディングを表す 1 つか 2 つ、3 つ 4 つのシーケンスに置き換えます。高低ペアの一部ではないサロゲートをエンコードしようとした場合、{{jsxref("URIError")}} がスローされます。たとえば:</p>
+
+<pre class="brush: js example-bad">encodeURI('\uD800');
+// "URIError: malformed URI sequence"
+
+encodeURI('\uDFFF');
+// "URIError: malformed URI sequence"
+</pre>
+
+<p>高低ペアは ok です。たとえば:</p>
+
+<pre class="brush: js example-good">encodeURI('\uD800\uDFFF');
+// "%F0%90%8F%BF"</pre>
+
+<h3 id="デコーディング">デコーディング</h3>
+
+<pre class="brush: js example-bad">decodeURIComponent('%E0%A4%A');
+// "URIError: malformed URI sequence"
+</pre>
+
+<p>適切な入力を行うと、通常は次のようになります:</p>
+
+<pre class="brush: js example-good">decodeURIComponent('JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B');
+// "JavaScript_шеллы"</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("URIError")}}</li>
+ <li>{{jsxref("decodeURI")}}</li>
+ <li>{{jsxref("encodeURI")}}</li>
+ <li>{{jsxref("encodeURIComponent")}}</li>
+ <li>{{jsxref("decodeURIComponent")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/missing_bracket_after_list/index.html b/files/ja/web/javascript/reference/errors/missing_bracket_after_list/index.html
new file mode 100644
index 0000000000..02abb823c0
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/missing_bracket_after_list/index.html
@@ -0,0 +1,56 @@
+---
+title: 'SyntaxError: missing ] after element list'
+slug: Web/JavaScript/Reference/Errors/Missing_bracket_after_list
+tags:
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Missing_bracket_after_list
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: missing ] after element list
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>どこかで配列初期化構文のエラーがあります。閉じ括弧("<code>]</code>")かカンマ("<code>,</code>")が不足している可能性があります。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="不完全な配列初期化">不完全な配列初期化</h3>
+
+<pre class="brush: js example-bad">var list = [1, 2,
+
+var instruments = [
+ "Ukulele",
+ "Guitar",
+ "Piano"
+};
+
+var data = [{foo: "bar"} {bar: "foo"}];
+</pre>
+
+<p>次のように修正できます:</p>
+
+<pre class="brush: js example-good">var list = [1, 2];
+
+var instruments = [
+ "Ukulele",
+ "Guitar",
+ "Piano"
+];
+
+var data = [{foo: "bar"}, {bar: "foo"}];</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/missing_colon_after_property_id/index.html b/files/ja/web/javascript/reference/errors/missing_colon_after_property_id/index.html
new file mode 100644
index 0000000000..06addb29f4
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/missing_colon_after_property_id/index.html
@@ -0,0 +1,77 @@
+---
+title: 'SyntaxError: missing : after property id'
+slug: Web/JavaScript/Reference/Errors/Missing_colon_after_property_id
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Missing_colon_after_property_id
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: missing : after property id
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクト初期化子</a>構文でオブジェクトを生成する場合、オブジェクトのプロパティのキーと値をコロン (<code>:</code>) で区切ります。</p>
+
+<pre class="brush: js">var obj = { propertyKey: 'value' };
+</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="コロン_vs._代入記号">コロン vs. 代入記号</h3>
+
+<p>この方法で代入記号をオブジェクト初期化子構文として使用できないため、このコードは失敗します。</p>
+
+<pre class="brush: js example-bad">var obj = { propertyKey = 'value' };
+// SyntaxError: missing : after property id
+</pre>
+
+<p>正しくはコロンを使用するか、オブジェクトを生成した後に角括弧を使用して新しいプロパティを割り当てます。</p>
+
+<pre class="brush: js example-good">var obj = { propertyKey: 'value' };
+
+// または
+
+var obj = { };
+obj['propertyKey'] = 'value';
+</pre>
+
+<h3 id="空のプロパティ">空のプロパティ</h3>
+
+<p>このような方法で空のプロパティを生成できません:</p>
+
+<pre class="brush: js example-bad">var obj = { propertyKey; };
+// SyntaxError: missing : after property id
+</pre>
+
+<p>値がないプロパティを定義する必要がある場合、値として {{jsxref("null")}} を使用します。</p>
+
+<pre class="brush: js example-good">var obj = { propertyKey: null };</pre>
+
+<h3 id="計算されたプロパティ">計算されたプロパティ</h3>
+
+<p>式からプロパティキーを生成する場合、角括弧を使用します。そうしなければ、プロパティ名は計算できません:</p>
+
+<pre class="brush: js example-bad">var obj = { 'b'+'ar': 'foo' };
+// SyntaxError: missing : after property id
+</pre>
+
+<p>式を括弧 <code>[]</code> に入れます:</p>
+
+<pre class="brush: js example-good">var obj = { ['b'+'ar']: 'foo' };</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクト初期化子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/missing_curly_after_function_body/index.html b/files/ja/web/javascript/reference/errors/missing_curly_after_function_body/index.html
new file mode 100644
index 0000000000..a6cad1865d
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/missing_curly_after_function_body/index.html
@@ -0,0 +1,67 @@
+---
+title: 'SyntaxError: missing } after function body'
+slug: Web/JavaScript/Reference/Errors/Missing_curly_after_function_body
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Missing_curly_after_function_body
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: missing } after function body
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>どこかで関数を生成するときに、構文上のミスをしています。また、括弧や中括弧の閉じが正しい順番かどうかを確認してください。コードをフォーマットしたり、インデントしたりすると、ジャングルを探すのに役立つと思います。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="閉じ括弧忘れ">閉じ括弧忘れ</h3>
+
+<p>しばしば、関数コードで閉じ括弧を忘れることがあります:</p>
+
+<pre class="brush: js example-bad">var charge = function() {
+ if (sunny) {
+ useSolarCells();
+ } else {
+ promptBikeRide();
+};
+</pre>
+
+<p>正しくは:</p>
+
+<pre class="brush: js example-good">var charge = function() {
+ if (sunny) {
+ useSolarCells();
+ } else {
+ promptBikeRide();
+ }
+};</pre>
+
+<p>たとえば、{{Glossary("IIFE")}} や<a href="/ja/docs/Web/JavaScript/Closures">クロージャ</a>、そのほかのたくさんの中括弧や括弧を使用する構造体を使用しているときは、さらに分かりにくくなります。</p>
+
+<pre class="brush: js example-bad">(function() { if (true) { return false; } );
+</pre>
+
+<p>多くの場合、異なるようにインデントするか、インデントをダブルチェックすると、これらのエラーを特定するのに役立ちます。</p>
+
+<pre class="brush: js example-good">(function() {
+ if (true) {
+ return false;
+ }
+});</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Functions">関数</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/missing_curly_after_property_list/index.html b/files/ja/web/javascript/reference/errors/missing_curly_after_property_list/index.html
new file mode 100644
index 0000000000..d77ef07a5b
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/missing_curly_after_property_list/index.html
@@ -0,0 +1,51 @@
+---
+title: 'SyntaxError: missing } after property list'
+slug: Web/JavaScript/Reference/Errors/Missing_curly_after_property_list
+tags:
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Missing_curly_after_property_list
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: missing } after property list
+</pre>
+
+<h2 id="Error_type">Error type</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>どこかに <a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">object initializer</a> 構文の誤りがあります。実際に波括弧を忘れているかもしれませんが、セミコロンが不足ている可能性もあります。また、閉じ波括弧や括弧が正しい順序になっているかも確認してください。コードをインデントやフォーマットすると、多少見通しが良くなります。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="カンマ忘れ">カンマ忘れ</h3>
+
+<p>多くの場合、object initializer コードにカンマ忘れがあります:</p>
+
+<pre class="brush: js example-bad">var obj = {
+ a: 1,
+ b: { myProp: 2 }
+ c: 3
+};
+</pre>
+
+<p>次のように修正できます:</p>
+
+<pre class="brush: js example-good">var obj = {
+ a: 1,
+ b: { myProp: 2 },
+ c: 3
+};
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">Object initializer</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/missing_formal_parameter/index.html b/files/ja/web/javascript/reference/errors/missing_formal_parameter/index.html
new file mode 100644
index 0000000000..438e357de8
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/missing_formal_parameter/index.html
@@ -0,0 +1,80 @@
+---
+title: 'SyntaxError: missing formal parameter'
+slug: Web/JavaScript/Reference/Errors/Missing_formal_parameter
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Missing_formal_parameter
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: missing formal parameter (Firefox)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>"Formal parameter" とは、 "関数の引数" のことです。関数宣言で、有効な引数を忘れています。関数定義において、引数は {{Glossary("Identifier", "identifiers")}} でなければならず、数字や文字列、オブジェクトのような値であってはいけません。関数の宣言と関数の呼び出しは、異なる 2 つのステップです。宣言時には引数として識別子が求められ、関数を呼び出すときだけ、関数が使用する値を提供します。</p>
+
+<p>{{glossary("JavaScript")}} では、識別子はアルファベット文字 (または "$" か "_") だけを含めることができ、数値から始められません。文字列はデータですが、識別子はコードの一部です。そのため、識別子と<strong>文字列</strong>は異なるものです。</p>
+
+<h2 id="例">例</h2>
+
+<p>関数を定義するとき、関数の引数は識別子でなければなりません。引数として値を提供しているため、これらの関数宣言はすべて失敗します:</p>
+
+<pre class="brush: js example-bad highlight:[1,6,11]">function square(3) {
+ return number * number;
+};
+// SyntaxError: missing formal parameter
+
+function greet("Howdy") {
+ return greeting;
+};
+// SyntaxError: missing formal parameter
+
+function log({ obj: "value"}) {
+ console.log(arg)
+};
+// SyntaxError: missing formal parameter
+</pre>
+
+<p>関数宣言では、識別子を使用しなければなりません:</p>
+
+<pre class="brush: js example-good highlight:[1,5,9]">function square(number) {
+ return number * number;
+};
+
+function greet(greeting) {
+ return greeting;
+};
+
+function log(arg) {
+ console.log(arg)
+};</pre>
+
+<p>次に、好きな引数を渡してこれらの関数を呼び出せます:</p>
+
+<pre class="brush: js">square(2); // 4
+
+greet("Howdy"); // "Howdy"
+
+log({obj: "value"}); // Object { obj: "value" }
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>formal parameters に関係するその他のエラー:
+ <ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Errors/Malformed_formal_parameter">SyntaxError: Malformed formal parameter</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Errors/Redeclared_parameter">SyntaxError: redeclaration of formal parameter "x"</a></li>
+ </ul>
+ </li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/missing_initializer_in_const/index.html b/files/ja/web/javascript/reference/errors/missing_initializer_in_const/index.html
new file mode 100644
index 0000000000..ca302d074a
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/missing_initializer_in_const/index.html
@@ -0,0 +1,59 @@
+---
+title: 'SyntaxError: missing = in const declaration'
+slug: Web/JavaScript/Reference/Errors/Missing_initializer_in_const
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Missing_initializer_in_const
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: missing = in const declaration (Firefox)
+SyntaxError: Missing initializer in const declaration (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>定数は、通常の実行中にプログラムによって変更できない値です。これは、再代入で変更できず、再宣言もできません。JavaScript では、定数は <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/const">const</a></code> キーワードで宣言します。定数の初期化子が必要です。つまり、宣言と同じステートメントで値を指定する必要があります (後で変更できないため、これには意味があります)。</p>
+
+<h2 id="Examples">Examples</h2>
+
+<h3 id="定数初期化子忘れ">定数初期化子忘れ</h3>
+
+<p><code>var</code> や <code>let</code> と異なり、<code>const</code> 宣言では値を指定する必要があります。これはエラーをスローします:</p>
+
+<pre class="brush: js example-bad">const COLUMNS;
+// SyntaxError: missing = in const declaration</pre>
+
+<h3 id="エラーを修正する">エラーを修正する</h3>
+
+<p>このエラーを修正するには、複数の方法があります。定数で何をしようとしていたかを確認してください。</p>
+
+<h4 id="定数値を追加する">定数値を追加する</h4>
+
+<p>宣言と同じステートメントで定数の値を指定します:</p>
+
+<pre class="brush: js example-good">const COLUMNS = 80;</pre>
+
+<h4 id="const_か_let、var"><code>const</code> か <code>let</code>、<code>var</code>?</h4>
+
+<p>定数を宣言したいわけではない場合、<code>const</code> を使用しないでください。ブロックスコープの変数を <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code> で宣言したいか、グローバル変数を <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/var">var</a></code> で宣言したいのかもしれません。双方ともに、初期値を必要としません。</p>
+
+<pre class="brush: js example-good">let columns;
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/const">const</a></code></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/var">var</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/missing_name_after_dot_operator/index.html b/files/ja/web/javascript/reference/errors/missing_name_after_dot_operator/index.html
new file mode 100644
index 0000000000..7ae10e46e7
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/missing_name_after_dot_operator/index.html
@@ -0,0 +1,68 @@
+---
+title: 'SyntaxError: missing name after . operator'
+slug: Web/JavaScript/Reference/Errors/Missing_name_after_dot_operator
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Missing_name_after_dot_operator
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: missing name after . operator
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">メンバー演算子</a>に対して、ドット演算子が (<code>.</code>) 使われました。アクセスしたいプロパティ名を指定しなければなりません。計算されたプロパティアクセスのためには、プロパティアクセスをドットを使用したものから角括弧を使用したものに変更する必要があります。それにより、式を計算できるようになります。そうではなく、連結しようとしましたか? その場合は、プラス演算子 (<code>+</code>) を代わりに使用してください。以下の例をご覧ください。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="プロパティアクセス">プロパティアクセス</h3>
+
+<p>JavaScript の<a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">メンバー演算子</a>は、ドット (.) か角括弧 (<code>[]</code>) を使用しますが、両方は使いません。角括弧で計算されたプロパティアクセスができます。</p>
+
+<pre class="brush: js example-bad">var obj = { foo: { bar: "baz", bar2: "baz2" } };
+var i = 2;
+
+obj.[foo].[bar]
+// SyntaxError: missing name after . operator
+
+obj.foo."bar"+i;
+// SyntaxError: missing name after . operator
+</pre>
+
+<p>このコードを修正するには、このようにオブジェクトにアクセスする必要があります:</p>
+
+<pre class="brush: js example-good">obj.foo.bar; // "baz"
+// or alternatively
+obj["foo"]["bar"]; // "baz"
+
+// computed properties require square brackets
+obj.foo["bar" + i]; // "baz2"
+</pre>
+
+<h3 id="プロパティアクセス_vs._連結">プロパティアクセス vs. 連結</h3>
+
+<p>({{Glossary("PHP")}} のような) ほかの言語から来たなら、ドット演算子 (<code>.</code>) と連結演算子 (<code>+</code>) を混同しがちです。</p>
+
+<pre class="brush: js example-bad">console.log("Hello" . "world");
+
+// SyntaxError: missing name after . operator</pre>
+
+<p>連結のためにはプラス記号を使用すべきです:</p>
+
+<pre class="brush: js example-good">console.log("Hello" + "World");</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">メンバー演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html b/files/ja/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html
new file mode 100644
index 0000000000..fd647ac2ad
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/missing_parenthesis_after_argument_list/index.html
@@ -0,0 +1,42 @@
+---
+title: 'SyntaxError: missing ) after argument list'
+slug: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list
+tags:
+ - Errors
+ - JavaScript
+ - SynataxError
+translation_of: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: missing ) after argument list
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}。</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">何がうまくいかなかったのか?</h2>
+
+<p>関数の呼び出し方にエラーがあります。たとえば、タイポや演算子の記述忘れ、文字列のエスケープミスの可能性が考えられます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>文字列を連結する "+" 演算子がないため、JavaScript は <code>log</code> 関数の引数として、<code>"PI: "</code> だけを想定します。この場合、閉じ括弧で終了する必要があります。</p>
+
+<pre class="brush: js example-bad">console.log('PI: ' Math.PI);
+// SyntaxError: missing ) after argument list
+</pre>
+
+<p>"<code>+</code>" 演算子を追加することで、<code>log</code> の呼び出しを修正できます:</p>
+
+<pre class="brush: js example-good">console.log('PI: ' + Math.PI);
+// "PI: 3.141592653589793"</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Functions">関数</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/missing_parenthesis_after_condition/index.html b/files/ja/web/javascript/reference/errors/missing_parenthesis_after_condition/index.html
new file mode 100644
index 0000000000..2a8e8cc1d6
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/missing_parenthesis_after_condition/index.html
@@ -0,0 +1,70 @@
+---
+title: 'SyntaxError: missing ) after condition'
+slug: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_condition
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Missing_parenthesis_after_condition
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: missing ) after condition
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/if...else">if</a></code> 条件の書き方にエラーがあります。いくつかのプログラミング言語では、コードは異なる入力に応じて意思決定とアクションを実行する必要があります。if ステートメントは指定した条件を満たす場合、処理を実行します。JavaScript では、この条件は <code>if</code> キーワードの後に括弧を付ける必要があります。次ように:</p>
+
+<pre class="brush: js">if (condition) {
+ // do something if the condition is true
+}</pre>
+
+<h2 id="例">例</h2>
+
+<p>ちょっとした見落としかもしれないので、慎重にコード内のすべての括弧をチェックしてください。</p>
+
+<pre class="brush: js example-bad">if (3 &gt; Math.PI {
+ console.log("wait what?");
+}
+
+// SyntaxError: missing ) after condition
+</pre>
+
+<p>このコードを修正するには、条件を閉じる括弧を追加する必要があります。</p>
+
+<pre class="brush: js example-good">if (3 &gt; Math.PI) {
+ console.log("wait what?");
+}</pre>
+
+<p>あなたがほかの言語から来たなら、JavaScript で同じ意味を持たないキーワードや意味のないキーワードを追加してしまいがちです。</p>
+
+<pre class="brush: js example-bad">if (done is true) {
+ console.log("we are done!");
+}
+
+// SyntaxError: missing ) after condition
+</pre>
+
+<p>代わりに、正しい<a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators">比較演算子</a>を使うべきです。たとえば:</p>
+
+<pre class="brush: js example-good">if (done === true) {
+ console.log("we are done!");
+}</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/if...else">if...else</a></code></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators">比較演算子</a></li>
+ <li>
+ <p><a href="/ja/docs/Learn/JavaScript/Building_blocks/conditionals">Making decisions in your code — conditionals</a></p>
+ </li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/missing_semicolon_before_statement/index.html b/files/ja/web/javascript/reference/errors/missing_semicolon_before_statement/index.html
new file mode 100644
index 0000000000..05b3d6c9d6
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/missing_semicolon_before_statement/index.html
@@ -0,0 +1,67 @@
+---
+title: 'SyntaxError: missing ; before statement'
+slug: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement
+tags:
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: missing ; before statement
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}.</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">何がうまくいかなかったのか?</h2>
+
+<p>どこかでセミコロン(<code>;</code>)を忘れています。<a href="/ja/docs/Web/JavaScript/Reference/Statements">JavaScript 文</a>はセミコロンで終えなければなりません。これらのいくつかは、<a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#.E8.87.AA.E5.8B.95.E3.82.BB.E3.83.9F.E3.82.B3.E3.83.AD.E3.83.B3.E6.8C.BF.E5.85.A5">自動セミコロン挿入(ASI)</a>の影響を受けますが、この場合JavaScript がソースコードを正確に解析するためには、セミコロンを提供する必要があります。</p>
+
+<p>しかし、多くの場合、このエラーは、文字列の不適切なエスケープや <code>var</code> の誤った使用などのその他のエラーの結果として発生します。また、どこかで括弧が多すぎるかもしれません。このエラーがスローされた場合、注意深く構文をチェックしなければなりません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Unescaped_strings" name="Unescaped_strings">エスケープしていない文字列</h3>
+
+<p>このエラーは、適切に文字列をエスケープしておらず、JavaScript エンジンが文字列がすでに終了していると予測するときにしばしば発生します。たとえば:</p>
+
+<pre class="brush: js example-bad">var foo = 'Tom's bar';
+// SyntaxError: missing ; before statement</pre>
+
+<p>ダブルクオートを使用するか、アポストロフィをエスケープします:</p>
+
+<pre class="brush: js example-good">var foo = "Tom's bar";
+var foo = 'Tom\'s bar';
+</pre>
+
+<h3 id="Declaring_properties_with_var" name="Declaring_properties_with_var">var を使用したプロパティ宣言</h3>
+
+<p>オブジェクトや配列のプロパティを、<code>var</code> を使って宣言することは<strong>できません</strong>。</p>
+
+<pre class="brush: js example-bad">var obj = {};
+var obj.foo = 'hi'; // SyntaxError missing ; before statement
+
+var array = [];
+var array[0] = 'there'; // SyntaxError missing ; before statement
+</pre>
+
+<p>替わりに、<code>var</code> キーワードを省略します:</p>
+
+<pre class="brush: js example-good">var obj = {};
+obj.foo = 'hi';
+
+var array = [];
+array[0] = 'there';
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#.E8.87.AA.E5.8B.95.E3.82.BB.E3.83.9F.E3.82.B3.E3.83.AD.E3.83.B3.E6.8C.BF.E5.85.A5">自動セミコロン挿入(ASI)</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements">JavaScript 文</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/more_arguments_needed/index.html b/files/ja/web/javascript/reference/errors/more_arguments_needed/index.html
new file mode 100644
index 0000000000..2a99e60894
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/more_arguments_needed/index.html
@@ -0,0 +1,48 @@
+---
+title: 'TypeError: More arguments needed'
+slug: Web/JavaScript/Reference/Errors/More_arguments_needed
+tags:
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/More_arguments_needed
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: Object.create requires more than 0 arguments
+TypeError: Object.setPrototypeOf requires more than 1 argument
+TypeError: Object.defineProperties requires more than 0 arguments
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>関数の呼び出し方にエラーがあります。より多くの引数を提供する必要があります。</p>
+
+<h2 id="例">例</h2>
+
+<p>{{jsxref("Object.create()")}} メソッドは、少なくとも 1 つは引数が必要です。また、{{jsxref("Object.setPrototypeOf()")}} メソッドは少なくとも 2 つ引数が必要です:</p>
+
+<pre class="brush: js example-bad">var obj = Object.create();
+// TypeError: Object.create requires more than 0 arguments
+
+var obj = Object.setPrototypeOf({});
+// TypeError: Object.setPrototypeOf requires more than 1 argument
+</pre>
+
+<p>たとえば、{{jsxref("null")}} を prototype として設定することで修正できます:</p>
+
+<pre class="brush: js example-good">var obj = Object.create(null);
+
+var obj = Object.setPrototypeOf({}, null);</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Functions">関数</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/negative_repetition_count/index.html b/files/ja/web/javascript/reference/errors/negative_repetition_count/index.html
new file mode 100644
index 0000000000..0ffa96b1bd
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/negative_repetition_count/index.html
@@ -0,0 +1,44 @@
+---
+title: 'RangeError: repeat count must be non-negative'
+slug: Web/JavaScript/Reference/Errors/Negative_repetition_count
+tags:
+ - Errors
+ - JavaScript
+ - RangeError
+translation_of: Web/JavaScript/Reference/Errors/Negative_repetition_count
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">RangeError: repeat count must be non-negative (Firefox)
+RangeError: Invalid count value (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("RangeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>{{jsxref("String.prototype.repeat()")}} メソッドを使用しています。<code>count</code> パラメーターは、文字列の繰り返し回数を指定します。 これは 0 から正の {{jsxref("Infinity")}} 以下の値である必要があり、負数は使用できません。 有効値の範囲はこのように表現できます: [0, +∞)。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<pre class="brush: js example-bad">'abc'.repeat(-1); // RangeError </pre>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<pre class="brush: js example-good">'abc'.repeat(0); // ''
+'abc'.repeat(1); // 'abc'
+'abc'.repeat(2); // 'abcabc'
+'abc'.repeat(3.5); // 'abcabcabc' (count は整数に変換されます)
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.repeat()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/no_non-null_object/index.html b/files/ja/web/javascript/reference/errors/no_non-null_object/index.html
new file mode 100644
index 0000000000..d602d95826
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/no_non-null_object/index.html
@@ -0,0 +1,66 @@
+---
+title: 'TypeError: "x" is not a non-null object'
+slug: Web/JavaScript/Reference/Errors/No_non-null_object
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/No_non-null_object
+---
+<div>{{JSSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">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)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>どこかでオブジェクトが期待されていますが、提供されませんでした。{{jsxref("null")}} はオブジェクトではなく、動作しません。与えられた状況で適切なオブジェクトを提供しなければなりません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="プロパティディスクリプタが想定される">プロパティディスクリプタが想定される</h3>
+
+<p>{{jsxref("Object.create()")}} メソッドや {{jsxref("Object.defineProperty()")}} メソッド、{{jsxref("Object.defineProperties()")}} メソッドを使用するとき、省略可能なディスクリプタ引数として、プロパティディスクリプタオブジェクトが想定されます。(ただの数値のように) オブジェクトを提供しないと、エラーをスローします:</p>
+
+<pre class="brush: js example-bad">Object.defineProperty({}, 'key', 1);
+// TypeError: 1 is not a non-null object
+
+Object.defineProperty({}, 'key', null);
+// TypeError: null is not a non-null object
+</pre>
+
+<p>有効なプロパティディスクリプタはこのようになります:</p>
+
+<pre class="brush: js example-good">Object.defineProperty({}, 'key', { value: 'foo', writable: false });
+</pre>
+
+<h3 id="WeakMap_オブジェクトと_WeakSet_オブジェクトはオブジェクトキーが必要"><code>WeakMap</code> オブジェクトと <code>WeakSet</code> オブジェクトはオブジェクトキーが必要</h3>
+
+<p>{{jsxref("WeakMap")}} オブジェクトと {{jsxref("WeakSet")}} オブジェクトはオブジェクトキーを保持します。そのほかの型をキーとして使用できません。</p>
+
+<pre class="brush: js example-bad">var ws = new WeakSet();
+ws.add('foo');
+// TypeError: "foo" is not a non-null object</pre>
+
+<p>代わりにオブジェクトを使用します:</p>
+
+<pre class="brush: js example-good">ws.add({foo: 'bar'});
+ws.add(window);
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Object.create()")}}</li>
+ <li>{{jsxref("Object.defineProperty()")}}、{{jsxref("Object.defineProperties()")}}</li>
+ <li>{{jsxref("WeakMap")}}、{{jsxref("WeakSet")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/no_properties/index.html b/files/ja/web/javascript/reference/errors/no_properties/index.html
new file mode 100644
index 0000000000..d699a0767f
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/no_properties/index.html
@@ -0,0 +1,40 @@
+---
+title: 'TypeError: "x" has no properties'
+slug: Web/JavaScript/Reference/Errors/No_properties
+tags:
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/No_properties
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: null has no properties
+TypeError: undefined has no properties
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>{{jsxref("null")}} と {{jsxref("undefined")}} に、アクセス可能なプロパティはありません。</p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: js example-bad">null.foo;
+// TypeError: null has no properties
+
+undefined.bar;
+// TypeError: undefined has no properties
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("null")}}</li>
+ <li>{{jsxref("undefined")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/no_variable_name/index.html b/files/ja/web/javascript/reference/errors/no_variable_name/index.html
new file mode 100644
index 0000000000..f72764f8cd
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/no_variable_name/index.html
@@ -0,0 +1,90 @@
+---
+title: 'SyntaxError: missing variable name'
+slug: Web/JavaScript/Reference/Errors/No_variable_name
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/No_variable_name
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の例外 "missing variable name" が頻繁に発生するのは、物の名前を付けるのが大変だからです。あるいは、カンマが間違っているかもしれません。タイプミスがないかチェックしましょう</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox notranslate">SyntaxError: missing variable name (Firefox)
+SyntaxError: Unexpected token = (Chrome)</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">エラーの原因</h2>
+
+<p>変数名に名前がありません。これはコードの構文エラーが原因である可能性があります。おそらく、どこかでカンマが間違っているか、名前を付けるのに苦戦しているかです。分かります。名前を付けるのは難しいです。</p>
+
+<ul>
+ <li>前の行や宣言が、セミコロンではなくカンマで終了していないかどうか確認しましょう。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Missing_a_variable_name" name="Missing_a_variable_name">変数名を忘れている</h3>
+
+<pre class="brush: js example-bad notranslate">var = "foo";
+</pre>
+
+<p>良い変数名を考えるのは大変です。みんなそうでした。</p>
+
+<pre class="brush: js example-good notranslate">var ohGodWhy = "foo";</pre>
+
+<h3 id="Reserved_keywords_cant_be_variable_names" name="Reserved_keywords_cant_be_variable_names">予約語は変数名にできない</h3>
+
+<p>いくつかの変数名は<a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords">予約語</a>です。使用できません。ごめんなさい:(</p>
+
+<pre class="brush: js example-bad notranslate">var debugger = "whoop";
+// SyntaxError: missing variable name
+</pre>
+
+<h3 id="Declaring_multiple_variables" name="Declaring_multiple_variables">複数の変数宣言</h3>
+
+<p>複数の変数を宣言するときは、カンマに特別な注意を払ってください。余分なカンマがありませんか?誤ってセミコロンの代わりにカンマを加えていませんか?</p>
+
+<pre class="brush: js example-bad notranslate">var x, y = "foo",
+var x, = "foo"
+
+var first = document.getElementById('one'),
+var second = document.getElementById('two'),
+
+// SyntaxError: missing variable name
+</pre>
+
+<p>修正版:</p>
+
+<pre class="brush: js example-good notranslate">var x, y = "foo";
+var x = "foo";
+
+var first = document.getElementById('one');
+var second = document.getElementById('two');</pre>
+
+<h3 id="Arrays" name="Arrays">配列</h3>
+
+<p>JavaScript の {{jsxref("Array")}} リテラルは、値を角括弧で囲む必要があります。これは動作しません。</p>
+
+<pre class="brush: js example-bad notranslate">var arr = 1,2,3,4,5;
+// SyntaxError: missing variable name
+</pre>
+
+<p>正しくは:</p>
+
+<pre class="brush: js example-good notranslate">var arr = [1,2,3,4,5];</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://wiki.c2.com/?GoodVariableNames">良い変数名</a></li>
+ <li>{{jsxref("Statements/var", "var")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Grammar_and_types#Declarations">JavaScript ガイドの変数の宣言</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/non_configurable_array_element/index.html b/files/ja/web/javascript/reference/errors/non_configurable_array_element/index.html
new file mode 100644
index 0000000000..c0b577db67
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/non_configurable_array_element/index.html
@@ -0,0 +1,78 @@
+---
+title: 'TypeError: can''t delete non-configurable array element'
+slug: Web/JavaScript/Reference/Errors/Non_configurable_array_element
+translation_of: Web/JavaScript/Reference/Errors/Non_configurable_array_element
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: can't delete non-configurable array element (Firefox)
+TypeError: Cannot delete property '2' of [object Array] (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>配列を<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/length#Example:_Shortening_an_array">短縮</a>しようとしていますが、配列の要素が<a href="/ja/docs/Web/JavaScript/Data_structures#Properties">変更不可</a>です。配列の短縮をするとき、新しい配列の長さを超える要素は削除されますが、このシチュエーションでは失敗します。</p>
+
+<p><code>configurable</code> 属性はプロパティをオブジェクトから削除できるかどうか、および (<code>writable</code> 以外の) 変更できるかどうかを制御します。</p>
+
+<p>通常、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array#Syntax">配列初期化子</a>で生成されたオブジェクトのプロパティは変更可能です。しかし、たとえば {{jsxref("Object.defineProperty()")}} が使用された場合、既定でプロパティを変更できません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="Object.defineProperty_で生成した変更不可能なプロパティ"><code>Object.defineProperty</code> で生成した変更不可能なプロパティ</h3>
+
+<p>プロパティを変更できないように指定する場合、{{jsxref("Object.defineProperty()")}} は既定で変更できないプロパティを生成します。</p>
+
+<pre class="brush: js example-bad">var arr = [];
+Object.defineProperty(arr, 0, {value: 0});
+Object.defineProperty(arr, 1, {value: "1"});
+
+arr.length = 1;
+// TypeError: can't delete non-configurable array element
+</pre>
+
+<p>配列を短縮したい場合、要素を変更可能に設定する必要があります。</p>
+
+<pre class="brush: js example-good">var arr = [];
+Object.defineProperty(arr, 0, {value: 0, configurable: true});
+Object.defineProperty(arr, 1, {value: "1", configurable: true});
+
+arr.length = 1;
+</pre>
+
+<h3 id="シールされた配列"><code>シール</code>された配列</h3>
+
+<p>{{jsxref("Object.seal()")}} 関数はすべての存在する要素を設定不可にします。</p>
+
+<pre class="brush: js example-bad">var arr = [1,2,3];
+Object.seal(arr);
+
+arr.length = 1;
+// TypeError: can't delete non-configurable array element
+</pre>
+
+<p>{{jsxref("Object.seal()")}} の呼び出しを削除するか、配列のコピーを取る必要があります。コピーの場合、コピーした配列の短縮は元の配列の長さに影響しません。/p&gt;</p>
+
+<pre class="brush: js example-good">var arr = [1,2,3];
+Object.seal(arr);
+
+// Copy the initial array to shorten the copy
+var copy = Array.from(arr);
+copy.length = 1;
+// arr.length == 3
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Data_structures#Properties">[[Configurable]]</a></li>
+ <li>{{jsxref("Array.length")}}</li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Object.seal()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/not_a_codepoint/index.html b/files/ja/web/javascript/reference/errors/not_a_codepoint/index.html
new file mode 100644
index 0000000000..c993da422c
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/not_a_codepoint/index.html
@@ -0,0 +1,55 @@
+---
+title: 'RangeError: argument is not a valid code point'
+slug: Web/JavaScript/Reference/Errors/Not_a_codepoint
+tags:
+ - Errors
+ - JavaScript
+ - RangeError
+translation_of: Web/JavaScript/Reference/Errors/Not_a_codepoint
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">RangeError: {0} is not a valid code point (Firefox)
+RangeError: Invalid code point {0} (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("RangeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>{{jsxref("String.fromCodePoint()")}} メソッドは、有効なコードポイントのみを受け付けます。</p>
+
+<p><a href="https://ja.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E7%82%B9">コードポイント</a>は、ユニコード文字集合の値です。これは整数 <code>0</code> から <code>0x10FFFF</code> までの範囲です。</p>
+
+<p>{{jsxref("NaN")}} や、-1 などの負数(negative Integers)、3.14 などの非整数値(non-integers)、<code>0x10FFFF</code>(<code>1114111</code>)より大きい値をこのメソッドで使うことはできません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<pre class="brush: js example-bad">String.fromCodePoint('_'); // RangeError
+String.fromCodePoint(Infinity); // RangeError
+String.fromCodePoint(-1); // RangeError
+String.fromCodePoint(3.14); // RangeError
+String.fromCodePoint(3e-2); // RangeError
+String.fromCodePoint(NaN); // RangeError</pre>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<pre class="brush: js example-good">String.fromCodePoint(42); // "*"
+String.fromCodePoint(65, 90); // "AZ"
+String.fromCodePoint(0x404); // "\u0404"
+String.fromCodePoint(0x2F804); // "\uD87E\uDC04"
+String.fromCodePoint(194564); // "\uD87E\uDC04"
+String.fromCodePoint(0x1D306, 0x61, 0x1D307) // "\uD834\uDF06a\uD834\uDF07"
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("String.fromCodePoint()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/not_a_constructor/index.html b/files/ja/web/javascript/reference/errors/not_a_constructor/index.html
new file mode 100644
index 0000000000..68b226a54f
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/not_a_constructor/index.html
@@ -0,0 +1,95 @@
+---
+title: 'TypeError: "x" is not a constructor'
+slug: Web/JavaScript/Reference/Errors/Not_a_constructor
+tags:
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Not_a_constructor
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox">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
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">何がうまくいかなかったのか?</h2>
+
+<p>オブジェクト、または変数をコンストラクターとして使おうとしていますが、それらがコンストラクターではありません。コンストラクターとは何かについては、{{Glossary("constructor","コンストラクター")}} か <a href="/ja/docs/Web/JavaScript/Reference/Operators/new"><code>new</code></a> 演算子を見てください。</p>
+
+<p>{{jsxref("String")}} や {{jsxref("Array")}} のような、<code>new</code> を使用して生成できる数多くのグローバルオブジェクトがあります。しかし、いくつかのグローバルオブジェクトはそうではなく、 それらのプロパティやメソッドは静的です。次の JavaScript 標準ビルトインオブジェクトは、コンストラクターではありません: {{jsxref("Math")}} と {{jsxref("JSON")}}、{{jsxref("Symbol")}}、{{jsxref("Reflect")}}、{{jsxref("Intl")}}、{{jsxref("SIMD")}}、{{jsxref("Atomics")}}。</p>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Statements/function*">function*</a> も、コンストラクターとして使用することはできません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Invalid_cases" name="Invalid_cases">無効なケース</h3>
+
+<pre class="brush: js example-bad">var Car = 1;
+new Car();
+// TypeError: Car 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
+</pre>
+
+<h3 id="A_car_constructor" name="A_car_constructor">car コンストラクター</h3>
+
+<p>車のためのオブジェクト型を生成するとします。このオブジェクトの型が <code>car</code> と呼ばれ、make と model、year プロパティを持つとします。これを行うには、次の関数を定義します:</p>
+
+<pre class="brush: js">function Car(make, model, year) {
+ this.make = make;
+ this.model = model;
+ this.year = year;
+}
+</pre>
+
+<p>次のように <code>mycar</code> と呼ばれるオブジェクトを生成できます:</p>
+
+<pre class="brush: js">var mycar = new Car('Eagle', 'Talon TSi', 1993);</pre>
+
+<h3 id="In_Promises">In Promises</h3>
+
+<p>When returning an immediately-resolved or immediately-rejected Promise, you do not need to create a <em>new Promise(...)</em> and act on it.</p>
+
+<p>This is not legal (the <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise#Constructor">Promise constructor</a> is not being called correctly) and will throw a <code>TypeError: this is not a constructor</code> exception:</p>
+
+<pre class="brush: js example-bad">return new Promise.resolve(true);
+</pre>
+
+<p>Instead, use the<a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve"> Promise.resolve()</a> or <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject">Promise.reject()</a> <a href="https://en.wikipedia.org/wiki/Method_(computer_programming)#Static_methods">static methods</a>:</p>
+
+<pre class="brush: js">// This is legal, but unnecessarily long:
+return new Promise((resolve, reject) =&gt; { resolve(true); })
+
+// Instead, return the static method:
+return Promise.resolve(true);
+return Promise.reject(false);
+</pre>
+
+<h2 id="See_also" name="See_also">関連項目</h2>
+
+<ul>
+ <li>{{Glossary("constructor")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/new"><code>new</code></a> 演算子</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/not_a_function/index.html b/files/ja/web/javascript/reference/errors/not_a_function/index.html
new file mode 100644
index 0000000000..9b679e9bd2
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/not_a_function/index.html
@@ -0,0 +1,122 @@
+---
+title: 'TypeError: "x" is not a function'
+slug: Web/JavaScript/Reference/Errors/Not_a_function
+tags:
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Not_a_function
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Message" name="Message">エラーメッセージ</h2>
+
+<pre class="syntaxbox">TypeError: "x" is not a function
+</pre>
+
+<h2 id="エラーの種類">エラーの種類</h2>
+
+<p>{{jsxref("TypeError")}}.</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">エラーの原因</h2>
+
+<p>関数でないものを、関数呼び出ししようとした際に発生するエラーです。また適切な関数が定義されていることを期待されているが、定義されていない場合も発生します。</p>
+
+<p>関数名のタイプミスをしていないか確認してみましょう。また、呼び出そうとしてるオブジェクトがそのメソッドを持っているかどうかも確認してみてください。配列オブジェクトが持っている <code>map</code> 関数を、それを持たない通常のオブジェクトに対して呼び出そうとしている場合が、後者の例になります。</p>
+
+<p>多くの組み込み関数はコールバック関数を必要とします。これらのメソッドを正しく呼び出すためには、関数を引数に指定する必要があります:</p>
+
+<ul>
+ <li>{{jsxref("Array")}} もしくは {{jsxref("TypedArray")}} オブジェクトを操作する場合:
+ <ul>
+ <li>{{jsxref("Array.prototype.every()")}}, {{jsxref("Array.prototype.some()")}}, {{jsxref("Array.prototype.forEach()")}}, {{jsxref("Array.prototype.map()")}}, {{jsxref("Array.prototype.filter()")}},  {{jsxref("Array.prototype.reduce()")}}, {{jsxref("Array.prototype.reduceRight()")}}, {{jsxref("Array.prototype.find()")}}</li>
+ </ul>
+ </li>
+ <li> {{jsxref("Map")}} もしくは {{jsxref("Set")}} を操作する場合:
+ <ul>
+ <li>{{jsxref("Map.prototype.forEach()")}}, {{jsxref("Set.prototype.forEach()")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="このエラーを起こすコードの例">このエラーを起こすコードの例</h2>
+
+<h3 id="関数名のタイプミス">関数名のタイプミス</h3>
+
+<p>次のように関数名を間違っている場合に発生します。なおこのミスは非常に多く発生します:</p>
+
+<pre class="brush: js example-bad">var x = document.getElementByID("foo");
+// TypeError: document.getElementByID is not a function
+</pre>
+
+<p>正しい関数名は <code>getElementByI<strong>d</strong></code> です:</p>
+
+<pre class="brush: js example-good">var x = document.getElementById("foo");
+</pre>
+
+<h3 id="間違ったオブジェクトに対する関数呼び出し">間違ったオブジェクトに対する関数呼び出し</h3>
+
+<p>いくつかのメソッドは、引数に関数が指定されていることを期待していて、しかも特定のオブジェクトの上でのみ正しく動作するものがあります。この典型例が {{jsxref("Array.prototype.map()")}} で、これは {{jsxref("Array")}} オブジェクトでのみ正しく動作します。</p>
+
+<pre class="brush: js example-bad">var obj = { a: 13, b: 37, c: 42 };
+
+obj.map(function(num) {
+ return num * 2;
+});
+
+// TypeError: obj.map is not a function</pre>
+
+<p>オブジェクトではなく、配列を利用しましょう:</p>
+
+<pre class="brush: js example-good">var numbers = [1, 4, 9];
+
+numbers.map(function(num) {
+ return num * 2;
+});
+
+// Array [ 2, 8, 18 ]
+</pre>
+
+<h3 id="Function_shares_a_name_with_a_pre-existing_property" name="Function_shares_a_name_with_a_pre-existing_property">すでに存在するプロパティと名前を共有する関数</h3>
+
+<p>クラスを作るとき、時々プロパティと関数が同じ名前であることがあります。関数を呼び出すと、コンパイラーは関数が存在するのをやめたように考えます。</p>
+
+<pre><code>var Dog = function () {
+ this.age = 11;
+ this.color = "black";
+ this.name = "Ralph";
+ return this;
+}
+
+Dog.prototype.name = function(name) {
+ this.name = name;
+ return this;
+}
+
+
+var myNewDog = new Dog();
+myNewDog.name("Cassidy"); //Uncaught TypeError: myNewDog.name is not a function</code></pre>
+
+<p>代わりに異なるプロパティ名を使ってください:</p>
+
+<pre><code>var Dog = function () {
+ this.age = 11;
+ this.color = "black";
+ this.dogName = "Ralph"; //Using this.dogName instead of .name
+ return this;
+}
+
+Dog.prototype.name = function(name) {
+ this.dogName = name;
+ return this;
+}
+
+
+var myNewDog = new Dog();
+myNewDog.name("Cassidy"); //Dog { age: 11, color: 'black', dogName: 'Cassidy' }</code></pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions">Functions</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/not_defined/index.html b/files/ja/web/javascript/reference/errors/not_defined/index.html
new file mode 100644
index 0000000000..3dc0feddee
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/not_defined/index.html
@@ -0,0 +1,72 @@
+---
+title: 'ReferenceError: "x" is not defined'
+slug: Web/JavaScript/Reference/Errors/Not_defined
+tags:
+ - Error
+ - JavaScript
+ - ReferenceError
+translation_of: Web/JavaScript/Reference/Errors/Not_defined
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の例外 "<em>variable</em> is not defined" は、どこかで参照している変数が存在しない場合に発生します。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox notranslate">ReferenceError: "x" is not defined
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("ReferenceError")}}.</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">原因</h2>
+
+<p>どこかで存在しない変数を参照しています。この変数を宣言しておくか、現在のスクリプトまたは<a href="/ja/docs/Glossary/scope">スコープ</a>で利用可能であることを確認する必要があります。</p>
+
+<div class="note">
+<p><strong>メモ:</strong> ライブラリ (jQuery など) を読み込むとき、ライブラリの変数、例えば "$" にアクセスする前に読み込みが行われるかを確認してください。ライブラリを読み込む {{HTMLElement("script")}} 要素は、それを使用するコードよりも前に置いてください。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Variable_not_declared" name="Variable_not_declared">宣言されていない変数</h3>
+
+<pre class="brush: js example-bad notranslate">foo.substring(1); // ReferenceError: foo is not defined
+</pre>
+
+<p>"foo" と言う変数はどこにも宣言されていません。これは文字列である必要があり、それならば {{jsxref("String.prototype.substring()")}} メソッドが動作します。</p>
+
+<pre class="brush: js example-good notranslate">var foo = 'bar';
+foo.substring(1); // "ar"</pre>
+
+<h3 id="Wrong_scope" name="Wrong_scope">スコープの間違い</h3>
+
+<p>変数は現在の実行コンテキストで利用可能である必要があります。<a href="/ja/docs/Web/JavaScript/Reference/Functions">関数</a>の中で定義された変数は、その関数のスコープ内でしか定義されていないので、関数の外のどこからもアクセスできません。</p>
+
+<pre class="brush: js example-bad notranslate">function numbers() {
+ var num1 = 2,
+ num2 = 3;
+ return num1 + num2;
+}
+
+console.log(num1); // ReferenceError num1 is not defined.</pre>
+
+<p>しかし、関数はそれが定義されたスコープ内で定義されたすべての変数と関数にアクセスすることができます。言い換えれば、グローバルスコープで定義された関数は、グローバルスコープ内で定義されたすべての変数にアクセスすることができます。/p&gt;</p>
+
+<pre class="brush: js example-good notranslate">var num1 = 2,
+ num2 = 3;
+
+function numbers() {
+ return num1 + num2;
+}
+
+console.log(numbers()); // 5</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Glossary/Scope">Scope</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Grammar_and_types#Declaring_variables">変数の宣言 (JavaScript ガイド)</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Functions#Function_scope/en-US/docs/">関数のスコープ (JavaScript ガイド)</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/precision_range/index.html b/files/ja/web/javascript/reference/errors/precision_range/index.html
new file mode 100644
index 0000000000..3835308c42
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/precision_range/index.html
@@ -0,0 +1,96 @@
+---
+title: 'RangeError: precision is out of range'
+slug: Web/JavaScript/Reference/Errors/Precision_range
+tags:
+ - Errors
+ - JavaScript
+ - RangeError
+translation_of: Web/JavaScript/Reference/Errors/Precision_range
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">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)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("RangeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>これらのメソッドのいずれかで、 範囲外の精度を引数を使用しています:</p>
+
+<ul>
+ <li>{{jsxref("Number.prototype.toExponential()")}}</li>
+ <li>{{jsxref("Number.prototype.toFixed()")}}</li>
+ <li>{{jsxref("Number.prototype.toPrecision()")}}</li>
+</ul>
+
+<p>これらのメソッドで許可されている範囲は、通常 0 と 20(または 21)の間です。しかし、ECMAScript 仕様では、この範囲の拡張が認められています。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">メソッド</th>
+ <th scope="col">Firefox (SpiderMonkey</th>
+ <th scope="col">Chrome, Opera (V8)</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{jsxref("Number.prototype.toExponential()")}}</td>
+ <td>0 から 100</td>
+ <td>0 から 20</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.prototype.toFixed()")}}</td>
+ <td>-20 から 100</td>
+ <td>0 から 20</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.prototype.toPrecision()")}}</td>
+ <td>1 から 100</td>
+ <td>1 から 21</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<pre class="brush: js example-bad">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
+</pre>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<pre class="brush: js example-good">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 (この場合は丸めが発生することに注意してください)
+
+5.123456.toPrecision(5); // 5.1235
+5.123456.toPrecision(2); // 5.1
+5.123456.toPrecision(1); // 5
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Number.prototype.toExponential()")}}</li>
+ <li>{{jsxref("Number.prototype.toFixed()")}}</li>
+ <li>{{jsxref("Number.prototype.toPrecision()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/property_access_denied/index.html b/files/ja/web/javascript/reference/errors/property_access_denied/index.html
new file mode 100644
index 0000000000..30015bdc4f
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/property_access_denied/index.html
@@ -0,0 +1,51 @@
+---
+title: 'Error: Permission denied to access property "x"'
+slug: Web/JavaScript/Reference/Errors/Property_access_denied
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - Security
+translation_of: Web/JavaScript/Reference/Errors/Property_access_denied
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の例外 "Permission denied to access property" は、権限がない状態でオブジェクトへのアクセスの試行があった場合に発生します。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox notranslate">Error: Permission denied to access property "x"
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("Error")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">原因</h2>
+
+<p>権限がない状態でオブジェクトへのアクセスの試行がありました。これは異なるドメインから読み込んだ {{HTMLElement("iframe")}} 要素が<a href="/ja/docs/Web/Security/Same-origin_policy">同一オリジンポリシー</a>に違反する場合などです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="No_permission_to_access_document" name="No_permission_to_access_document">文書にアクセスする権限がない</h3>
+
+<pre class="brush: html notranslate">&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;iframe id="myframe" src="http://www1.w3c-test.org/common/blank.html"&gt;&lt;/iframe&gt;
+ &lt;script&gt;
+ onload = function() {
+ console.log(frames[0].document);
+ // Error: Permission denied to access property "document"
+ }
+ &lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body&gt;&lt;/body&gt;
+&lt;/html&gt;</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{HTMLElement("iframe")}}</li>
+ <li><a href="/ja/docs/Web/Security/Same-origin_policy">同一オリジンポリシー</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/read-only/index.html b/files/ja/web/javascript/reference/errors/read-only/index.html
new file mode 100644
index 0000000000..7aa68e012f
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/read-only/index.html
@@ -0,0 +1,81 @@
+---
+title: 'TypeError: "x" is read-only'
+slug: Web/JavaScript/Reference/Errors/Read-only
+tags:
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Read-only
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: "x" is read-only (Firefox)
+TypeError: 0 is read-only (Firefox)
+TypeError: Cannot assign to read only property 'x' of #&lt;Object&gt; (Chrome)
+TypeError: Cannot assign to read only property '0' of [object Array] (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>値を割り当てようとしたグローバル変数、またはオブジェクトのプロパティが読み取り専用プロパティです。(技術的には、 <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty#Writable_attribute">non-writable データプロパティ</a> です。)</p>
+
+<p>このエラーは、<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モードコード</a> のときにだけ発生します。strict コードではない場合、割り当ては無視されるだけです。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<p>読み取り専用プロパティはさほど一般的ではありませんが、 {{jsxref("Object.defineProperty()")}}、または {{jsxref("Object.freeze()")}} を使用して生成できます。</p>
+
+<pre class="brush: js example-bad">"use strict";
+var obj = Object.freeze({name: "Elsa", score: 157});
+obj.score = 0; // TypeError
+
+"use strict";
+Object.defineProperty(this, "LUNG_COUNT", {value: 2, writable: false});
+LUNG_COUNT = 3; // TypeError
+
+"use strict";
+var frozenArray = Object.freeze([0, 1, 2]);
+frozenArray[0]++; // TypeError
+</pre>
+
+<p>JavaScript のビルトインにも、いくつか読み取り専用プロパティがあります。 Math の定数を再定義しようとしたとします。</p>
+
+<pre class="brush: js example-bad">"use strict";
+Math.PI = 4; // TypeError
+</pre>
+
+<p>残念ながらできません。</p>
+
+<p>グローバル変数の <code>undefined</code> も読み取り専用のため、このようにすると悪名高い "undefined is not a function" エラーが発生します:</p>
+
+<pre class="brush: js example-bad">"use strict";
+undefined = function () {}; // TypeError: "undefined" is read-only
+</pre>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<pre class="brush: js example-good">"use strict";
+var obj = Object.freeze({name: "Score", points: 157});
+obj = {name: obj.name, points: 0}; // 新しいオブジェクトで置き換える
+
+"use strict";
+var LUNG_COUNT = 2; // `var` が使われているので、読み取り専用ではない
+LUNG_COUNT = 3; // ok (解剖学的にはおかしいけれども)
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Object.freeze()")}}</li>
+ <li><a href="https://www.answers.com/Q/Which_animals_have_three_lungs">"Which animals have three lungs?" on answers.com</a></li>
+ <li><a href="https://aliens.wikia.com/wiki/Klingon">Klingons</a> (問いへの別解)</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/redeclared_parameter/index.html b/files/ja/web/javascript/reference/errors/redeclared_parameter/index.html
new file mode 100644
index 0000000000..c8baee62ea
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/redeclared_parameter/index.html
@@ -0,0 +1,61 @@
+---
+title: 'SyntaxError: redeclaration of formal parameter "x"'
+slug: Web/JavaScript/Reference/Errors/Redeclared_parameter
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Redeclared_parameter
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の例外 "redeclaration of formal parameter" は、関数の引数名としてある変数名が発生した後、関数本体内の {{jsxref("Statements/let", "let")}} 代入文を使用して同じ変数名を再度宣言すると発生します。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox notranslate">SyntaxError: Let/Const redeclaration (Edge)
+SyntaxError: redeclaration of formal parameter "x" (Firefox)
+SyntaxError: Identifier "x" has already been declared (Chrome)
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">エラーの原因</h2>
+
+<p>関数の引数と同名の変数があり、関数内で再度 {{jsxref("Statements/let", "let")}} 代入文を使用して再宣言しています。 JavaScript では、同じ関数内やブロックスコープ内で <code>let</code> を使用して同じ変数を再宣言できません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Redeclared_argument" name="Redeclared_argument">再宣言した引数</h3>
+
+<p>この場合、変数 "arg" は、引数を再宣言しています。</p>
+
+<pre class="brush: js example-bad notranslate">function f(arg) {
+ let arg = 'foo';
+}
+
+// SyntaxError: redeclaration of formal parameter "arg"
+</pre>
+
+<p>関数の本体内で "arg" の値を変更したい場合、これを行うことはできますが、再び同じ変数を宣言する必要はありません。言い換えれば、 <code>let</code> キーワードを省略することができます。新しい変数を生成する場合は、既存の関数の引数と競合するので、変数名を変更する必要があります。</p>
+
+<pre class="brush: js example-good notranslate">function f(arg) {
+ arg = 'foo';
+}
+
+function f(arg) {
+ let bar = 'foo';
+}
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/let", "let")}}</li>
+ <li>{{jsxref("Statements/const", "const")}}</li>
+ <li>{{jsxref("Statements/var", "var")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide">JavaScript ガイド</a> 内の <a href="/ja/docs/Web/JavaScript/Guide/Grammar_and_Types#Declarations">宣言</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html b/files/ja/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html
new file mode 100644
index 0000000000..4af643bcdb
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/reduce_of_empty_array_with_no_initial_value/index.html
@@ -0,0 +1,88 @@
+---
+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
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: reduce of empty array with no initial value
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>JavaScript には、複数の reduce 関数があります:</p>
+
+<ul>
+ <li>{{jsxref("Array.prototype.reduce()")}}、{{jsxref("Array.prototype.reduceRight()")}} と</li>
+ <li>{{jsxref("TypedArray.prototype.reduce()")}}、{{jsxref("TypedArray.prototype.reduceRight()")}})。</li>
+</ul>
+
+<p>これらの関数は、オプションとして (最初に <code>callback</code> が呼び出される際の最初の引数として使用される) <code>initialValue</code> を受け取ります。しかし、初期値を提供しない場合は、{{jsxref("Array")}} や {{jsxref("TypedArray")}} の最初の要素が初期値として使用されます。空の配列が提供されて初期値を取得できない場合にこのエラーが発生します。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<p>この問題は、しばしばリストのすべての要素を取り除くフィルター ({{jsxref("Array.prototype.filter()")}}、{{jsxref("TypedArray.prototype.filter()")}}) で結合した際に発生します。したがって、初期値がないまま使用することになります。</p>
+
+<pre class="brush: js example-bad">var ints = [0, -1, -2, -3, -4, -5];
+ints.filter(x =&gt; x &gt; 0) // removes all elements
+ .reduce((x, y) =&gt; x + y) // no more elements to use for the initial value.</pre>
+
+<p>似たようなケースとして、セレクターに typo がある場合やリストに予想外の数の要素がある場合に同様の問題が発生します:</p>
+
+<pre class="brush: js example-bad">var names = document.getElementsByClassName("names");
+var name_list = Array.prototype.reduce.call(names, (acc, name) =&gt; acc + ", " + name);
+</pre>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<p>これらの問題は、2 つの異なる方法で解決できます。</p>
+
+<p>1 つ目の方法は、<code>initialValue</code> を提供することです; 加算の場合には 0、乗算の場合には 1、文字連結の場合は空文字など、その操作にとって自然な値を指定します。</p>
+
+<pre class="brush: js example-good">var ints = [0, -1, -2, -3, -4, -5];
+ints.filter(x =&gt; x &lt; 0) // removes all elements
+ .reduce((x, y) =&gt; x + y, 0) // the initial value is the neutral element of the addition
+</pre>
+
+<p>もう 1 つの方法は、<code>reduce</code> を呼び出す前、または予期しないダミーの初期値を追加した後にコールバックで空のケースを処理する 2 つの方法です。</p>
+
+<pre class="brush: js example-good">var names = document.getElementsByClassName("names");
+
+var name_list1 = "";
+if (names1.length &gt;= 1)
+ name_list1 = Array.prototype.reduce.call(names, (acc, name) =&gt; acc + ", " + name);
+// name_list1 == "" when names is empty.
+
+var name_list2 = Array.prototype.reduce.call(names, (acc, name) =&gt; {
+ if (acc == "") // initial value
+ return name;
+ return acc + ", " + name;
+}, "");
+// name_list2 == "" when names is empty.
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.reduce()")}}</li>
+ <li>{{jsxref("Array.prototype.reduceRight()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.reduce()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.reduceRight()")}}</li>
+ <li>{{jsxref("Array")}}</li>
+ <li>{{jsxref("TypedArray")}}</li>
+ <li>{{jsxref("Array.prototype.filter()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.filter()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/reserved_identifier/index.html b/files/ja/web/javascript/reference/errors/reserved_identifier/index.html
new file mode 100644
index 0000000000..7f2ef49d74
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/reserved_identifier/index.html
@@ -0,0 +1,80 @@
+---
+title: 'SyntaxError: "x" is a reserved identifier'
+slug: Web/JavaScript/Reference/Errors/Reserved_identifier
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Reserved_identifier
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: "x" is a reserved identifier (Firefox)
+SyntaxError: Unexpected reserved word (Chrome)</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#キーワード">予約語</a>を識別子として使用した場合、エラーをスローします。これらは strict モードと通常モードの双方で予約されています:</p>
+
+<ul>
+ <li><code>enum</code></li>
+</ul>
+
+<p>次のものは strict モードのコードでのみ予約されています:</p>
+
+<ul class="threecolumns">
+ <li><code>implements</code></li>
+ <li><code>interface</code></li>
+ <li>{{jsxref("Statements/let", "let")}}</li>
+ <li><code>package</code></li>
+ <li><code>private</code></li>
+ <li><code>protected</code></li>
+ <li><code>public</code></li>
+ <li><code>static</code></li>
+</ul>
+
+<h2 id="例">例</h2>
+
+<h3 id="Strict_モードと_非_Strict_モードで予約されているキーワード">Strict モードと 非 Strict モードで予約されているキーワード</h3>
+
+<p><code>enum</code> 識別子は全般的に予約されています。</p>
+
+<pre class="brush: js example-bad">var enum = { RED: 0, GREEN: 1, BLUE: 2 };
+// SyntaxError: enum is a reserved identifier
+</pre>
+
+<p>strict モードのコードでは、より多くの識別子が予約されています。</p>
+
+<pre class="brush: js example-bad">"use strict";
+var package = ["potatoes", "rice", "fries"];
+// SyntaxError: package is a reserved identifier
+</pre>
+
+<p>これらの変数名を変更する必要があります。</p>
+
+<pre class="brush: js example-good">var colorEnum = { RED: 0, GREEN: 1, BLUE: 2 };
+var list = ["potatoes", "rice", "fries"];</pre>
+
+<h3 id="古いブラウザーを更新する">古いブラウザーを更新する</h3>
+
+<p>たとえば、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code> や <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/class">class</a></code> をまだ実装していない古いブラウザーを使用している場合、それらの新しい言語機能をサポートしているより新しいブラウザーにアップデートすべきです。</p>
+
+<pre class="brush: js">"use strict";
+class DocArchiver {}
+
+// SyntaxError: class is a reserved identifier
+// (たとえば、Firefox 44 以前の古いブラウザーはエラーをスローします)
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="http://wiki.c2.com/?GoodVariableNames">Good variable names</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/resulting_string_too_large/index.html b/files/ja/web/javascript/reference/errors/resulting_string_too_large/index.html
new file mode 100644
index 0000000000..cf8ca31ba1
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/resulting_string_too_large/index.html
@@ -0,0 +1,49 @@
+---
+title: 'RangeError: repeat count must be less than infinity'
+slug: Web/JavaScript/Reference/Errors/Resulting_string_too_large
+tags:
+ - Errors
+ - JavaScript
+ - RangeError
+translation_of: Web/JavaScript/Reference/Errors/Resulting_string_too_large
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">RangeError: repeat count must be less than infinity and not overflow maximum string size (Firefox)
+
+RangeError: Invalid count value (Chrome)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("RangeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>{{jsxref("String.prototype.repeat()")}} メソッドを使用します。<code>count</code> パラメーターは、文字列の繰り返し回数を指定します。 これは 0 から正の {{jsxref("Infinity")}} 以下の値である必要があり、負数は使用できません。有効値の範囲はこのように表現できます: [0, +∞)。</p>
+
+<p>結果の文字列は、文字列サイズの最大値以上にはできません。これは JavaScript エンジンによって異なります。 Firefox(SpiderMonkey) の最大文字列数hは、 2<sup>28</sup> -1 (<code>0xFFFFFFF)</code>です。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<pre class="brush: js example-bad">'abc'.repeat(Infinity); // RangeError
+'a'.repeat(2**28); // RangeError
+</pre>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<pre class="brush: js example-good">'abc'.repeat(0); // ''
+'abc'.repeat(1); // 'abc'
+'abc'.repeat(2); // 'abcabc'
+'abc'.repeat(3.5); // 'abcabcabc' (count は整数に変換されます)
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.repeat()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/stmt_after_return/index.html b/files/ja/web/javascript/reference/errors/stmt_after_return/index.html
new file mode 100644
index 0000000000..e41eaa6b86
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/stmt_after_return/index.html
@@ -0,0 +1,81 @@
+---
+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
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の警告 "unreachable code after return statement" は、 {{jsxref("Statements/return", "return")}} 文の後で式を使用したり、セミコロンのない return 文を使用して、その直後に式を置いたりした場合に発生します。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox">Warning: unreachable code after return statement (Firefox)
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>警告</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">原因</h2>
+
+<p>unreachable code after a return statement は、以下のような場合に発生することがあります。</p>
+
+<ul>
+ <li>{{jsxref("Statements/return", "return")}} 文の後で式を使用している場合</li>
+ <li>セミコロンがない return 文の直後に式を置いている場合</li>
+</ul>
+
+<p>有効な <code>return</code> 文の後に式がある場合、警告は <code>return</code> 文の後のコードには到達しない、つまり決して実行されないことを表します。</p>
+
+<p><code>return</code> 文の後にセミコロンをつけるべきなのはなぜでしょうか。セミコロンがない <code>return</code> 文の場合、開発者が次の行にある文を返そうとしているのか、処理を停止して戻ろうとしているのかが不明確になってしまいます。この警告は、 <code>return</code> 文の書かれ方にあいまいさがあることを示しています。</p>
+
+<p>以下の文の場合、セミコロンがない場合の return の警告は表示されません。</p>
+
+<ul>
+ <li>{{jsxref("Statements/throw", "throw")}}</li>
+ <li>{{jsxref("Statements/break", "break")}}</li>
+ <li>{{jsxref("Statements/var", "var")}}</li>
+ <li>{{jsxref("Statements/function", "function")}}</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Invalid_cases" name="Invalid_cases">無効な場合</h3>
+
+<pre class="brush: js example-bad">function f() {
+ var x = 3;
+ x += 4;
+ return x; // return は直ちに関数を終了します。
+ x -= 3; // そのため、この行は実行されません。到達不可能です。
+}
+
+function f() {
+ return // これは `return;` のように扱われます。
+ 3 + 4; // そのため、関数を抜け出し、この行には決して到達しません。
+}
+</pre>
+
+<h3 id="Valid_cases" name="Valid_cases">妥当な場合</h3>
+
+<pre class="brush: js example-good">function f() {
+ var x = 3;
+ x += 4;
+ x -= 3;
+ return x; // OK: すべての式の後に return があります。
+}
+
+function f() {
+ return 3 + 4 // OK: 同じ行に式があるセミコロンなしの return です。
+}
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/return", "自動セミコロン挿入", "#Automatic_Semicolon_Insertion", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/strict_non_simple_params/index.html b/files/ja/web/javascript/reference/errors/strict_non_simple_params/index.html
new file mode 100644
index 0000000000..db18025e07
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/strict_non_simple_params/index.html
@@ -0,0 +1,111 @@
+---
+title: 'SyntaxError: "use strict" not allowed in function with non-simple parameters'
+slug: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params
+tags:
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">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
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>次の引数のうちいずれかを持つ関数の先頭に <code>"use strict"</code> ディレクティブが書かれています:</p>
+
+<ul>
+ <li>{{jsxref("Functions/Default_parameters", "Default parameters", "", 1)}}</li>
+ <li>{{jsxref("Functions/rest_parameters", "Rest parameters", "", 1)}}</li>
+ <li>{{jsxref("Operators/Destructuring_assignment", "Destructuring parameters", "", 1)}}</li>
+</ul>
+
+<p>ECMAScript 仕様に則って、このような関数の先頭では <code>"use strict"</code> を使用できません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="Function_ステートメント">Function ステートメント</h3>
+
+<p>このケースでは、関数 <code>sum</code> は既定値を持つ引数 <code>a=1</code> と <code>b=2</code> を持っています:</p>
+
+<pre class="brush: js example-bad">function sum(a=1, b=2) {
+ // SyntaxError: "use strict" not allowed in function with default parameter
+ "use strict";
+ return a + b;
+}
+</pre>
+
+<p>関数を <a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a>にしたい、かつスクリプト全体、またはエンクロージャー関数が strict モードになってもよいなら、<code>"use strict"</code> ディレクティブを関数の外側に移動できます:</p>
+
+<pre class="brush: js example-good">"use strict";
+function sum(a=1, b=2) {
+ return a + b;
+}
+</pre>
+
+<h3 id="Function_式">Function 式</h3>
+
+<p>function 式では、別の回避策をとることができます:</p>
+
+<pre class="brush: js example-bad">var sum = function sum([a, b]) {
+ // SyntaxError: "use strict" not allowed in function with destructuring parameter
+ "use strict";
+ return a + b;
+};
+</pre>
+
+<p>これは、次の式に変換できます:</p>
+
+<pre class="brush: js example-good">var sum = (function() {
+ "use strict";
+ return function sum([a, b]) {
+ return a + b;
+ };
+})();
+</pre>
+
+<h3 id="アロー関数">アロー関数</h3>
+
+<p>アロー関数が <code>this</code> 変数にアクセスする必要がある場合、アロー関数をエンクロージャー関数として使用できます:</p>
+
+<pre class="brush: js example-bad">var callback = (...args) =&gt; {
+ // SyntaxError: "use strict" not allowed in function with rest parameter
+ "use strict";
+ return this.run(args);
+};
+</pre>
+
+<p>これは、次の式に変換できます:</p>
+
+<pre class="brush: js example-good">var callback = (() =&gt; {
+ "use strict";
+ return (...args) =&gt; {
+ return this.run(args);
+ };
+})();
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Strict_mode", "Strict mode", "", 1)}}</li>
+ <li>{{jsxref("Statements/function", "function statement", "", 1)}}</li>
+ <li>{{jsxref("Operators/function", "function expression", "", 1)}}</li>
+ <li>{{jsxref("Functions/Default_parameters", "Default parameters", "", 1)}}</li>
+ <li>{{jsxref("Functions/rest_parameters", "Rest parameters", "", 1)}}</li>
+ <li>{{jsxref("Operators/Destructuring_assignment", "Destructuring parameters", "", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/too_much_recursion/index.html b/files/ja/web/javascript/reference/errors/too_much_recursion/index.html
new file mode 100644
index 0000000000..d58ea41eb0
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/too_much_recursion/index.html
@@ -0,0 +1,119 @@
+---
+title: 'InternalError: too much recursion'
+slug: Web/JavaScript/Reference/Errors/Too_much_recursion
+tags:
+ - Error
+ - Errors
+ - InternalError
+ - JavaScript
+translation_of: Web/JavaScript/Reference/Errors/Too_much_recursion
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox">Error: Out of stack space (Edge)
+InternalError: too much recursion (Firefox)
+RangeError: Maximum call stack size exceeded (Chrome)
+</pre>
+
+<h2 id="Error_Type" name="Error_Type">エラーの種類</h2>
+
+<p>{{jsxref("InternalError")}}。</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">エラーの原因</h2>
+
+<p>自分自身を呼び出す関数は<em>再帰関数</em>と呼ばれます。ある条件を満たすと、関数は自分自身を呼び出すのをやめます。これは<em>基礎ケース</em>と呼ばれます。</p>
+
+<p>いくつかの点で、再帰はループに似ています。両方とも、同じコードを複数回実行し、 (無限ループまたは無限再帰を避けるために) 条件を必要とします。<span class="seoSummary">関数の再帰呼び出しが深すぎる場合、または関数が基礎ケースを欠いている場合、 JavaScript はこのエラーを発生します。</span></p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>終了条件に従って、この再帰関数は 10 回実行されます。</p>
+
+<pre class="brush: js">function loop(x) {
+ if (x &gt;= 10) // "x &gt;= 10" は終了条件
+ return;
+ // 何かを実行
+ loop(x + 1); // 再帰呼び出し
+}
+loop(0);</pre>
+
+<p>この条件に、非常に大きい値を設定すると動作しません。</p>
+
+<pre class="brush: js example-bad">function loop(x) {
+ if (x &gt;= 1000000000000)
+ return;
+ // 何かを実行
+ loop(x + 1);
+}
+loop(0);
+
+// InternalError: too much recursion</pre>
+
+<p>この再帰関数は基礎ケースを欠いています。脱出条件がないため、この関数は自分自身を無限に呼び出し続けます。</p>
+
+<pre class="brush: js example-bad">function loop(x) {
+ // The base case is missing
+
+loop(x + 1); // 再帰呼び出し
+}
+
+loop(0);
+
+// InternalError: too much recursion</pre>
+
+<h3 id="Class_error_too_much_recursion" name="Class_error_too_much_recursion">Class error: too much recursion</h3>
+
+<pre class="brush: js example-bad">class Person{
+ constructor(){}
+ set name(name){
+ this.name = name; // 再帰呼び出し
+ }
+}
+
+
+const tony = new Person();
+tony.name = "Tonisha"; // InternalError: too much recursion
+</pre>
+
+<p>値がプロパティ name に代入されるとき (this.name = name;) JavaScript はプロパティを設定する必要があります。これが発生すると、セッター関数が呼び出されます。</p>
+
+<pre class="brush: js example-bad">set name(name){
+ this.name = name; // 再帰呼び出し
+}
+</pre>
+
+<div class="note">
+<p>この例では、セッターが呼び出されたとき、同じことを再度行うように指示されます。<em>つまり、処理しているのと同じプロパティに設定します。</em>これにより、関数は何度も何度も自分自身を呼び出し、無限に再帰が行われます。</p>
+</div>
+
+<p>この問題は同じ変数がゲッターに使用される場合にも発生します。</p>
+
+<pre class="brush: js example-bad">get name(){
+ return this.name; // 再帰呼び出し
+}
+</pre>
+
+<p>この問題を防ぐには、セッター関数の内部で代入しようとしているプロパティが、もともとセッターを起動したものと異なっていることを確認してください。同じことがゲッターにも言えます。</p>
+
+<pre class="brush: js">class Person{
+ constructor(){}
+ set name(name){
+ this._name = name;
+ }
+ get name(){
+ return this._name;
+ }
+}
+const tony = new Person();
+tony.name = "Tonisha";
+console.log(tony);
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{Glossary("Recursion", "再帰")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Functions#Recursion">再帰関数</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/typed_array_invalid_arguments/index.html b/files/ja/web/javascript/reference/errors/typed_array_invalid_arguments/index.html
new file mode 100644
index 0000000000..b1c8d14d35
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/typed_array_invalid_arguments/index.html
@@ -0,0 +1,77 @@
+---
+title: 'TypeError: invalid arguments'
+slug: Web/JavaScript/Reference/Errors/Typed_array_invalid_arguments
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Typed_array_invalid_arguments
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: invalid arguments (Firefox)</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>新しい typed array を生成するために、<a href="/ja/docs/Web/JavaScript/Typed_arrays">Typed array</a> コンストラクターに以下のいずれかの値を渡す必要があります。</p>
+
+<ul>
+ <li>長さ</li>
+ <li>ほかの typed array</li>
+ <li>配列状オブジェクト</li>
+ <li>反復可能オブジェクト</li>
+ <li>{{jsxref("ArrayBuffer")}} オブジェクト</li>
+</ul>
+
+<p>そのほかのコンストラクター引数では、有効な typed array を生成できません。</p>
+
+<h2 id="例">例</h2>
+
+<p>Typed array、たとえば {{jsxref("Uint8Array")}} は文字列から構成できません。事実、文字列はまったく typed array にすることはできません。</p>
+
+<pre class="brush: js example-bad">var ta = new Uint8Array("nope");
+// TypeError: invalid arguments
+</pre>
+
+<p>有効な {{jsxref("Uint8Array")}} を生成するほかの方法:</p>
+
+<pre class="brush: js example-good">// From a length
+var uint8 = new Uint8Array(2);
+uint8[0] = 42;
+console.log(uint8[0]); // 42
+console.log(uint8.length); // 2
+console.log(uint8.BYTES_PER_ELEMENT); // 1
+
+// From an array
+var arr = new Uint8Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Uint8Array([21, 31]);
+var y = new Uint8Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(8);
+var z = new Uint8Array(buffer, 1, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var uint8 = new Uint8Array(iterable);
+// Uint8Array[1, 2, 3]
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">Typed array</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("Uint8Array")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/undeclared_var/index.html b/files/ja/web/javascript/reference/errors/undeclared_var/index.html
new file mode 100644
index 0000000000..1f5f446286
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/undeclared_var/index.html
@@ -0,0 +1,67 @@
+---
+title: 'ReferenceError: assignment to undeclared variable "x"'
+slug: Web/JavaScript/Reference/Errors/Undeclared_var
+tags:
+ - Errors
+ - JavaScript
+ - ReferenceError
+ - Strict Mode
+translation_of: Web/JavaScript/Reference/Errors/Undeclared_var
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">ReferenceError: assignment to undeclared variable "x" (Firefox)
+ReferenceError: "x" is not defined (Chrome)
+ReferenceError: Variable undefined in strict mode (Edge)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a> でのみ、{{jsxref("ReferenceError")}} の警告が出ます。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>宣言していない変数に値を割り当てています。つまり、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/var">var</a></code> キーワードを使用せずに割り当てをしています。 宣言した変数と宣言していない変数の間には、予想外の結果を招くいくつかの違いがあります。それが、strict モードで JavaScript がエラーを発生させる理由です。</p>
+
+<p>宣言した変数と宣言していない変数について、3 つの注意点があります:</p>
+
+<ul>
+ <li>宣言した変数は、それが宣言された実行コンテキストに制限されます。.宣言していない変数は常にグローバルです。</li>
+ <li>宣言した変数は、コードが実行される前に生成されます。宣言していない変数は、それに割り当てるコードが実行されるまで存在しません。</li>
+ <li>宣言した変数は、その実行コンテキスト(関数かグローバル)で設定不可能なプロパティです。 宣言していない変数は、設定可能です(たとえば、削除できます)。</li>
+</ul>
+
+<p>詳細や具体例は、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/var">var</a></code> 参照ページを見てください。</p>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モードのコード</a> でのみ、宣言していない変数割り当てエラーが発生します。非 strict コードでは、それらは暗黙裡に無視されます。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<p>このケースでは、変数 "bar" は宣言していない変数です。</p>
+
+<pre class="brush: js example-bad">function foo() {
+ "use strict";
+ bar = true;
+}
+foo(); // ReferenceError: assignment to undeclared variable bar
+</pre>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<p>"bar" を宣言した変数にするために、"bar" の前に、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/var">var</a></code> キーワードを追加します。</p>
+
+<pre class="brush: js example-good">function foo() {
+ "use strict";
+ var bar = true;
+}
+foo();</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">Strict モード</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/undefined_prop/index.html b/files/ja/web/javascript/reference/errors/undefined_prop/index.html
new file mode 100644
index 0000000000..cb2ec02f1a
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/undefined_prop/index.html
@@ -0,0 +1,59 @@
+---
+title: 'ReferenceError: reference to undefined property "x"'
+slug: Web/JavaScript/Reference/Errors/Undefined_prop
+tags:
+ - Errors
+ - JavaScript
+ - ReferenceError
+ - Strict Mode
+translation_of: Web/JavaScript/Reference/Errors/Undefined_prop
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">ReferenceError: reference to undefined property "x" (Firefox)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a> でのみ、{{jsxref("ReferenceError")}} の警告が出ます。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>存在しないオブジェクトのプロパティにアクセスしようとしています。プロパティにアクセスする方法は 2 つあります。詳細については、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">メンバー演算子</a>参照ページを見てください。</p>
+
+<p>未定義プロパティを参照することによるエラーは、<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モードのコード</a>でのみ発生します。非 strict コードでは、暗黙的に無視されます。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<p>このケースでは、"bar" は未定義のプロパティです。</p>
+
+<pre class="brush: js example-bad">"use strict";
+
+var foo = {};
+foo.bar; // ReferenceError: reference to undefined property "bar"
+</pre>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<p>エラーを避けるには、"bar" プロパティを定義するか、使用する前に "bar" プロパティが存在するか確認する必要があります(たとえば、{{jsxref("Object.prototype.hasOwnProperty()")}} メソッドを使用します)。</p>
+
+<pre class="brush: js example-good">"use strict";
+
+var foo = {};
+
+foo.bar = "moon";
+console.log(foo.bar); // "moon"
+
+if (foo.hasOwnProperty("bar") {
+ console.log(foo.bar);
+}</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">Strict モード</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/unexpected_token/index.html b/files/ja/web/javascript/reference/errors/unexpected_token/index.html
new file mode 100644
index 0000000000..df9f554ab2
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/unexpected_token/index.html
@@ -0,0 +1,81 @@
+---
+title: 'SyntaxError: Unexpected token'
+slug: Web/JavaScript/Reference/Errors/Unexpected_token
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Unexpected_token
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox">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 '=&gt;' after argument list, got "x"
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">エラーの原因</h2>
+
+<p>特定の言語構造が予想されている箇所に、ほかのものが提供されています。これは単純なタイプミスの可能性があります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Expression_expected" name="Expression_expected">式が期待される</h3>
+
+<p>たとえば関数を呼び出すとき、末尾のカンマは許可されていません。</p>
+
+<pre class="brush: js example-bad">for (let i = 0; i &lt; 5,; ++i) {
+ console.log(i);
+}
+// SyntaxError: expected expression, got ')'
+</pre>
+
+<p>正しくは、カンマを省略するか、他の式を追加するかしてください。</p>
+
+<pre class="brush: js example-good">for (let i = 0; i &lt; 5; ++i) {
+ console.log(i);
+}
+</pre>
+
+<h3 id="Not_enough_brackets" name="Not_enough_brackets">括弧の不足</h3>
+
+<p>時々、 <code>if</code> 文を囲む括弧を忘れることがあります。</p>
+
+<pre class="brush: js example-bad line-numbers language-js">function round(n, upperBound, lowerBound){
+ if(n &gt; upperBound) || (n &lt; lowerBound){
+ throw 'Number ' + String(n) + ' is more than ' + String(upperBound) + ' or less than ' + String(lowerBound);
+ }else if(n &lt; ((upperBound + lowerBound)/2)){
+ return lowerBound;
+ }else{
+ return upperBound;
+ }
+} // SyntaxError: expected expression, got '||'</pre>
+
+<p>最初は括弧が正しく見えますが、 <code>||</code> が括弧の外にあることに注意してください。 <code>||</code> の周囲を括弧で囲むように修正してください。</p>
+
+<pre class="brush: js example-good">function round(n, upperBound, lowerBound){
+ if((n &gt; upperBound) || (n &lt; lowerBound)){
+ throw 'Number ' + String(n) + ' is more than ' + String(upperBound) + ' or less than ' + String(lowerBound);
+ }else if(n &lt; ((upperBound + lowerBound)/2)){
+ return lowerBound;
+ }else{
+ return upperBound;
+ }
+}
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("SyntaxError")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/unexpected_type/index.html b/files/ja/web/javascript/reference/errors/unexpected_type/index.html
new file mode 100644
index 0000000000..bf43a41039
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/unexpected_type/index.html
@@ -0,0 +1,77 @@
+---
+title: 'TypeError: "x" is (not) "y"'
+slug: Web/JavaScript/Reference/Errors/Unexpected_type
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Unexpected_type
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<p>JavaScript の例外 "<em>x</em> is (not) <em>y</em>" は、予期しない型があったときに発生します。よくあるのは、予期せず {{jsxref("undefined")}} または {{jsxref("null")}} の値があった場合です。</p>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox notranslate">TypeError: Unable to get property {x} of undefined or null reference (Edge)
+TypeError: "x" is (not) "y" (Firefox)
+
+例:
+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
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラー種別</h2>
+
+<p>{{jsxref("TypeError")}}。</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">エラーの原因</h2>
+
+<p>予期しない型がありました。これは {{jsxref("undefined")}} または {{jsxref("null")}} の値でしばしば発生します。</p>
+
+<p>また、{{jsxref("Object.create()")}} や {{jsxref("Symbol.keyFor()")}} のようなある種のメソッドは、特定の型を要求し、それを提供する必要があります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Invalid_cases" name="Invalid_cases">無効な場合</h3>
+
+<pre class="brush: js example-bad notranslate">// undefined と null の場合、substring メソッドは動作しません。
+var foo = undefined;
+foo.substring(1); // TypeError: foo is undefined
+
+var foo = null;
+foo.substring(1); // TypeError: foo is null
+
+
+// ある種のメソッドでは、特定の型が求められることがあります。
+var foo = {}
+Symbol.keyFor(foo); // TypeError: foo is not a symbol
+
+var foo = 'bar'
+Object.create(foo); // TypeError: "foo" is not an object or null
+</pre>
+
+<h3 id="Fixing_the_issue" name="Fixing_the_issue">問題の修正</h3>
+
+<p>null ポインターを <code>undefined</code> 値に修正するには、次のように <a href="/ja/docs/Web/JavaScript/Reference/Operators/typeof">typeof</a> 演算子を用いて行うことができます。</p>
+
+<pre class="brush: js notranslate">if (foo !== undefined) {
+ // これで、 foo が定義されていることがわかるので、実行することができます。
+}
+
+if (typeof foo !== 'undefined') {
+ // 同じというのは良い考えですが、この実装を使わないでください。 - 本当の
+ // undefined の値と未宣言の変数が混同されて問題が発生する可能性があります。
+}
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("undefined")}}</li>
+ <li>{{jsxref("null")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/unnamed_function_statement/index.html b/files/ja/web/javascript/reference/errors/unnamed_function_statement/index.html
new file mode 100644
index 0000000000..35abd0a3f6
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/unnamed_function_statement/index.html
@@ -0,0 +1,115 @@
+---
+title: 'SyntaxError: function statement requires a name'
+slug: Web/JavaScript/Reference/Errors/Unnamed_function_statement
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Unnamed_function_statement
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: function statement requires a name [Firefox]
+SyntaxError: Unexpected token ( [Chrome]
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>コードに名前が必要な <a href="/ja/docs/Web/JavaScript/Reference/Statements/function">function ステートメント</a>があります。関数がどのように定義されているか、関数の名前を指定する必要があるかどうか、または問題の関数が関数式、{{Glossary("IIFE")}} である必要があるかどうか、 コードがこのコンテクストに正しく置かれているかどうかを確認する必要があります。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="ステートメント_vs_式">ステートメント vs 式</h3>
+
+<p><em><a href="/ja/docs/Web/JavaScript/Reference/Statements/function">function ステートメント</a></em> (または <em>function 宣言</em>) では名前が必要であり、これは動作しません:</p>
+
+<pre class="brush: js example-bad">function () {
+ return 'Hello world';
+}
+// SyntaxError: function statement requires a name
+</pre>
+
+<p>代わりに、<a href="/ja/docs/Web/JavaScript/Reference/Operators/function">function 式</a> (代入) を使用できます:</p>
+
+<pre class="brush: js example-good">var greet = function() {
+ return 'Hello world';
+};</pre>
+
+<p>または、定義するとすぐに実行される <a href="https://en.wikipedia.org/wiki/Immediately-invoked_function_expression">IIFE</a> (即時実行関数式) を定義しようとしているのかもしれません。その場合は、もう少々括弧が必要です:</p>
+
+<pre class="brush: js example-good">(function () {
+
+})();</pre>
+
+<h3 id="ラベル付けされた関数">ラベル付けされた関数</h3>
+
+<p>関数 <a href="/ja/docs/Web/JavaScript/Reference/Statements/label">label</a> を使用している場合、<code>function</code> キーワードの後に関数名を指定する必要があります。これは動作しません:</p>
+
+<pre class="brush: js example-bad">function Greeter() {
+ german: function () {
+ return "Moin";
+ }
+}
+// SyntaxError: function statement requires a name
+</pre>
+
+<p>たとえば、これは動作します:</p>
+
+<pre class="brush: js example-good">function Greeter() {
+ german: function g() {
+ return "Moin";
+ }
+}</pre>
+
+<h3 id="オブジェクトのメソッド">オブジェクトのメソッド</h3>
+
+<p>オブジェクトのメソッドを作るならば、オブジェクトを作る必要があります。その場合、<code>function</code> キーワードの後に名前がない次の構文は有効です。</p>
+
+<pre class="brush: js example-good">var greeter = {
+ german: function () {
+ return "Moin";
+ }
+};</pre>
+
+<h3 id="コールバック構文">コールバック構文</h3>
+
+<p>コールバックを使用するときの構文もチェックします。大括弧とカンマが混同しやすいです。</p>
+
+<pre class="brush: js example-bad">promise.then(
+ function() {
+ console.log("success");
+ });
+ function() {
+ console.log("error");
+}
+// SyntaxError: function statement requires a name
+</pre>
+
+<p>正しくは:</p>
+
+<pre class="brush: json example-good">promise.then(
+ function() {
+ console.log("success");
+ },
+ function() {
+ console.log("error");
+ }
+);
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Functions">Functions in the JavaScript Guide</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/function">function statement</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/function">function expression</a></li>
+ <li><a href="https://en.wikipedia.org/wiki/Immediately-invoked_function_expression">IIFE</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/label">label</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/unterminated_string_literal/index.html b/files/ja/web/javascript/reference/errors/unterminated_string_literal/index.html
new file mode 100644
index 0000000000..be1022bda4
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/unterminated_string_literal/index.html
@@ -0,0 +1,67 @@
+---
+title: 'SyntaxError: unterminated string literal'
+slug: Web/JavaScript/Reference/Errors/Unterminated_string_literal
+tags:
+ - Errors
+ - JavaScript
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Errors/Unterminated_string_literal
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Message" name="Message">メッセージ</h2>
+
+<pre class="syntaxbox">SyntaxError: unterminated string literal
+</pre>
+
+<h2 id="Error_type" name="Error_type">エラータイプ</h2>
+
+<p>{{jsxref("SyntaxError")}}</p>
+
+<h2 id="What_went_wrong" name="What_went_wrong">何がうまくいかなかったのか?</h2>
+
+<p>どこかに終端されていない {{jsxref("String")}} があります。文字列リテラルは、シングル(<code>'</code>)かダブル(<code>"</code>)のクオートで囲む必要があります。JavaScript は、シングルクオート文字列とダブルクオート文字列を区別しません。<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/String#エスケープシーケンス">エスケープシーケンス</a> はシングルクオートとダブルクオート、どちらの文字列でも動作します。このエラーを修正するためには、次の点をチェックしてください:</p>
+
+<ul>
+ <li>文字列リテラルのために、クオート(シングルかダブル)の開始と終了を行っている。</li>
+ <li>文字列リテラルを正しくエスケープしている。</li>
+ <li>文字列リテラルが複数行に分けられていない。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Multiple_lines" name="Multiple_lines">複数行</h3>
+
+<p>JavaScript では、次のように複数行にまたがる文字列を分割できません:</p>
+
+<pre class="brush: js example-bad">var longString = 'This is a very long string which needs
+ to wrap across multiple lines because
+ otherwise my code is unreadable.';
+// SyntaxError: unterminated string literal</pre>
+
+<p>替わりに、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Addition">+ 演算子</a> かバックスラッシュ、<a href="/ja/docs/Web/JavaScript/Reference/Template_literals">template literal</a> を使用します。<code>+</code> 演算子だと、次のようになります:</p>
+
+<pre class="brush: js example-good">var longString = 'This is a very long string which needs ' +
+ 'to wrap across multiple lines because ' +
+ 'otherwise my code is unreadable.';
+</pre>
+
+<p>または、文字列が次のように続くことを示すために、各行の終わりにバックスラッシュ文字("\")を使用することもできます。バックスラッシュの後に、(改行を除いて)スペースや文字、インデントを入れないようにしてください。そうしないと動作しません。バックスラッシュの場合、次のようになります:</p>
+
+<pre class="brush: js example-good">var longString = 'This is a very long string which needs \
+to wrap across multiple lines because \
+otherwise my code is unreadable.';
+</pre>
+
+<p>ECMAScript 2015 環境でサポートされている <a href="/ja/docs/Web/JavaScript/Reference/Template_literals">template literal</a> を使っても改行可能です。</p>
+
+<pre class="brush: js example-good">var longString = `This is a very long string which needs
+ to wrap across multiple lines because
+ otherwise my code is unreadable.`;</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Template_literals">Template literal</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/errors/var_hides_argument/index.html b/files/ja/web/javascript/reference/errors/var_hides_argument/index.html
new file mode 100644
index 0000000000..8653e6da87
--- /dev/null
+++ b/files/ja/web/javascript/reference/errors/var_hides_argument/index.html
@@ -0,0 +1,56 @@
+---
+title: 'TypeError: variable "x" redeclares argument'
+slug: Web/JavaScript/Reference/Errors/Var_hides_argument
+tags:
+ - Errors
+ - JavaScript
+ - Strict Mode
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Var_hides_argument
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="メッセージ">メッセージ</h2>
+
+<pre class="syntaxbox">TypeError: variable "x" redeclares argument (Firefox)
+</pre>
+
+<h2 id="エラータイプ">エラータイプ</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a> でのみ、{{jsxref("TypeError")}} の警告がでます。</p>
+
+<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2>
+
+<p>関数のパラメータとして使用されたものと同じ変数名が、関数のボディ内で <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/var">var</a></code> 割り当てを使用して再宣言されています。これは命名が競合する可能性があるため、JavaScript が警告を発します。</p>
+
+<p>このエラーは、<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モードのコード</a> でのみ発生します。非 strict モードでは、再宣言は暗黙裡に無視されます。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="無効なケース">無効なケース</h3>
+
+<p>このケースでは、変数 "arg" 引数を再宣言しています。</p>
+
+<pre class="brush: js example-bad">"use strict";
+
+function f(arg) {
+ var arg = "foo";
+}
+</pre>
+
+<h3 id="有効なケース">有効なケース</h3>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/var">var</a></code> ステートメントを省略するだけで、この警告を修正できます。なぜなら、変数はすでに存在しているからです。そのほかの方法として、関数のパラメータか変数名をリネームすることもできます。</p>
+
+<pre class="brush: js example-good">"use strict";
+
+function f(arg) {
+ arg = "foo";
+}
+</pre>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">Strict モード</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/functions/arguments/@@iterator/index.html b/files/ja/web/javascript/reference/functions/arguments/@@iterator/index.html
new file mode 100644
index 0000000000..e0690a49af
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/arguments/@@iterator/index.html
@@ -0,0 +1,63 @@
+---
+title: 'arguments[@@iterator]()'
+slug: Web/JavaScript/Reference/Functions/arguments/@@iterator
+tags:
+ - Functions
+ - JavaScript
+ - Property
+ - arguments
+translation_of: Web/JavaScript/Reference/Functions/arguments/@@iterator
+---
+<div>{{jsSidebar("Functions")}}</div>
+
+<p><strong><code>@@iterator</code></strong> プロパティの初期値は {{jsxref("Array.prototype.values")}} プロパティの初期値と同じ関数オブジェクトです。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arguments</var>[Symbol.iterator]()</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Iteration_using_for...of_loop" name="Iteration_using_for...of_loop">for...of ループを用いた反復</h3>
+
+<pre class="brush: js notranslate">function f() {
+ // your browser must support for..of loop
+ // and let-scoped variables in for loops
+ for (let letter of arguments) {
+ console.log(letter);
+ }
+}
+f('w', 'y', 'k', 'o', 'p');
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </tbody>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-createunmappedargumentsobject', 'CreateUnmappedArgumentsObject')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-createmappedargumentsobject', 'CreateMappedArgumentsObject')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.functions.arguments.@@iterator")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.values()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/functions/arguments/callee/index.html b/files/ja/web/javascript/reference/functions/arguments/callee/index.html
new file mode 100644
index 0000000000..a9dd72897a
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/arguments/callee/index.html
@@ -0,0 +1,158 @@
+---
+title: arguments.callee
+slug: Web/JavaScript/Reference/Functions/arguments/callee
+tags:
+ - Deprecated
+ - JavaScript
+ - Reference
+ - arguments
+ - プロパティ
+ - 関数
+translation_of: Web/JavaScript/Reference/Functions/arguments/callee
+---
+<div>{{jsSidebar("Functions")}}</div>
+
+<p><strong><code>arguments.callee</code></strong> プロパティは現在実行中の関数を示します。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>callee</code> は <code>arguments</code> オブジェクトのプロパティです。関数の本体の内部で現在実行中の関数を参照するために使用します。これは関数名が不明であるとき、たとえば名前のない関数式(「無名関数」)の内部などで便利です。</p>
+
+<div class="warning"><strong>警告:</strong> ECMAScript 第5版では、 <a href="/ja/docs/JavaScript/Reference/Functions_and_function_scope/Strict_mode" title="/ja/docs/JavaScript/Reference/Functions_and_function_scope/Strict_mode">strict モード</a>における <code>arguments.callee()</code> の使用を禁止しています。関数式に名前を付けるか、関数が自身を呼び出す必要がある場合に関数宣言を使用するかして <code>arguments.callee()</code> の使用を避けてください。</div>
+
+<h3 id="Why_was_arguments.callee_removed_from_ES5_strict_mode" name="Why_was_arguments.callee_removed_from_ES5_strict_mode">なぜ <code>arguments.callee</code> は ES5 strict mode で削除されたのか</h3>
+
+<p>(<a href="http://stackoverflow.com/a/235760/578288" title="http://stackoverflow.com/a/235760/578288">olliej による Stack Overflow の回答</a>によれば)</p>
+
+<p>古いバージョンの JavaScript では名前付きの関数式が利用できず、このため再帰の関数式を作成することができませんでした。</p>
+
+<p>例えば、以下の構文は動作しました。</p>
+
+<pre class="brush: js notranslate">function factorial (n) {
+ return !(n &gt; 1) ? 1 : factorial(n - 1) * n;
+}
+
+[1, 2, 3, 4, 5].map(factorial);</pre>
+
+<p>しかし、</p>
+
+<pre class="brush: js notranslate">[1, 2, 3, 4, 5].map(function(n) {
+ return !(n &gt; 1) ? 1 : /*ここでどうする?*/ (n - 1) * n;
+});</pre>
+
+<p>は動作しませんでした。これをうまくやるために <code>arguments.callee</code> が追加され、あなたは以下のようなことができます。</p>
+
+<pre class="brush: js notranslate">[1, 2, 3, 4, 5].map(function(n) {
+ return !(n &gt; 1) ? 1 : arguments.callee(n - 1) * n;
+});</pre>
+
+<p>しかし、これは実際には本当にダメな解決法でした。これは(他の <code>arguments</code> や <code>callee</code>、<code>caller</code> の問題と組み合わさって)、一般的には、再帰のインライン化と末尾再帰が不可能になるのです(あなたはこれをトレースなどを通じて選択した場合では達成できます。しかし最良のコードであっても、逆に不要な検査においては最適未満です)。他の大きな問題としては、再帰呼び出しが別の <code>this</code> の値になることです。例えば、</p>
+
+<pre class="brush: js notranslate">var global = this;
+
+var sillyFunction = function(recursed) {
+ if (!recursed) { return arguments.callee(true); }
+ if (this !== global) {
+ alert('This is: ' + this);
+ } else {
+ alert('This is the global');
+ }
+}
+
+sillyFunction();</pre>
+
+<p>ECMAScript 3 は、名前付き関数式を許可することでこれらの問題を解決しました。例えば:</p>
+
+<pre class="brush: js notranslate">[1, 2, 3, 4, 5].map(function factorial(n) {
+ return !(n &gt; 1) ? 1 : factorial(n - 1)*n;
+});</pre>
+
+<p>これには多くの利点があります:</p>
+
+<ul>
+ <li>他の関数と同様に、あなたのコード内から呼び出すことができる</li>
+ <li>外側のスコープに変数を作らない (<a href="http://kangax.github.io/nfe/#example_1_function_expression_identifier_leaks_into_an_enclosing_scope">IE 8 以下を除く</a>)</li>
+ <li>arguments オブジェクトにアクセスするよりもパフォーマンスが良い</li>
+</ul>
+
+<p>Another feature that was deprecated was <code>arguments.callee.caller</code>, or more specifically <code>Function.caller</code>. Why is this? Well, at any point in time you can find the deepest caller of any function on the stack, and as I said above looking at the call stack has one single major effect: it makes a large number of optimizations impossible, or much much more difficult. For example, if you cannot guarantee that a function <code>f</code> will not call an unknown function, it is not possible to inline <code>f</code>. Basically it means that any call site that may have been trivially inlinable accumulates a large number of guards:</p>
+
+<pre class="brush: js notranslate">function f(a, b, c, d, e) { return a ? b * c : d * e; }</pre>
+
+<p>If the JavaScript interpreter cannot guarantee that all the provided arguments are numbers at the point that the call is made, it needs to either insert checks for all the arguments before the inlined code, or it cannot inline the function. Now in this particular case a smart interpreter should be able to rearrange the checks to be more optimal and not check any values that would not be used. However in many cases that's just not possible and therefore it becomes impossible to inline.</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Example.3A_Using_arguments.callee_in_an_anonymous_recursive_function" name="Example.3A_Using_arguments.callee_in_an_anonymous_recursive_function">例: 無名再帰関数内での <code>arguments.callee</code> の使用</h3>
+
+<p>再帰関数は自分自身を参照する必要があります。関数が自分自身を参照するには、一般的には関数の名前を使用します。しかしながら、無名関数には名前がありません。さらにその無名関数を参照するアクセス可能な変数も無い(関数がどの変数にも代入されていない)場合、その関数には自分自身を参照する手段がありません(無名関数は<a href="/ja/docs/JavaScript/Reference/Operators/Special_Operators/function_Operator" title="JavaScript/Reference/Operators/Special_Operators/function_Operator">関数式</a>または <a href="/ja/docs/JavaScript/Reference/Global_Objects/Function" title="JavaScript/Reference/Global_Objects/Function"><code>Function</code> コンストラクター</a>によって作成できます)。したがって、これを参照するアクセス可能な変数がない場合、関数が自分自身を参照できる唯一の方法は <code>arguments.callee</code> による方法です。</p>
+
+<p>次の例では関数を定義し、その関数内でさらに階乗関数を定義し、それを返しています。</p>
+
+<pre class="brush: js notranslate">function create() {
+ return function(n) {
+ if (n &lt;= 1)
+ return 1;
+ return n * arguments.callee(n - 1);
+ };
+}
+
+var result = create()(5); // 120 (5 * 4 * 3 * 2 * 1) を返す</pre>
+
+<h3 id="良い代替手段がない場合の_arguments.callee_の使用">良い代替手段がない場合の <code>arguments.callee</code> の使用</h3>
+
+<p>ただし次のような場合、 <code>arguments.callee</code> に代わるものが無いために、その非推奨はバグである可能性があります ( {{Bug("725398")}} を参照):</p>
+
+<pre class="brush: js notranslate">function createPerson(sIdentity) {
+ var oPerson = new Function('alert(arguments.callee.identity);');
+ oPerson.identity = sIdentity;
+ return oPerson;
+}
+
+var john = createPerson('John Smith');
+
+john();</pre>
+
+<h2 id="Specifications" name="Specifications">仕様策定状況</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>初回定義。 JavaScript 1.2 で実装</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されます。データに貢献したいのであれば、 <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.functions.arguments.callee")}}</p>
+
+<h2 id="See_also" name="See_also">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Function")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/functions/arguments/caller/index.html b/files/ja/web/javascript/reference/functions/arguments/caller/index.html
new file mode 100644
index 0000000000..3626d7644b
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/arguments/caller/index.html
@@ -0,0 +1,56 @@
+---
+title: caller
+slug: Web/JavaScript/Reference/Functions/arguments/caller
+translation_of: Archive/Web/JavaScript/arguments.caller
+---
+<p> </p>
+
+<p>{{ Obsolete_header() }}</p>
+
+<p>{{ 英語版章題("Summary") }}</p>
+
+<h3 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h3>
+
+<p>現在実行している関数を呼び出した関数を示します。</p>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <td class="header" colspan="2"><a href="/Ja/Core_JavaScript_1.5_Reference/Functions/arguments" title="Ja/Core_JavaScript_1.5_Reference/Functions/arguments">arguments</a> のプロパティ</td>
+ </tr>
+ <tr>
+ <td>実装されたバージョン:</td>
+ <td>JavaScript 1.1, NES 2.0
+ <p>JavaScript 1.3: 非推奨とする。<span class="comment">JavaScript ??: Removed</span></p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>{{ 英語版章題("Description") }}</p>
+
+<h3 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h3>
+
+<p><strong><code>arguments.caller</code> はもはや使用されていません。</strong> 代わりに関数オブジェクトの非標準の {{jsxref("Function.caller")}} プロパティが使えます。詳細はその説明を参照してください。</p>
+
+<p><code>arguments.caller</code> プロパティは関数本体の中でのみ利用可能です。</p>
+
+<p>{{ 英語版章題("Examples") }}</p>
+
+<h3 id=".E4.BE.8B" name=".E4.BE.8B">例</h3>
+
+<p>次のコードは、関数の中で <code>arguments.caller</code> の値をチェックします。</p>
+
+<pre class="eval">function myFunc() {
+ if (arguments.caller == null) {
+ return ("The function was called from the top!");
+ } else
+ return ("This function's caller was " + arguments.caller);
+}
+</pre>
+
+<p> </p>
+
+<p> </p>
+
+<p>{{ languages( { "en": "en/JavaScript/Reference/Functions_and_function_scope/arguments/caller", "fr": "fr/R\u00e9f\u00e9rence_de_JavaScript_1.5_Core/Fonctions/arguments/caller", "pl": "pl/Dokumentacja_j\u0119zyka_JavaScript_1.5/Funkcje/arguments/caller" } ) }}</p>
diff --git a/files/ja/web/javascript/reference/functions/arguments/index.html b/files/ja/web/javascript/reference/functions/arguments/index.html
new file mode 100644
index 0000000000..4990f359bc
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/arguments/index.html
@@ -0,0 +1,227 @@
+---
+title: arguments
+slug: Web/JavaScript/Reference/Functions/arguments
+tags:
+ - Functions
+ - JavaScript
+ - Namespace
+ - Reference
+ - arguments
+ - 名前空間
+translation_of: Web/JavaScript/Reference/Functions/arguments
+---
+<div>{{JSSidebar("Functions")}}</div>
+
+<p><strong><code>arguments</code></strong> は<ruby>配列風<rp> (</rp><rt><code>Array</code>-like</rt><rp>) </rp></ruby>オブジェクトであり、<a href="/ja/docs/Web/JavaScript/Guide/Functions">関数</a>に渡された引数の値を含んでおり、関数内からアクセスすることができます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/functions-arguments.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> ES6 互換のコードを書く場合は、<a href="/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters">残余引数</a>が推奨されます。</p>
+</div>
+
+<div class="note">
+<p><strong>注:</strong> 「配列風」とは、 <code>arguments</code> が {{jsxref("Functions/arguments/length", "length")}} プロパティと 0 から始まる添字のプロパティを持っているものの、 {{JSxRef("Array")}} の組込みメソッド、例えば {{jsxref("Array.forEach", "forEach()")}} や {{jsxref("Array.map", "map()")}} を持っていないということです。詳しくは <a href="#Description">解説</a>の節を見てください。</p>
+</div>
+
+<p><code>arguments</code> オブジェクトはすべての(<a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー</a>ではない)関数内で利用可能なローカル変数です。<code>arguments</code> オブジェクトを使うことにより、関数内で関数の引数を参照できます。このオブジェクトは、関数に渡された各引数に対する入力を含みます。最初の入力の添え字は 0 から始まります。</p>
+
+<p>たとえば、もし関数に 3 つの引数が渡されたなら、次のようにその引数を参照できます。</p>
+
+<pre class="brush: js notranslate">arguments[0] // 1 番目の引数
+arguments[1] // 2 番目の引数
+arguments[2] // 3 番目の引数
+</pre>
+
+<p>引数を設定したり再代入したりすることもできます。</p>
+
+<pre class="brush: js notranslate">arguments[1] = 'new value';
+</pre>
+
+<p><code>arguments</code> オブジェクトは {{jsxref("Array")}} ではありません。似ていますが、 <code>Array</code> のプロパティは {{jsxref("Array.length", "length")}} 以外ありません。たとえば、 {{jsxref("Array.pop", "pop()")}} メソッドはありません。</p>
+
+<p>しかしながら、本当の <code>Array</code> に変換することはできます。</p>
+
+<pre class="brush: js notranslate">var args = Array.prototype.slice.call(arguments);
+// 配列リテラルを使用すると上記よりも短くなりますが、空の配列を作成します
+var args = [].slice.call(arguments);
+</pre>
+
+<p><code>arguments</code> に限らず、配列様オブジェクトは ES2015 の {{jsxref("Array.from()")}} メソッドや<a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Spread_operator">スプレッド構文</a>によって、本当の配列に変換することができます。</p>
+
+<pre class="brush: js notranslate">var args = Array.from(arguments);
+var args = [...arguments];
+</pre>
+
+<p><code>arguments</code> オブジェクトは、あらかじめ定義された引数の数よりも多くの引数で呼び出される関数に便利です。このテクニックは <code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/min">Math.min()</a></code> などの 可変数の引数を受け入れる関数に便利です。この例の関数は、任意の数の文字列が引数で、引数の中で一番長い文字列を返します。</p>
+
+<pre class="brush: js notranslate">function longestString() {
+ var longest = '';
+ for (var i=0; i &lt; arguments.length; i++) {
+ if (arguments[i].length &gt; longest.length) {
+ longest = arguments[i];
+ }
+ }
+ return longest;
+}
+</pre>
+
+<p>呼び出された関数に渡された引数を数えるために {{jsxref("Functions/arguments/length", "arguments.length")}} を使用することができます。関数が受け取る引数を数えたいのであれば、関数の {{jsxref("Function.length", "length")}} プロパティを調べてください。</p>
+
+<h3 id="Using_typeof_with_Arguments" name="Using_typeof_with_Arguments">arguments に対する typeof の使用</h3>
+
+<p>{{jsxref("Operators/typeof", "typeof")}} 演算子を <code>arguments</code> に対して使用すると、 <code>'object'</code> が返されます。</p>
+
+<pre class="brush: js notranslate">console.log(typeof arguments); // 'object' </pre>
+
+<p>個々の引数の型は、 <code>arguments</code> に添字を使用して判断することができます。</p>
+
+<pre class="notranslate">console.log(typeof arguments[0]); // 最初の引数の型を返す</pre>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Functions/arguments/callee", "arguments.callee")}}</dt>
+ <dd>個の引数が所属する、現在実行中の関数を参照します。厳格モードでは禁止されています。</dd>
+ <dt>{{jsxref("Functions/arguments/length", "arguments.length")}}</dt>
+ <dd>関数に渡された引数の数を示します。</dd>
+ <dt>{{jsxref("Functions/arguments/@@iterator", "arguments[@@iterator]")}}</dt>
+ <dd>新しい {{jsxref("Array/@@iterator", "Array iterator", "", 0)}} オブジェクトで、 <code>arguments</code> のそれぞれの要素の値を含みます。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Defining_a_function_that_concatenates_several_strings" name="Defining_a_function_that_concatenates_several_strings">複数の文字列を連結する関数を定義する</h3>
+
+<p>この例では、複数の文字列を連結する関数を定義します。この関数の唯一の仮引数は、連結する項目を区切る文字を指定する文字列です。この関数は次のように定義されます。</p>
+
+<pre class="brush:js notranslate">function myConcat(separator) {
+ let args = Array.prototype.slice.call(arguments, 1);
+ return args.join(separator);
+}</pre>
+
+<p>この関数へは好きな数だけ引数を渡すことができます。これはリスト中のそれぞれの引数を使用した文字列リストを返します。</p>
+
+<pre class="brush:js notranslate">// "red, orange, blue" を返します
+myConcat(', ', 'red', 'orange', 'blue');
+
+// "elephant; giraffe; lion; cheetah" を返します
+myConcat('; ', 'elephant', 'giraffe', 'lion', 'cheetah');
+
+// "sage. basil. oregano. pepper. parsley" を返します
+myConcat('. ', 'sage', 'basil', 'oregano', 'pepper', 'parsley');</pre>
+
+<h3 id="Defining_a_function_that_creates_HTML_lists" name="Defining_a_function_that_creates_HTML_lists">HTML のリストを作る関数の定義</h3>
+
+<p>この例では、リストのための HTML を含む文字列を作る関数を定義します。この関数の第 1 引数には、順不同リスト (中黒付き) なら "<code>u</code>"、順序リスト (番号付き) なら "<code>o</code>" を指定します。関数は次のように定義します。</p>
+
+<pre class="brush:js notranslate">function list(type) {
+ var html = '&lt;' + type + 'l&gt;&lt;li&gt;';
+ var args = Array.prototype.slice.call(arguments, 1);
+ html += args.join('&lt;/li&gt;&lt;li&gt;');
+ html += '&lt;/li&gt;&lt;/' + type + 'l&gt;'; // end list
+ return html;
+}</pre>
+
+<p>この関数には任意の数の引数を渡すことができ、それぞれの引数を指定された型のリストに項目として追加します。例を示します。</p>
+
+<pre class="brush:js notranslate">var listHTML = list('u', 'One', 'Two', 'Three');
+
+/* listHTML の内容は以下のような文字列となります。
+"&lt;ul&gt;&lt;li&gt;One&lt;/li&gt;&lt;li&gt;Two&lt;/li&gt;&lt;li&gt;Three&lt;/li&gt;&lt;/ul&gt;"
+*/</pre>
+
+<h3 id="Rest_default_and_destructured_parameters" name="Rest_default_and_destructured_parameters">残余引数、デフォルト引数、分割引数</h3>
+
+<div>
+<p><code>arguments</code> オブジェクトを <a href="/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters">残余</a>、<a href="/ja/docs/Web/JavaScript/Reference/Functions/Default_parameters">デフォルト</a>、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">分割</a>引数と組み合わせて使用できます。</p>
+</div>
+
+<pre class="brush: js notranslate">function foo(...args) {
+ return args;
+}
+foo(1, 2, 3); // [1, 2, 3]
+</pre>
+
+<p>厳格モードのコードでは、残余引数、デフォルト引数、分割引数があっても <a href="/ja/docs/Web/JavaScript/Reference/Strict_mode#Making_eval_and_arguments_simpler"><code>arguments</code> オブジェクトの動作は変わりません</a>が、厳格モードでない場合は微妙な違いがあります。</p>
+
+<p>厳格モードでは、 <code>arguments</code> オブジェクトは関数に残余引数、デフォルト引数、分割引数が渡されたかどうかにかかわらず同じ動作をします。すなわち、関数の本体で変数に新しい値を代入しても、 <code>arguments</code> オブジェクトには影響しません。また、 <code>arguments</code> オブジェクトに新しい変数を代入しても、変数の値には影響ありません。</p>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> <code>"use strict";</code> ディレクティブを、残余引数、デフォルト引数、分割引数を受け付ける関数の本体に書くことはできません。そうすると、<a href="/en-US/docs/Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params">構文エラー</a>が発生します。</p>
+</div>
+
+<p>厳格モードでない関数で、単純な引数のみを渡した場合 (すなわち、残余引数、デフォルト引数、分割引数ではない場合)、関数の本体で変数の値を新しい値にすると、 <code>arguments</code> オブジェクトと同期します。</p>
+
+<pre class="brush: js notranslate">function func(a) {
+ arguments[0] = 99; // arguments[0] を更新すると a も更新される
+ console.log(a);
+}
+func(10); // 99
+</pre>
+
+<p>および</p>
+
+<pre class="brush: js notranslate">function func(a) {
+ a = 99; // a を更新すると arguments[0] も更新される
+ console.log(arguments[0]);
+}
+func(10); // 99
+</pre>
+
+<p>それに対して、厳格モードでない関数で、残余引数、デフォルト引数、分割引数が<strong>渡される</strong>と、関数の本体で引数の変数に新しい値が代入されても、 <code>arguments</code> オブジェクトと同期<strong>されません</strong>。複雑な引数を持つ厳格モードでない関数の <code>arguments</code> オブジェクトは、関数が呼び出されたときに関数に渡された値を<strong>常に反映します</strong> (これは、渡される変数の型に関係なく、すべての厳格モードの関数の場合と同じ動作です)。</p>
+
+<pre class="brush: js notranslate">function func(a = 55) {
+ arguments[0] = 99; // arguments[0] を更新しても a は更新されない
+ console.log(a);
+}
+func(10); // 10</pre>
+
+<p>および</p>
+
+<pre class="brush: js notranslate">function func(a = 55) {
+ a = 99; // a を更新しても arguments[0] は更新されない
+ console.log(arguments[0]);
+}
+func(10); // 10
+</pre>
+
+<p>および</p>
+
+<pre class="brush: js notranslate">// デフォルト引数は追跡されません。
+function func(a = 55) {
+ console.log(arguments[0]);
+}
+func(); // undefined</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.functions.arguments")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Function")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters">残余引数</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/functions/arguments/length/index.html b/files/ja/web/javascript/reference/functions/arguments/length/index.html
new file mode 100644
index 0000000000..cc8781a8c6
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/arguments/length/index.html
@@ -0,0 +1,124 @@
+---
+title: arguments.length
+slug: Web/JavaScript/Reference/Functions/arguments/length
+tags:
+ - arguments
+translation_of: Web/JavaScript/Reference/Functions/arguments/length
+---
+<div>{{jsSidebar("Functions")}}</div>
+
+<p><strong><code>arguments.length</code></strong> プロパティは、関数に渡された引数の数を含みます。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">arguments.length</pre>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>The arguments.length プロパティは、実際に関数に渡された引数の数を提供します。これは、定義されたパラメーターの数以上にも以下にもできます({{jsxref("Function.length")}} を見てください)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="arguments.length_を使用する"><code>arguments.length</code> を使用する</h3>
+
+<p>この例では、2 つ以上の数を加算する関数を定義しています。</p>
+
+<pre class="brush: js">function adder(base /*, n2, ... */) {
+ base = Number(base);
+ for (var i = 1; i &lt; arguments.length; i++) {
+ base += Number(arguments[i]);
+ }
+ return base;
+}
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">ステータス</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>初期定義。JavaScript 1.1 で実装。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{CompatibilityTable}}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Android</th>
+ <th>Chrome for Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Function")}}</li>
+ <li>{{jsxref("Function.length")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/functions/arrow_functions/index.html b/files/ja/web/javascript/reference/functions/arrow_functions/index.html
new file mode 100644
index 0000000000..b178700bd9
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/arrow_functions/index.html
@@ -0,0 +1,405 @@
+---
+title: アロー関数
+slug: Web/JavaScript/Reference/Functions/Arrow_functions
+tags:
+ - ECMAScript 2015
+ - Functions
+ - Intermediate
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Functions/Arrow_functions
+---
+<div>{{jsSidebar("Functions")}}</div>
+
+<p><strong>アロー関数式</strong>は、より短く記述できる、通常の <a href="/ja/docs/Web/JavaScript/Reference/Operators/function">function 式</a>の代替構文です。また、<code><a href="https://wiki.developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/this">this</a></code>, <code><a href="https://wiki.developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/arguments">arguments</a></code>, <code><a href="https://wiki.developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/super">super</a></code>, <code><a href="https://wiki.developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/new.target">new.target</a></code> を束縛しません。アロー関数式は、メソッドでない関数に最適で、コンストラクタとして使うことはできません。</p>
+
+<p>{{EmbedInteractiveExample("pages/js/functions-arrow.html")}}</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<h3 id="Basic_syntax" name="Basic_syntax">基本的な構文</h3>
+
+<pre class="syntaxbox notranslate">(param1, param2, …, paramN) =&gt; { statements }
+(param1, param2, …, paramN) =&gt; expression
+// 上記の式は、次の式と同等です: =&gt; { return expression; }
+
+// 引数が 1 つしかない場合、丸括弧 () の使用は任意です:
+(singleParam) =&gt; { statements }
+singleParam =&gt; { statements }
+
+// 引数がない場合、丸括弧を書かねばいけません:
+() =&gt; { statements }
+</pre>
+
+<h3 id="Advanced_syntax" name="Advanced_syntax">高度な構文</h3>
+
+<pre class="syntaxbox notranslate">// object リテラル式を返す場合は、本体を丸括弧 () で囲みます:
+params =&gt; ({foo: bar})
+
+// <a href="/docs/Web/JavaScript/Reference/Functions/rest_parameters">残余引数</a> と <a href="/docs/Web/JavaScript/Reference/Functions/Default_parameters">デフォルト引数</a> をサポートしています
+(param1, param2, ...rest) =&gt; { statements }
+(param1 = defaultValue1, param2, …, paramN = defaultValueN) =&gt; {
+statements }
+
+// 引数リスト内の<a href="/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">分割代入</a>もサポートしています
+var f = ([a, b] = [1, 2], {x: c} = {x: a + b}) =&gt; a + b + c;
+f(); // 6
+</pre>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><a href="https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functions/">hacks.mozilla.org の "ES6 In Depth: Arrow functions"</a> も参照してください。</p>
+
+<p>2 つの理由から、アロー関数が導入されました。1 つ目の理由は関数を短く書きたいということで、2 つ目の理由は <code>this</code> を束縛したくない、ということです。</p>
+
+<h3 id="Shorter_functions" name="Shorter_functions">関数の短縮形</h3>
+
+<pre class="brush: js notranslate">var elements = [
+ 'Hydrogen',
+ 'Helium',
+ 'Lithium',
+ 'Beryllium'
+];
+
+elements.<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a>(function(element) {
+ return element.length;
+}); // このステートメントが返す配列: [8, 6, 7, 9]
+
+// 上記の通常の関数は、以下のアロー関数として記述できます
+elements.map((element) =&gt; {
+  return element.length;
+}); // [8, 6, 7, 9]
+
+// パラメータが一つしか無い場合、周囲の括弧を削除できます:
+elements.<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a>(element =&gt; {
+ return element.length;
+}); // [8, 6, 7, 9]
+
+// アロー関数の唯一のステートメントが `return` の場合、 `return` を削除し
+// 周囲の波括弧も削除できます
+elements.map(element =&gt; element.length); // [8, 6, 7, 9]
+
+// この場合、必要なのは length property のみなので、分割パラメータを使用できます:
+// 文字列 `"length"` は取得したいプロパティに対応しますが
+// 明らかに特別でない `lengthFooBArX` は、任意の有効な変数名に
+// 変更可能な変数名です
+elements.<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a>(({ "length": lengthFooBArX }) =&gt; lengthFooBArX); // [8, 6, 7, 9]
+
+// この分割パラメータの代入は、以下のように記述することも可能です。ただし、この例では、
+// 作成されたプロパティに `length` の値を代入していないことに注意して下さい。代わりに、
+// 変数 `length` のリテラル名自体が、オブジェクトから取得するプロパティとして使用されます。
+elements.<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a>(({ length }) =&gt; length); // [8, 6, 7, 9]
+</pre>
+
+<h3 id="No_separate_this" name="No_separate_this"><code>this</code> を束縛しない</h3>
+
+<p>アロー関数以前は、関数の呼び出し方法に応じて自身の <code><a href="https://wiki.developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/this">this</a></code> 値を定義していました</p>
+
+<ul>
+ <li>コンストラクタでは新しいオブジェクト</li>
+ <li><a href="/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a> の関数呼び出しでは <code>undefined</code></li>
+ <li>「オブジェクトのメソッド」として呼び出された関数ではそのときのオブジェクト</li>
+ <li>など</li>
+</ul>
+
+<p>これは、オブジェクト指向プログラミングをする上で煩わしいということが分かりました。</p>
+
+<pre class="brush: js notranslate">function Person() {
+ // Person() のコンストラクタは、自分のインスタンスを `this` として定義する。
+ this.age = 0;
+
+ setInterval(function growUp() {
+ // 非 strict モードでは、growUp() 関数は `this` を
+ // グローバルオブジェクトとして定義する。
+ // (そこで grouUp()が実行されているため)
+ // Person() コンストラクタが定義した `this` とは違う。
+ this.age++;
+ }, 1000);
+}
+
+var p = new Person();</pre>
+
+<p>ECMAScript 3/5 では、この問題は <code>this</code> の値をスコープ内の変数に代入することで解決できました。</p>
+
+<pre class="brush: js notranslate">function Person() {
+ var that = this;
+ that.age = 0;
+
+ setInterval(function growUp() {
+ // このコールバックは、期待されるオブジェクトの値を
+ // `that` 変数で参照する。
+ that.age++;
+ }, 1000);
+}</pre>
+
+<p>あるいは、適切な <code>this</code> の値を対象の関数(上の例では <code>growUp()</code> 関数)に渡すように、<a href="/docs/Web/JavaScript/Reference/Global_Objects/Function/bind">束縛関数</a>を作成することもできました。</p>
+
+<p>アロー関数自身は <code>this</code> を持ちません。レキシカルスコープの <code>this</code> 値を使います。つまり、アロー関数内の <code>this</code> 値は通常の変数検索ルールに従います。このためスコープに <code>this</code> 値がない場合、その一つ外側のスコープで <code>this</code> 値を探します。</p>
+
+<p>そのため、次のコードで <code>setInterval</code> に渡される関数の <code>this</code> の値は、外部関数の <code>this</code> と同じ値になります:</p>
+
+<pre class="brush: js notranslate">function Person(){
+ this.age = 0;
+
+ setInterval(() =&gt; {
+ this.age++; // |this| は person オブジェクトを適切に参照します。
+ }, 1000);
+}
+
+var p = new Person();</pre>
+
+<h4 id="Relation_with_strict_mode" name="Relation_with_strict_mode">strict モードとの関連</h4>
+
+<p><code>this</code> がレキシカルなもので与えられる場合、<a href="/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a>の <code>this</code> に関する規則は無視されます。</p>
+
+<pre class="brush: js notranslate">var f = () =&gt; { 'use strict'; return this; };
+f() === window; // またはグローバルオブジェクト</pre>
+
+<p>他の strict モードの規則は通常通り適用されます。</p>
+
+<h4 id="Invoked_through_call_or_apply" name="Invoked_through_call_or_apply">call や apply からの呼び出し</h4>
+
+<p>アロー関数は自身で <code>this</code> を持たないので、<code>call()</code> や <code>apply()</code> メソッドは引数しか渡せません。<code>this</code> は無視されます。</p>
+
+<pre class="brush: js notranslate">var adder = {
+ base: 1,
+
+ add: function(a) {
+ var f = v =&gt; v + this.base;
+ return f(a);
+ },
+
+ addThruCall: function(a) {
+ var f = v =&gt; v + this.base;
+ var b = {
+ base: 2
+ };
+
+ return f.call(b, a);
+ }
+};
+
+console.log(adder.add(1)); // 2 を出力する
+console.log(adder.addThruCall(1)); // やはり 2 を出力する</pre>
+
+<h3 id="No_binding_of_arguments" name="No_binding_of_arguments"><code>arguments</code> を束縛しない</h3>
+
+<p>アロー関数は自身で <a href="/docs/Web/JavaScript/Reference/Functions/arguments"><code>arguments</code> オブジェクト</a>を持ちません。そのため、この例では、<code>arguments</code> は囲っているスコープでの同名変数への参照にすぎません。</p>
+
+<pre class="brush: js notranslate">var arguments = [1, 2, 3];
+var arr = () =&gt; arguments[0];
+
+arr(); // 1
+
+function foo(n) {
+ var f = () =&gt; arguments[0] + n; // foo は arguments を暗黙的に束縛している。arguments[0] は n である。
+ return f();
+}
+
+foo(3); // 6
+</pre>
+
+<p>多くの場合、<a href="/docs/Web/JavaScript/Reference/Functions/rest_parameters">残余引数</a>が <code>arguments</code> オブジェクトの代わりに使えます。</p>
+
+<pre class="brush: js notranslate">function foo(n) {
+ var f = (...args) =&gt; args[0] + n;
+ return f(10);
+}
+
+foo(1); // 11</pre>
+
+<h3 id="Arrow_functions_used_as_methods" name="Arrow_functions_used_as_methods">メソッドとして使われるアロー関数</h3>
+
+<p>前に述べたように、アロー関数式は非メソッド型の関数に最もよく合っています。これをメソッドとして使った時のことを見てみましょう:</p>
+
+<pre class="brush: js notranslate">'use strict';
+
+var obj = {
+ i: 10,
+ b: () =&gt; console.log(this.i, this),
+ c: function() {
+ console.log(this.i, this);
+ }
+};
+
+obj.b(); // prints undefined, Window {...} (or the global object)
+obj.c(); // prints 10, Object {...}
+</pre>
+
+<p>アロー関数は自身の <code>this</code> を持ちません。{{jsxref("Object.defineProperty()")}} を使う例です。</p>
+
+<pre class="brush: js notranslate">'use strict';
+var obj = {
+ a: 10
+};
+
+Object.defineProperty(obj, 'b', {
+ get: () =&gt; {
+ console.log(this.a, typeof this.a, this); // undefined 'undefined' Window {...} (or the global object)
+ return this.a + 10; // represents global object 'Window', therefore 'this.a' returns 'undefined'
+ }
+});
+</pre>
+
+<h3 id="Use_of_the_new_operator" name="Use_of_the_new_operator"><code>new</code> 演算子の使用</h3>
+
+<p>アロー関数はコンストラクタとして使用できず、<code>new</code> と共に使うとエラーになります。</p>
+
+<pre class="brush: js notranslate">var Foo = () =&gt; {};
+var foo = new Foo(); // TypeError: Foo is not a constructor</pre>
+
+<h3 id="Use_of_prototype_property" name="Use_of_prototype_property"><code>prototype</code> プロパティの使用</h3>
+
+<p>アロー関数には <code>prototype</code> プロパティはありません。</p>
+
+<pre class="brush: js notranslate">var Foo = () =&gt; {};
+console.log(Foo.prototype); // undefined
+</pre>
+
+<h3 id="Use_of_the_yield_keyword" name="Use_of_the_yield_keyword"><code>yield</code> キーワードの使用</h3>
+
+<p>{{jsxref("Operators/yield", "yield")}} キーワードはアロー関数内で使用できません(内部で入れ子になった関数が許可されている場合を除く)。結果として、アロー関数はジェネレーターとして使用できません。</p>
+
+<h2 id="Function_body" name="Function_body">関数の Body 部分</h2>
+
+<p>アロー関数は、「簡潔文体 (concise body)」か、もしくはより一般的な「ブロック文体 (block body) 」のどちらかを使用することができます。</p>
+
+<p>簡潔文体 (concise body) においては、単一の式だけが記述できるので、その式が明示的に return される値となります。しかし、ブロック文体においては、自動的に return はされないので、明示的に <code>return</code> 文を使用する必要があります。</p>
+
+<pre class="brush: js notranslate">var func = x =&gt; x * x;
+// 簡潔構文の場合、明示せずとも"return" されます
+var func = (x, y) =&gt; { return x + y; };
+// ブロック文体では、明示的に "return" を宣言する必要があります
+</pre>
+
+<h2 id="Returning_object_literals" name="Returning_object_literals">オブジェクトリテラルを返す</h2>
+
+<p>短縮構文 <code>params =&gt; {object:literal}</code> を使ってオブジェクトリテラルを返そうとしても、期待通りに動作しないことに注意しましょう。</p>
+
+<pre class="brush: js notranslate">var func = () =&gt; { foo: 1 };
+// 呼び出した func() は undefined を返す!
+
+var func = () =&gt; { foo: function() {} };
+// SyntaxError: function 文には名前が必要
+</pre>
+
+<p>これは、括弧 ({}) 内のコードが文の列として構文解析されてしまっているからです(つまり、<code>foo</code> はオブジェクトリテラル内のキーでなく、ラベルとして扱われています)。</p>
+
+<p>オブジェクトリテラルは括弧で囲むのを忘れないでください。</p>
+
+<pre class="brush: js notranslate">var func = () =&gt; ({ foo: 1 });</pre>
+
+<h2 id="Line_breaks" name="Line_breaks">改行</h2>
+
+<p>アロー関数には括弧とアロー(矢印)の間に改行を入れられません。</p>
+
+<pre class="brush: js notranslate">var func = ()
+ =&gt; 1;
+// SyntaxError: expected expression, got '=&gt;'</pre>
+
+<p>しかし、下記の例は、アローの後に改行を入れたり、括弧を使って、更に引数の内側で改行を使うことで、綺麗で柔らかなコードに修正できることを確認しています。引数の途中に改行を入れることもできます。</p>
+
+<pre class="brush: js notranslate">var func = (a, b, c) =&gt;
+  1;
+
+var func = (a, b, c) =&gt; (
+  1
+);
+
+var func = (a, b, c) =&gt; {
+  return 1
+};
+
+var func = (
+ a,
+ b,
+  c
+) =&gt; 1;
+
+// no SyntaxError thrown</pre>
+
+<h2 id="Parsing_order" name="Parsing_order">解析の順序</h2>
+
+<p>アロー関数内のアロー(矢印)はオペレーターではないですが、アロー関数は通常の関数と異なり、<a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence">オペレーターを引き継いだ</a>特別な解析ルールを持ちます。</p>
+
+<pre class="brush: js notranslate">let callback;
+
+callback = callback || function() {}; // ok
+
+callback = callback || () =&gt; {};
+// SyntaxError: invalid arrow-function arguments
+
+callback = callback || (() =&gt; {}); // ok
+</pre>
+
+<h2 id="More_examples" name="More_examples">さらなる例</h2>
+
+<pre class="brush: js line-numbers language-js notranslate">// 空のアロー関数は undefined を返します
+let empty = () =&gt; {};
+
+(() =&gt; 'foobar')();
+// "foobar" を返します
+// (this is an <a href="https://wiki.developer.mozilla.org/ja/docs/Glossary/IIFE">Immediately Invoked Function Expression</a>)
+
+var simple = a =&gt; a &gt; 15 ? 15 : a;
+simple(16); // 15
+simple(10); // 10
+
+let max = (a, b) =&gt; a &gt; b ? a : b;
+
+// 簡単な配列のフィルターリング、マッピング等
+
+var arr = [5, 6, 13, 0, 1, 18, 23];
+
+var sum = arr.reduce((a, b) =&gt; a + b);
+// 66
+
+var even = arr.filter(v =&gt; v % 2 == 0);
+// [6, 0, 18]
+
+var double = arr.map(v =&gt; v * 2);
+// [10, 12, 26, 0, 2, 36, 46]
+
+// さらに簡潔な promise チェーン
+promise.then(a =&gt; {
+ // ...
+}).then(b =&gt; {
+ // ...
+});
+
+// 見た目に解析が簡単な引数なしのアロー関数
+setTimeout( () =&gt; {
+ console.log('I happen sooner');
+ setTimeout( () =&gt; {
+ // deeper code
+ console.log('I happen later');
+ }, 1);
+}, 1);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-arrow-function-definitions', 'Arrow Function Definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの実装状況</h2>
+
+<div>
+<div class="hidden">この互換性テーブルは自動生成された物です。編集する必要がある場合は <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> へ Pull Request を送ってください。</div>
+
+<p>{{Compat("javascript.functions.arrow_functions")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連項目</h2>
+
+<ul>
+ <li><a href="https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functions/">hacks.mozilla.org サイトの "ES6 In Depth: Arrow functions"</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/functions/default_parameters/index.html b/files/ja/web/javascript/reference/functions/default_parameters/index.html
new file mode 100644
index 0000000000..f671389fba
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/default_parameters/index.html
@@ -0,0 +1,225 @@
+---
+title: デフォルト引数
+slug: Web/JavaScript/Reference/Functions/Default_parameters
+tags:
+ - ECMAScript 2015
+ - Functions
+ - JavaScript
+ - Language feature
+ - 言語機能
+ - 関数
+translation_of: Web/JavaScript/Reference/Functions/Default_parameters
+---
+<div>{{jsSidebar("Functions")}}</div>
+
+<p><span class="seoSummary"><strong>関数のデフォルト引数</strong> は、関数に値が渡されない場合や <code>undefined</code> が渡される場合に、デフォルト値で初期化される形式上の引数を指定できます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/functions-default.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">function [<var>name</var>]([<var>param1</var>[ = <var>defaultValue1</var> ][, ..., <var>paramN</var>[ = <var>defaultValueN</var> ]]]) {
+ <var>文</var>
+}
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>JavaScript では、関数の引数は、指定しなければ {{jsxref("undefined")}} になります。しかし、別な既定値を設定すると有用な場合がよくあります。そのような場合に、デフォルト引数が役立ちます。</p>
+
+<p>以前は、既定値を設定するための一般的な方法は、関数の本体で引数の値を検査し、<code>undefined</code> であった場合に値を代入することでした。</p>
+
+<p>次の例では、<code><var>b</var></code> の値を指定せずに <code>multiply</code> を呼び出した場合、<code><var>a</var> * <var>b</var></code> を評価するときに <code><var>b</var></code> の値が <code>undefined</code> となり、<code>multiply</code> は <code>NaN</code> を返します。</p>
+
+<pre class="brush: js">function multiply(a, b) {
+ return a * b
+}
+
+multiply(5, 2) // 10
+multiply(5) // NaN !
+</pre>
+
+<p>こうなることを防ぐためには、2行目で使われているように、<code>multiply</code> が 1 つだけの引数で呼び出された場合に <code><var>b</var></code> を <code>1</code> に設定します。</p>
+
+<pre class="brush: js">function multiply(a, b) {
+ b = (typeof b !== 'undefined') ? b : 1
+ return a * b
+}
+
+multiply(5, 2) // 10
+multiply(5) // 5
+</pre>
+
+<p>ES2015 のデフォルト引数を用いると、関数本体内のチェックはもはや必要なくなります。関数の先頭で <code>1</code> を <code><var>b</var></code> の既定値として設定するだけです。</p>
+
+<pre class="brush: js">function multiply(a, b = 1) {
+ return a * b
+}
+
+multiply(5, 2) // 10
+multiply(5) // 5
+multiply(5, undefined) // 5
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="undefined_とその他の_falsy_な値を渡した場合"><code>undefined</code> とその他の falsy な値を渡した場合</h3>
+
+<p>この例の 2番目の呼び出しでは、第1引数で明示的に (<code>null</code> やその他の {{glossary("falsy")}} な値ではなく) <code>undefined</code> を設定していても、<code><var>num</var></code> 引数の値は既定値のままになります</p>
+
+<pre class="brush: js">function test(num = 1) {
+ console.log(typeof num)
+}
+
+test() // 'number' (num は 1 に設定)
+test(undefined) // 'number' (こちらも num は 1 に設定)
+
+// 他の falsy な値での検査
+test('') // 'string' (num は '' に設定)
+test(null) // 'object' (num は null に設定)
+</pre>
+
+<h3 id="Evaluated_at_call_time" name="Evaluated_at_call_time">呼び出し時の評価</h3>
+
+<p>デフォルト引数は<em>呼び出し時</em>に評価されるので、Python などと異なり、関数が呼ばれる度に新しいオブジェクトが生成されます。</p>
+
+<pre class="brush: js">function append(value, array = []) {
+ array.push(value)
+ return array
+}
+
+append(1) //[1]
+append(2) //[1, 2] ではなく [2]
+</pre>
+
+<p>これは、関数と変数にも適用されます。</p>
+
+<pre class="brush: js">function callSomething(thing = something()) {
+ return thing
+}
+
+let numberOfTimesCalled = 0
+function something() {
+ numberOfTimesCalled += 1
+ return numberOfTimesCalled
+}
+
+callSomething() // 1
+callSomething() // 2
+</pre>
+
+<h3 id="Earlier_parameters_are_available_to_later_default_parameters" name="Earlier_parameters_are_available_to_later_default_parameters">前の引数を後のデフォルト引数で利用可能</h3>
+
+<p>前に (左側で) 定義された引数は、その後のデフォルト引数で利用することができます。</p>
+
+<pre class="brush: js">function greet(name, greeting, message = greeting + ' ' + name) {
+ return [name, greeting, message]
+}
+
+greet('David', 'Hi') // ["David", "Hi", "Hi David"]
+greet('David', 'Hi', 'Happy Birthday!') // ["David", "Hi", "Happy Birthday!"]
+</pre>
+
+<p>この機能はこの、いくつもの極端な例を扱うデモに近いかもしれません。</p>
+
+<pre class="brush: js">function go() {
+ return ':P'
+}
+
+function withDefaults(a, b = 5, c = b, d = go(), e = this,
+ f = arguments, g = this.value) {
+ return [a, b, c, d, e, f, g]
+}
+
+function withoutDefaults(a, b, c, d, e, f, g) {
+ switch (arguments.length) {
+ case 0:
+ a;
+ case 1:
+ b = 5;
+ case 2:
+ c = b;
+ case 3:
+ d = go();
+ case 4:
+ e = this;
+ case 5:
+ f = arguments;
+ case 6:
+ g = this.value;
+ default:
+ }
+ return [a, b, c, d, e, f, g];
+}
+
+withDefaults.call({value: '=^_^='});
+// [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
+
+withoutDefaults.call({value: '=^_^='});
+// [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
+</pre>
+
+<h3 id="Functions_defined_inside_function_body" name="Functions_defined_inside_function_body">関数本体の内部で定義された関数</h3>
+
+<p>関数の本体の中で宣言された関数は、外側の関数のデフォルト引数の中で参照することができません。これを行おうとすると、{{jsxref("ReferenceError")}} が発生します。</p>
+
+<p>デフォルト引数は、常に最初に実行され、関数本体内の関数宣言は、その後に評価されるからです。</p>
+
+<pre class="brush: js">// 動作しません。ReferenceError が発生します。
+function f(a = go()) {
+ function go() { return ':P' }
+}
+</pre>
+
+<h3 id="Parameters_without_defaults_after_default_parameters" name="Parameters_without_defaults_after_default_parameters">デフォルト引数の後の既定値なしの引数</h3>
+
+<p>引数は左から右に設定され、後の引数に既定値がなくてもデフォルト引数を上書きします。</p>
+
+<pre class="brush: js">function f(x = 1, y) {
+ return [x, y]
+}
+
+f() // [1, undefined]
+f(2) // [2, undefined]
+</pre>
+
+<h3 id="Destructured_parameter_with_default_value_assignment" name="Destructured_parameter_with_default_value_assignment">既定値のある分割代入の引数</h3>
+
+<p>既定値の代入を、{{jsxref("Operators/Destructuring_assignment", "分割代入", "", 1)}}表記で行うことができます。</p>
+
+<pre class="brush: js">function f([x, y] = [1, 2], {z: z} = {z: 3}) {
+ return x + y + z
+}
+
+f() // 6</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.functions.default_parameters")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a class="external" href="http://wiki.ecmascript.org/doku.php?id=harmony:parameter_default_values" rel="external" title="http://wiki.ecmascript.org/doku.php?id=harmony:parameter_default_values">Original proposal at ecmascript.org</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/functions/get/index.html b/files/ja/web/javascript/reference/functions/get/index.html
new file mode 100644
index 0000000000..bd036a5733
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/get/index.html
@@ -0,0 +1,176 @@
+---
+title: ゲッター
+slug: Web/JavaScript/Reference/Functions/get
+tags:
+ - ECMAScript 2015
+ - ECMAScript 5
+ - Functions
+ - JavaScript
+ - Language feature
+ - 言語機能
+ - 関数
+translation_of: Web/JavaScript/Reference/Functions/get
+---
+<div>{{jsSidebar("Functions")}}</div>
+
+<p><strong><code>get</code></strong> 構文は、オブジェクトのプロパティを関数に結びつけ、プロパティが参照された時に関数が呼び出されるようにします。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/functions-getter.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">{get <var>prop</var>() { ... } }
+{get [<var>expression</var>]() { ... } }</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>prop</var></code></dt>
+ <dd>与えられた関数に結び付けられるプロパティの名前</dd>
+ <dt><code><var>expression</var></code></dt>
+ <dd>ECMAScript 6 より、算出されたプロパティ名 (computed property name) の式を使用して関数に結び付けることもできます。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>時として、動的に計算した値を返すプロパティにアクセスを許可したほうが望ましい場合や、明示的なメソッドを呼び出すことなく内部変数に状態を反映させたい場合があります。 JavaScript では、<em>ゲッター</em>を使ってこれを行うことが可能です。</p>
+
+<p>プロパティに結び付けられたゲッターと、実際に値を持つプロパティを同時に持つことはできませんが、ゲッターとセッターを組み合わせて使用し、一種の擬似プロパティを作成することはできます。</p>
+
+<p><code>get</code> 構文を使用する際の注意事項:</p>
+
+<ul>
+ <li>数値または文字列による識別子を持つことができます。</li>
+ <li>パラメータの数は 0 でなければなりません (詳しくは <a href="http://whereswalden.com/2010/08/22/incompatible-es5-change-literal-getter-and-setter-functions-must-now-have-exactly-zero-or-one-arguments/" rel="external nofollow">Incompatible <abbr title="ECMAScript 5th edition">ES5</abbr> change: literal getter and setter functions must now have exactly zero or one arguments</a> をご覧ください)。</li>
+ <li>1つのオブジェクトリテラル中に、同じプロパティに対する別の <code>get</code> またはデータの割り当てが現れてはいけません (<code>{ get x() { }, get x() { } }</code> や <code>{ x: ..., get x() { } }</code> は禁止されています)。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Defining_a_getter_on_new_objects_in_object_initializers" name="Defining_a_getter_on_new_objects_in_object_initializers">オブジェクト初期化時における新しいオブジェクトのゲッターの定義</h3>
+
+<p>以下の例では、オブジェクト <code>obj</code> の擬似プロパティとして、 <code>log</code> 内の最後の配列アイテムを返す <code>latest</code> プロパティを作成します。</p>
+
+<pre class="brush: js">const obj = {
+ log: ['example','test'],
+ get latest() {
+ if (this.log.length === 0) return undefined;
+ return this.log[this.log.length - 1];
+ }
+}
+console.log(obj.latest); // "test"
+</pre>
+
+<p><code>latest</code> に値を代入しようとしても、変更はされないことに注意して下さい。</p>
+
+<h3 id="Deleting_a_getter_using_the_delete_operator" name="Deleting_a_getter_using_the_delete_operator"><code>delete</code> 演算子によるゲッターの削除</h3>
+
+<p>ゲッターを削除したい場合は、 {{jsxref("Operators/delete", "delete")}} を使用します。</p>
+
+<pre class="brush: js">delete <var>obj</var>.latest;
+</pre>
+
+<h3 id="既存のオブジェクトへの_defineProperty_を使用したゲッターの定義">既存のオブジェクトへの <code>defineProperty</code> を使用したゲッターの定義</h3>
+
+<p>任意のタイミングで既存のオブジェクトにゲッターを追加するには、 {{jsxref("Object.defineProperty()")}} を使用します。</p>
+
+<pre class="brush: js">const o = {a: 0};
+
+Object.defineProperty(o, 'b', { get: function() { return this.a + 1; } });
+
+console.log(o.b) // getter を実行。a + 1 を算出する (結果は 1)</pre>
+
+<h3 id="Using_a_computed_property_name" name="Using_a_computed_property_name">算出されたプロパティ名の使用</h3>
+
+<pre class="brush: js">const expr = 'foo';
+
+const obj = {
+ get [expr]() { return 'bar'; }
+};
+
+console.log(obj.foo); // "bar"</pre>
+
+<h3 id="Smart_self-overwriting_lazy_getters" name="Smart_self-overwriting_lazy_getters">スマート / 自己書き換え / 怠惰なゲッター</h3>
+
+<p>ゲッターはオブジェクトのプロパティを<em>定義</em>する手段を提供しますが、アクセスされるまでプロパティの値を<em>計算</em>しません。ゲッターは値を計算するコストを、値が必要になるまで先送りします。値が必要でなければ、そのコストを負担しません。</p>
+
+<p>プロパティの値の計算を先送りしたり後のアクセスのためにキャッシュするための付加的な最適化技術が、<strong>スマート (または<a href="https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%A2%E5%8C%96">メモ化</a>) ゲッター</strong>です。初めてゲッターにアクセスされたときに、値を計算してキャッシュします。以降のアクセスでは再計算せずに、キャッシュした値を返します。これは次のような状況で役に立ちます。</p>
+
+<ul>
+ <li>プロパティの値の計算コストが高い場合 (大量の RAM や CPU 時間を使用する、ワーカースレッドを生成する、リモートのファイルを読み込むなど)。</li>
+ <li>値がすぐに必要ではない場合。値を後で使用する、あるいはまったく使用しない場合がある状況。</li>
+ <li>何度もアクセスされる値で、値が変更されないため再計算の必要がない、あるいは再計算すべきではない場合。</li>
+</ul>
+
+<div class="note">
+<p>値が変わると見込まれるプロパティで、怠惰なゲッターを使用してはいけません。このようなゲッターは値を再計算しないためです。</p>
+</div>
+
+<p>以下の例では、オブジェクトが自身のプロパティとしてゲッターを持っています。プロパティを取得すると、プロパティはオブジェクトから削除された後に再追加されますが、このとき暗黙的にデータプロパティとして追加されます。最終的に、値が返されます。</p>
+
+<pre class="brush: js">get notifier() {
+ delete this.notifier;
+ return this.notifier = document.getElementById('bookmarked-notification-anchor');
+},</pre>
+
+<p>Firefox のコードでは、 <code>XPCOMUtils.jsm</code> コードモジュールもご覧ください。これは <code><a href="/ja/docs/Mozilla/JavaScript_code_modules/XPCOMUtils.jsm#defineLazyGetter()">defineLazyGetter()</a></code> 関数を定義しています。</p>
+
+<h3 id="get_vs._defineProperty" name="get_vs._defineProperty"><code>get</code> と <code>defineProperty</code></h3>
+
+<p><code>get</code> キーワードと {{jsxref("Object.defineProperty()")}} の使用は似た結果になりますが、 {{jsxref("classes")}} 上で使用する場合は微妙な違いがあります。</p>
+
+<p><code>get</code> を使用した場合は、プロパティはインスタンスのプロトタイプに定義されるのに対し、 {{jsxref("Object.defineProperty()")}} を使用した場合は、プロパティは適用されたインスタンスに定義されます。</p>
+
+<pre class="brush: js">class Example {
+ get hello() {
+ return 'world';
+ }
+}
+
+const obj = new Example();
+console.log(obj.hello);
+// "world"
+
+console.log(Object.getOwnPropertyDescriptor(obj, 'hello'));
+// undefined
+
+console.log(
+ Object.getOwnPropertyDescriptor(
+ Object.getPrototypeOf(obj), 'hello'
+ )
+);
+// { configurable: true, enumerable: false, get: function get hello() { return 'world'; }, set: undefined }</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.functions.get")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/set">setter</a></li>
+ <li>{{jsxref("Operators/delete", "delete")}}</li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Object.defineGetter", "__defineGetter__")}}</li>
+ <li>{{jsxref("Object.defineSetter", "__defineSetter__")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">ゲッターとセッターの定義</a> (JavaScript ガイド)</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/functions/index.html b/files/ja/web/javascript/reference/functions/index.html
new file mode 100644
index 0000000000..a9e3cee514
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/index.html
@@ -0,0 +1,575 @@
+---
+title: 関数
+slug: Web/JavaScript/Reference/Functions
+tags:
+ - Function
+ - Functions
+ - Guide
+ - JavaScript
+ - Parameter
+ - parameters
+translation_of: Web/JavaScript/Reference/Functions
+---
+<div>{{jsSidebar("Functions")}}</div>
+
+<p>一般的に言うと、関数とは外部 (再帰の場合は内部) から <em>呼ばれる</em> ことのできる「サブプログラム」です。プログラムそのもののように、関数は<em>{{ 訳語("関数本体", "function body") }}</em>と呼ばれる連続した文で構成されます。値を関数に <em>渡す</em> 事ができ、関数は値を<em>返す</em>事ができます。</p>
+
+<p>JavaScript において、関数は第一級オブジェクトです。すなわち、関数はオブジェクトであり、他のあらゆるオブジェクトと同じように操作したり渡したりする事ができます。具体的には、関数は <code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Function" title="Ja/JavaScript/Reference/Global_Objects/Function">Function</a></code> オブジェクトです。</p>
+
+<p>より詳細な例や解説については、<a href="/ja/docs/Web/JavaScript/Guide/Functions">JavaScript の関数のガイド</a>を参照してください。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>JavaScript における全ての関数は、実際には <code>Function</code> オブジェクトです。<code>Function</code> オブジェクトのプロパティとメソッドについての情報は {{jsxref("Function")}} をご覧ください。</p>
+
+<p>初期値以外の値を返すためには、返す値を指定する <code><a href="/ja/docs/JavaScript/Reference/Statements/return" title="Ja/JavaScript/Reference/Statements/return">return</a></code> 文が関数内になくてはなりません。<code>return</code> 文を持たない関数は初期値を返します。<code><a href="/ja/docs/JavaScript/Reference/Operators/new">new</a></code> キーワードとともに <a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/constructor" title="JavaScript/Reference/Global_Objects/Object/constructor">constructor</a> が呼び出された場合、その <code>this</code> パラメータが初期値となります。それ以外の全ての関数がデフォルトで返す値は {{jsxref("undefined")}} です。</p>
+
+<p>関数の仮引数 (パラメータ) には、関数呼び出しにおいて実引数 (アーギュメント) が渡されます。実引数は、関数に「<em>値渡し</em>」されます: 関数の中で引数の値を変更しても、その変更はグローバルスコープもしくは呼び出し元の関数内には反映されません。オブジェクト参照も「値」ですが、こちらは特別です: 参照されているオブジェクトのプロパティを関数の中で変更すると、次の例にあるように、その変更を関数の外部から見ることができます:</p>
+
+<pre class="brush: js notranslate"> /* 関数 'myFunc' を宣言 */
+function myFunc(theObject) {
+ theObject.brand = "Toyota";
+}
+
+/*
+ * 変数 'mycar' を宣言
+ * 新しいオブジェクトの生成と初期化
+ * 'mycar' への参照をオブジェクトに代入
+ */
+var mycar = {
+ brand: "Honda",
+ model: "Accord",
+ year: 1998
+};
+
+/* 'Honda' を出力 */
+console.log(mycar.brand);
+
+/* オブジェクト参照を関数に渡す */
+myFunc(mycar);
+
+/*
+ * オブジェクトの 'brand' プロパティの値は関数によって変更されたので
+ * 'Toyota' と出力される
+ */
+console.log(mycar.brand);
+</pre>
+
+<p><a href="/ja/docs/JavaScript/Reference/Operators/this" title="JavaScript/Reference/Operators/this"><code>this</code> キーワード</a>は現在実行中の関数を参照しません。よって、関数内部であっても、名前によって <code>Function</code> オブジェクトを参照しなければなりません。</p>
+
+<h2 id="Defining_functions" name="Defining_functions">関数を定義する</h2>
+
+<p>関数を定義するのにはいくつかの方法があります。</p>
+
+<h3 id="The_function_declaration_function_statement" name="The_function_declaration_function_statement">関数宣言 (<code>function</code> 文)</h3>
+
+<p>関数を宣言するための特殊な構文があります。(詳細は <a href="/ja/docs/JavaScript/Reference/Statements/function" title="Ja/JavaScript/Reference/Statements/function">function 文</a>を参照)</p>
+
+<pre class="syntaxbo notranslatex notranslate">function <em>name</em>([<em>param</em>[, <em>param</em>[, ... <em>param</em>]]]) {
+ <em>statements</em>
+}
+</pre>
+
+<dl>
+ <dt><code>name</code></dt>
+ <dd>関数名。</dd>
+</dl>
+
+<dl>
+ <dt><code>param</code></dt>
+ <dd>関数に渡される引数の名前です。</dd>
+</dl>
+
+<dl>
+ <dt><code>statements</code></dt>
+ <dd>関数の本体を構成する文。</dd>
+</dl>
+
+<h3 id="The_function_expression_function_expression" name="The_function_expression_function_expression">関数式 (<code>function</code> 演算子)</h3>
+
+<p>関数式は、関数宣言と似ており、同じ構文を持っています (詳細は <a href="/ja/docs/JavaScript/Reference/Operators/Special_Operators/function_Operator" title="ja/JavaScript/Reference/Operators/Special_Operators/function_Operator">function 演算子</a>を参照)。関数式はより大きな式の一部になることもあります。「名前付き」の関数式を定義することもできます(例えばその名前はコールスタック内で使われるかもしれません)し、「無名の」関数式を定義することもできます。関数式はスコープの開始時に「巻き上げ」られないので、コード内でそれらが登場するより前に使用することはできません。</p>
+
+<pre class="syntaxbox notranslate">function [<em>name</em>]([<em>param</em>[, <em>param</em>[, ... <em>param</em>]]]) {
+ <em>statements</em>
+}
+</pre>
+
+<dl>
+ <dt><code>name</code></dt>
+ <dd>関数名。省略する事ができ、その場合関数は無名関数と見なされます。</dd>
+</dl>
+
+<dl>
+ <dt><code>param</code></dt>
+ <dd>関数に渡される引数の名前です。</dd>
+ <dt><code>statements</code></dt>
+ <dd>関数の本体を構成する文。</dd>
+</dl>
+
+<p>以下は<strong>無名の</strong>関数式(名前が使われていない)の例です。</p>
+
+<pre class="brush: js notranslate">var myFunction = function() {
+ statements
+}</pre>
+
+<p><strong>名前付きの</strong>関数式を作るため、定義の中で名前を提供することも可能です。</p>
+
+<pre class="brush: js notranslate">var myFunction = function namedFunction(){
+  statements
+}
+</pre>
+
+<p>名前付きの関数式を作ることのメリットの 1 つは、エラーに遭遇したとき、スタックトレースがその関数の名前を含めるため、エラーの発生源をより容易に特定できるということです。</p>
+
+<p>ここまで見てきたように、どちらの例も <code>function</code> キーワードから開始されていません。<code>function</code> から開始せずに関数を含んでいる文が関数式です。</p>
+
+<p>関数を一度だけ使うときの一般的なパターンが {{glossary("IIFE", "IIFE (Immediately Invokable Function Expression)")}} です。</p>
+
+<pre class="brush: js notranslate">(function() {
+ statements
+})();</pre>
+
+<p>即時関数は、関数を宣言した直後に実行する関数式です。</p>
+
+<h3 id="The_generator_function_declaration_function*_statement" name="The_generator_function_declaration_function*_statement">ジェネレーター関数宣言 (<code>function*</code> 文)</h3>
+
+<p>ジェネレーター関数の宣言のための特別な構文です(詳細は {{jsxref('Statements/function*', 'function* 文')}} を参照してください)。</p>
+
+<pre class="syntaxbox notranslate">function* <em>name</em>([<em>param</em>[, <em>param</em>[, ... <em>param</em>]]]) {
+ <em>statements</em>
+}
+</pre>
+
+<dl>
+ <dt><code>name</code></dt>
+ <dd>関数名。</dd>
+</dl>
+
+<dl>
+ <dt><code>param</code></dt>
+ <dd>関数に渡される引数の名前です。</dd>
+</dl>
+
+<dl>
+ <dt><code>statements</code></dt>
+ <dd>関数の本体を構成する文。</dd>
+</dl>
+
+<h3 id="The_generator_function_expression_function*_expression" name="The_generator_function_expression_function*_expression">ジェネレーター関数式 (<code>function*</code> 演算子)</h3>
+
+<p>ジェネレーター関数式は、ジェネレーター関数宣言と似ており、同じ構文を持っています (詳細は {{jsxref('Operators/function*', 'function* 演算子')}} を参照してください)。</p>
+
+<pre class="syntaxbox notranslate">function* [<em>name</em>]([<em>param</em>[, <em>param</em>[, ... <em>param</em>]]]) {
+ <em>statements</em>
+}
+</pre>
+
+<dl>
+ <dt><code>name</code></dt>
+ <dd>関数名。省略する事ができ、その場合関数は無名関数と見なされます。</dd>
+</dl>
+
+<dl>
+ <dt><code>param</code></dt>
+ <dd>関数に渡される引数の名前です。</dd>
+ <dt><code>statements</code></dt>
+ <dd>関数の本体を構成する文。</dd>
+</dl>
+
+<h3 id="The_arrow_function_expression_>" name="The_arrow_function_expression_>">アロー関数式 (=&gt;)</h3>
+
+<p>アロー関数式は短縮構文を持ち、また関数の this 値を語彙的に束縛します (詳細は<a href="/ja/docs/JavaScript/Reference/arrow_functions">アロー関数</a>を参照):</p>
+
+<pre class="syntaxbox notranslate">([param[, param]]) =&gt; {
+ statements
+}
+
+param =&gt; expression
+</pre>
+
+<dl>
+ <dt><code>param</code></dt>
+ <dd>引数の名前。引数が 0 個の場合は <code>()</code> で示すことが必要です。引数が 1 個の場合のみ、<span class="mw-headline" id="Parentheses_.28_.29">丸括弧</span>は必須ではありません。(例えば <code>foo =&gt; 1</code>)</dd>
+ <dt><code>statements または expression</code></dt>
+ <dd>複数の文は中括弧で括らなければなりません。単一の式では、中括弧は必須ではありません。式は、関数の暗黙的な戻り値でもあります。</dd>
+</dl>
+
+<h3 id="The_Function_constructor" name="The_Function_constructor"><code>Function</code> コンストラクタ</h3>
+
+<div class="note">
+<p><strong>メモ:</strong> <code>Function</code> コンストラクターによる関数の生成は推奨されません。これは、文字列として関数本体が必要で、JS エンジンによる最適化を妨げたり、他の問題を引き起こしたりする場合があるためです。</p>
+</div>
+
+<p>他の全てのオブジェクトと同じように、<code>new</code> 演算子を使って {{jsxref("Function")}} オブジェクトを作成する事ができます。</p>
+
+<pre class="syntaxbox notranslate">new Function (<em>arg1</em>, <em>arg2</em>, ... <em>argN</em>, <em>functionBody</em>)
+</pre>
+
+<dl>
+ <dt><code>arg1, arg2, ... arg<em>N</em></code></dt>
+ <dd>関数で仮引数名として使われる、0 個以上の名前。それぞれが、妥当な JavaScript 識別子に相当する文字列、もしくはそういった文字列のカンマで分割されたリストでなくてはなりません。</dd>
+</dl>
+
+<dl>
+ <dt><code>functionBody</code></dt>
+ <dd>関数定義を構成する JavaScript 文を含む文字列。</dd>
+</dl>
+
+<p><code>Function</code> コンストラクタを関数として (<code>new</code> 演算子を使わずに) 呼び出しても、コンストラクタとして呼び出すのと同じ効果があります。</p>
+
+<h3 id="The_GeneratorFunction_constructor" name="The_GeneratorFunction_constructor"><code>GeneratorFunction</code> コンストラクタ</h3>
+
+<div class="note">
+<p><strong>メモ:</strong> <code>GeneratorFunction</code> はグローバルオブジェクトではありませんが、ジェネレーター関数のインスタンスから得ることができます(詳細は {{jsxref("GeneratorFunction")}} を参照してください)。</p>
+</div>
+
+<div class="note">
+<p><strong>メモ:</strong> <code>GeneratorFunction</code> コンストラクタによる関数の生成は推奨されません。これは、文字列として関数本体が必要で、JS エンジンによる最適化を妨げたり、他の問題を引き起こしたりする場合があるためです。</p>
+</div>
+
+<p>他の全てのオブジェクトと同じように、<code>new</code> 演算子を使って {{jsxref("GeneratorFunction")}} オブジェクトを作成する事ができます。</p>
+
+<pre class="syntaxbox notranslate">new GeneratorFunction (<em>arg1</em>, <em>arg2</em>, ... <em>argN</em>, <em>functionBody</em>)
+</pre>
+
+<dl>
+ <dt><code>arg1, arg2, ... arg<em>N</em></code></dt>
+ <dd>関数で仮引数名として使われる、0 個以上の名前。それぞれが、妥当な JavaScript 識別子に相当する文字列、もしくはそういった文字列のカンマで分割されたリストでなくてはなりません。例えば "<code>x</code>" 、"<code>theValue</code>"、もしくは "<code>a,b</code>" などです。</dd>
+</dl>
+
+<dl>
+ <dt><code>functionBody</code></dt>
+ <dd>関数定義を構成する JavaScript 文を含む文字列。</dd>
+</dl>
+
+<p><code>Function</code> コンストラクタを関数として (<code>new</code> 演算子を使わずに) 呼び出しても、コンストラクタとして呼び出すのと同じ効果があります。</p>
+
+<h2 id="The_arguments_object" name="The_arguments_object">関数の引数</h2>
+
+<h3 id="Default_parameters" name="Default_parameters">デフォルト引数</h3>
+
+<p>関数のデフォルト引数は、関数に値が渡されない場合や <code>undefined</code> が渡される場合に、デフォルト値で初期化される形式上の引数を指定できます。詳細は<a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/Default_parameters">デフォルト引数</a>を参照してください。</p>
+
+<h3 id="Rest_parameters" name="Rest_parameters">Rest parameters</h3>
+
+<p>rest parameters とは、不特定多数の引数を配列として受け取る構文です。詳細は <a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/rest_parameters">rest parameters</a> を参照してください。</p>
+
+<h2 id="The_arguments_object" name="The_arguments_object"><code>arguments</code> オブジェクト</h2>
+
+<p><code>arguments</code> オブジェクトを使って、関数内部で関数の引数を参照することができます。<a href="/ja/docs/JavaScript/Reference/Functions/arguments" title="Ja/JavaScript/Reference/Functions/arguments">arguments</a> を参照してください。</p>
+
+<ul>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Functions_and_function_scope/arguments">arguments</a></code>: 現在実行中の関数に渡された引数を格納する配列状オブジェクト。</li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Functions_and_function_scope/arguments/callee">arguments.callee</a></code> : 現在実行中の関数。</li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Functions_and_function_scope/arguments/caller">arguments.caller</a></code> : 現在実行中の関数を実行した関数。</li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Functions_and_function_scope/arguments/length">arguments.length</a></code>: 関数に渡された引数の数。</li>
+</ul>
+
+<h2 id="Scope_and_the_function_stack" name="Scope_and_the_function_stack">メソッドを定義する</h2>
+
+<h3 id="Getter_and_setter_functions" name="Getter_and_setter_functions">getter と setter 関数</h3>
+
+<p>新しいプロパティの追加をサポートする、どの標準ビルトインオブジェクトあるいはユーザー定義オブジェクトにも、getter(accessor メソッド)や setter (mutator メソッド)を定義することができます。getter と setter を定義するための構文は、オブジェクトリテラル構文を使用します。</p>
+
+<dl>
+ <dt><a href="/ja/docs/Web/JavaScript/Reference/Functions/get">get</a></dt>
+ <dd>
+ <p>オブジェクトのプロパティを、そのプロパティが検索されたときに呼び出される関数に束縛します。</p>
+ </dd>
+ <dt><a href="/ja/docs/Web/JavaScript/Reference/Functions/set">set</a></dt>
+ <dd>オブジェクトのプロパティを、そのプロパティに代入しようとしたときに呼び出される関数に束縛します。</dd>
+</dl>
+
+<h3 id="Method_definition_syntax" name="Method_definition_syntax">メソッド定義構文</h3>
+
+<p>ECMAScript 2015 からは、独自のメソッドを、getter と setter に似た、より短い構文で定義することができます。詳細は<a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義</a>を参照してください。</p>
+
+<pre class="brush: js notranslate">var obj = {
+ foo() {},
+  bar() {}
+};</pre>
+
+<h2 id="Function_constructor_vs._function_declaration_vs._function_expression" name="Function_constructor_vs._function_declaration_vs._function_expression">コンストラクタか関数宣言か関数式か</h2>
+
+<p>以下のものを比較してみて下さい。</p>
+
+<p><code>Function</code> コンストラクタによって定義され、変数 <code>multiply</code> に代入された関数:</p>
+
+<pre class="brush: js notranslate">var multiply = new Function('x', 'y', 'return x * y');</pre>
+
+<p><code>multiply</code> と命名された関数の <em>関数宣言:</em></p>
+
+<pre class="brush: js notranslate">function multiply(x, y) {
+  return x * y;
+} // ここにセミコロンは必要ありません
+</pre>
+
+<p>変数 <code>multiply</code> に代入された、無名関数の<em>関数式:</em></p>
+
+<pre class="brush: js notranslate">var multiply = function(x, y) {
+ return x * y;
+};
+</pre>
+
+<p>変数 <code>multiply</code> に代入された、<code>func_name</code> と命名された関数式:</p>
+
+<pre class="brush: js notranslate">var multiply = function func_name(x, y) {
+ return x * y;
+};
+</pre>
+
+<h3 id="Differences" name="Differences">相違点</h3>
+
+<p>これらは全ておおよそ同じ働きをしますが、いくつか微妙に異なる点があります。</p>
+
+<p>関数名と関数が代入された変数の間には違いがあります。関数名は変える事ができませんが、関数が代入された変数は再代入する事ができます。関数名は関数本体の内部でのみ使用する事ができます。関数本体の外側でそれを使用しようとするとエラー (その関数名がそれより前に <code>var</code> 文によって宣言されていれば <code>undefined</code> ) になります。例えば、</p>
+
+<pre class="brush: js notranslate">var y = function x() {};
+alert(x); // エラーを投げる
+</pre>
+
+<p>関数名は <a href="/ja/docs/JavaScript/Reference/Global_Objects/Function/toString" title="ja/JavaScript/Reference/Global_Objects/Function/toString"><code>Function</code> の toString メソッド</a>によってシリアライズしたときにも現れます。</p>
+
+<p>一方、関数が代入された変数はそのスコープ内でのみ有効で、そのスコープは関数が宣言されたスコープを含んでいる事が保証されています。</p>
+
+<p>4 つめの例にあるように、関数名はその関数が代入される変数と違っていても構いません。お互いの間に関連性は有りません。関数宣言は同時にその関数名と同じ名前の変数を作成します。よって、関数式で定義されたものと違って、関数宣言で定義された関数は定義されたスコープ内でその名前によってアクセスできます。</p>
+
+<p><code>new Function</code> によって定義された関数は関数名を持ちません。しかし、JavaScript エンジンの <a href="/ja/docs/SpiderMonkey" title="ja/SpiderMonkey">SpiderMonkey</a> では、その関数をシリアライズされた形式にすると "anonymous" という名前を持っているかのように表示されます。例えば、<code>alert(new Function())</code> はこのように出力されます。</p>
+
+<pre class="brush: js notranslate">function anonymous() {
+}
+</pre>
+
+<p>この関数は実際には名前を持っていないので、<code>anonymous</code> は関数内部でアクセスできる変数ではありません。例えば、次の文はエラーになります。</p>
+
+<pre class="brush: js notranslate">var foo = new Function("alert(anonymous);");
+foo();
+</pre>
+
+<p>関数式や <code>Function</code> コンストラクタで定義されたものとは違い、関数宣言で定義された関数は、関数自体が宣言される前に使用する事ができます。例えば、</p>
+
+<pre class="brush: js notranslate">foo(); // FOO! とアラートされる
+function foo() {
+ alert('FOO!');
+}
+</pre>
+
+<p>関数式で定義された関数は現在のスコープを継承します。つまり、関数がクロージャを形成します。一方、<code>Function</code> コンストラクタで定義された関数は (あらゆる関数が継承する) グローバルスコープ以外はどんなスコープも継承しません。</p>
+
+<pre class="brush: js notranslate">/*
+ * Declare and initialize a variable 'p' (global)
+ * and a function 'myFunc' (to change the scope) inside which
+ * declare a varible with same name 'p' (current) and
+ * define three functions using three different ways:-
+ * 1. function declaration
+ * 2. function expression
+ * 3. function constructor
+ * each of which will log 'p'
+ */
+var p = 5;
+function myFunc() {
+ var p = 9;
+
+ function decl() {
+ console.log(p);
+ }
+ var expr = function() {
+ console.log(p);
+ };
+ var cons = new Function('\tconsole.log(p);');
+
+ decl();
+ expr();
+ cons();
+}
+myFunc();
+
+/*
+ * Logs:-
+ * 9 - for 'decl' by function declaration (current scope)
+ * 9 - for 'expr' by function expression (current scope)
+ * 5 - for 'cons' by Function constructor (global scope)
+ */
+</pre>
+
+<p>関数式と関数宣言で定義された関数は一度しか解析されませんが、<code>Function</code> コンストラクタで定義された関数はそうではありません。つまり、<code>Function</code> コンストラクタに渡された関数本体を表す文字列が、評価されるたびに必ず解析されます。関数式は毎回クロージャを作成しますが、関数本体は再解析されないので、"<code>new Function(...)</code>" よりは関数式の方がまだ高速です。したがって <code>Function</code> コンストラクタはできる限り避けるべきでしょう。</p>
+
+<p>ただし、<code>Function</code> コンストラクタの文字列を解析することで生成された関数内で入れ子にされている関数式や関数宣言は、繰り返し解析されないことに注意してください。例えば:</p>
+
+<pre class="brush: js notranslate">var foo = (new Function("var bar = \'FOO!\';\nreturn(function() {\n\talert(bar);\n});"))();
+foo(); // 関数本体の文字列で "function() {\n\talert(bar);\n}" の部分は再解析されません</pre>
+
+<p>関数宣言はとても簡単に (しばしば意図せずに) 関数式に変化します。関数宣言は以下のような時には関数宣言ではなくなります。</p>
+
+<ul>
+ <li>式の一部になった時</li>
+ <li>関数またはスクリプト自体の「{{ 原語併記("ソース要素", "source element") }}」でなくなった時。「ソース要素」はスクリプトや関数本体の中で入れ子にされていない文の事です。</li>
+</ul>
+
+<pre class="brush: js notranslate">var x = 0; // ソース要素
+if (x === 0) { // ソース要素
+ x = 10; // ソース要素ではない
+ function boo() {} // ソース要素ではない
+}
+function foo() { // ソース要素
+ var y = 20; // ソース要素
+ function bar() {} // ソース要素
+ while (y === 10) { // ソース要素
+ function blah() {} // ソース要素ではない
+ y++; // ソース要素ではない
+ }
+}
+</pre>
+
+<h3 id="Examples" name="Examples">例</h3>
+
+<pre class="brush: js notranslate">// 関数宣言
+function foo() {}
+
+// 関数式
+(function bar() {})
+
+// 関数式
+x = function hello() {}
+
+
+if (x) {
+ // 関数式
+ function world() {}
+}
+
+
+// 関数宣言
+function a() {
+ // 関数宣言
+ function b() {}
+ if (0) {
+ // 関数式
+ function c() {}
+ }
+}
+</pre>
+
+<h2 id="Block-level_functions" name="Block-level_functions">ブロックレベル関数</h2>
+
+<p>ES2015 で始まった <a href="/ja/docs/Web/JavaScript/Strict_mode">strict モード</a>では、ブロック内の関数はそのブロックに新しいスコープを形成します。ES2015 より前では、ブロックレベル関数は strict モードでは禁止されています。</p>
+
+<pre class="brush: js notranslate">'use strict';
+
+function f() {
+ return 1;
+}
+
+{
+ function f() {
+ return 2;
+ }
+}
+
+f() === 1; // true
+
+// 非 strict モードでは f() === 2
+</pre>
+
+<h3 id="Conditionally_defining_a_function" name="Conditionally_defining_a_function">非 strict コードにおけるブロックレベル関数</h3>
+
+<p>一言、使わないでください。</p>
+
+<p>非 strict コードでは、ブロック内の関数宣言は奇妙な動作をします。次の例を見てください。</p>
+
+<pre class="brush: js notranslate">if (shouldDefineZero) {
+ function zero() { // 危険: 互換性リスク
+ console.log("This is zero.");
+ }
+}
+</pre>
+
+<p>ES2015 では <code>shouldDefineZero</code> が false の場合、このブロックが実行されることはないので、<code>zero</code> は決して定義されないとされています。しかし、これは標準において新しいパーツです。歴史的には、このことは仕様とならないまま残されていました。いくつかのブラウザーでは、ブロックが実行されてもされなくても、<code>zero</code> を定義したでしょう。</p>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">strict モード</a>では、ES2015 をサポートする全てのブラウザーは、これを同じように扱います。<code>zero</code> は <code>shouldDefineZero</code> が true の場合のみ定義され、かつ <code>if</code> ブロックのスコープに限られます。</p>
+
+<p>条件付きで関数を定義するより安全な方法は、変数に関数式を代入することです。</p>
+
+<pre class="brush: js notranslate">var zero;
+if (shouldDefineZero) {
+ zero = function() {
+ console.log("This is zero.");
+ };
+}
+</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="Returning_a_formatted_number" name="Returning_a_formatted_number">フォーマットされた数値を返す</h3>
+
+<p>次の関数は、数値の先頭にゼロを足して固定長にした形で表される文字列を返します。</p>
+
+<pre class="brush: js notranslate">// この関数は先頭にゼロを足して固定長にした文字列を返す
+function padZeros(num, totalLen) {
+ var numStr = num.toString(); // 戻り値を文字列に初期化する
+ var numZeros = totalLen - numStr.length; // ゼロの数を計算する
+ for (var i = 1; i &lt;= numZeros; i++) {
+ numStr = "0" + numStr;
+ }
+ return numStr;
+}
+</pre>
+
+<p>次の文で padZeros 関数を呼び出します。</p>
+
+<pre class="brush: js notranslate">var result;
+result = padZeros(42,4); // "0042" を返す
+result = padZeros(42,2); // "42" を返す
+result = padZeros(5,4); // "0005" を返す
+</pre>
+
+<h3 id="Determining_whether_a_function_exists" name="Determining_whether_a_function_exists">関数が存在するかどうか確認する</h3>
+
+<p><code>typeof</code> 演算子を使うと関数が存在するかどうかを確かめる事ができます。次の例では、<code>window</code> オブジェクトが <code>noFunc</code> という関数のプロパティを持つかどうかを確かめるためのテストが行われます。もし持っていたら、それが使われます。そうでなければ、他の行動が取られます。</p>
+
+<pre class="brush: js notranslate"> if ('function' == typeof window.noFunc) {
+ // noFunc() を使う
+ } else {
+ // 何か他のことをする
+ }
+</pre>
+
+<p><code>if</code> のテストの中で、<code>noFunc</code> への参照が使われているのに注目してください。関数名の後に括弧 "()" が無いので、実際の関数は呼ばれません。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function-definitions', 'Function definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.functions")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/function", "function 文")}}</li>
+ <li>{{jsxref("Operators/function", "function 演算子")}}</li>
+ <li>{{jsxref("Statements/function*", "function* 文")}}</li>
+ <li>{{jsxref("Operators/function*", "function* 演算子")}}</li>
+ <li>{{jsxref("Function")}}</li>
+ <li>{{jsxref("GeneratorFunction", "ジェネレーター関数")}}</li>
+ <li>{{jsxref("Functions/Arrow_functions", "アロー関数")}}</li>
+ <li>{{jsxref("Functions/Default_parameters", "デフォルト引数")}}</li>
+ <li>{{jsxref("Functions/rest_parameters", "Rest parameters")}}</li>
+ <li>{{jsxref("Functions/arguments", "arguments オブジェクト")}}</li>
+ <li>{{jsxref("Functions/get", "getter")}}</li>
+ <li>{{jsxref("Functions/set", "setter")}}</li>
+ <li>{{jsxref("Functions/Method_definitions", "メソッド定義")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope">関数と関数スコープ</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/functions/method_definitions/index.html b/files/ja/web/javascript/reference/functions/method_definitions/index.html
new file mode 100644
index 0000000000..14f21a5b91
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/method_definitions/index.html
@@ -0,0 +1,218 @@
+---
+title: メソッド定義
+slug: Web/JavaScript/Reference/Functions/Method_definitions
+tags:
+ - ECMAScript 2015
+ - ECMAScript6
+ - Functions
+ - JavaScript
+ - Object
+ - Syntax
+translation_of: Web/JavaScript/Reference/Functions/Method_definitions
+---
+<div>{{JsSidebar("Functions")}}</div>
+
+<p>ECMAScript 2015 より、オブジェクトイニシャライザのメソッド定義のための短い構文が導入されました。これは、メソッドの名前に割り当てられた関数の省略形です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/functions-definitions.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">const obj = {
+  get <var>property</var>() {},
+  set <var>property</var>(<var>value</var>) {},
+ <var>property</var>( <var>parameters…</var> ) {},
+ *<var>generator</var>( <var>parameters…</var> ) {},
+ async <var>property</var>( <var>parameters…</var> ) {},
+ async* <var>generator</var>( <var>parameters…</var> ) {},
+
+ // 算出されたキーも使用可能:
+ get [<var>property]</var>() {},
+  set [<var>property]</var>(<var>value</var>) {},
+ [<var>property</var>]( <var>parameters…</var> ) {},
+ *[<var>generator</var>]( <var>parameters…</var> ) {},
+ async [<var>property</var>]( <var>parameters…</var> ) {},
+ async* [<var>generator]</var>( <var>parameters…</var> ) {},
+};
+</pre>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>簡略構文は、ECMAScript 第 5 版で導入された <a href="/docs/Web/JavaScript/Reference/Functions/get">getter</a> や <a href="/docs/Web/JavaScript/Reference/Functions/set">setter</a> 構文に似ています。</p>
+
+<p>次のコードを例にすると:</p>
+
+<pre class="brush: js">var obj = {
+ foo: function() {
+ /* コード */
+ },
+ bar: function() {
+ /* コード */
+ }
+};
+</pre>
+
+<p>これを以下のように短縮することができます:</p>
+
+<pre class="brush: js">var obj = {
+ foo() {
+ /* コード */
+ },
+ bar() {
+ /* コード */
+ }
+};
+
+</pre>
+
+<h3 id="Generator_methods" name="Generator_methods">短縮形ジェネレーターメソッド</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Statements/function*">Generator メソッド</a>は同様に簡略構文を使用して定義することができます。</p>
+
+<p>簡略構文では:</p>
+
+<ul>
+ <li>ジェネレータープロパティ名の前にアスタリスク (*)が 必要です。すなわち、<code>* g(){}</code> は動作しますが、<code>g *(){}</code> は動作しません。</li>
+ <li>非ジェネレーターメソッド定義では <code>yield</code> キーワードを入れることはできません。つまり <a href="https://wiki.developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/Legacy_generator_function">旧式の ジェネレーター関数</a> は動作せず、{{jsxref("SyntaxError")}}を投げます。<code>yield</code> は常にアスタリスク (<code>*</code>)と一緒に使ってください。</li>
+</ul>
+
+<pre class="brush: js;highlight[12]">// 名前付きプロパティを使用 (ES6 より前)
+const obj2 = {
+ g: function*() {
+ let index = 0
+ while(true)
+ yield index++
+ }
+};
+
+// 簡略構文を使用して同じオブジェクトを生成
+const obj2 = {
+ * g() {
+ let index = 0;
+ while(true)
+ yield index++
+ }
+};
+
+const it = obj2.g()
+console.log(it.next().value) // 0
+console.log(it.next().value) // 1</pre>
+
+<h3 id="Async_methods" name="Async_methods">Async メソッド</h3>
+
+<p>{{jsxref("Statements/async_function", "Async メソッド", "", 1)}}も簡略構文を使用して定義することができます。</p>
+
+<pre class="brush: js;highlight[12]">// 名前付きプロパティ
+const obj3 = {
+ f: async function () {
+ await some_promise
+ }
+};
+
+// 簡略構文を使用して同じオブジェクトを生成
+const obj3 = {
+ async f() {
+ await some_promise
+ }
+};
+</pre>
+
+<h3 id="Async_generator_methods" name="Async_generator_methods">Async ジェネレーターメソッド</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Statements/function*">Generator メソッド</a>も {{jsxref("Statements/async_function", "async", "", 1)}} 関数にすることができます。</p>
+
+<pre class="brush: js">const obj4 = {
+ f: async function* () {
+ yield 1
+ yield 2
+ yield 3
+ }
+};
+
+// 簡略構文を使用して同じオブジェクトを生成
+const obj4 = {
+ async* f() {
+ yield 1
+ yield 2
+ yield 3
+ }
+};</pre>
+
+<h3 id="Method_definitions_are_not_constructable" name="Method_definitions_are_not_constructable">メソッド定義はコンストラクタブルではない</h3>
+
+<p>すべてのメソッド定義がコンストラクターではない(簡略構文のみ!)ため、インスタンス化しようとすると {{jsxref("TypeError")}} が発生します。</p>
+
+<pre class="brush: js example-bad">const obj = {
+ method() {},
+};
+new obj.method // TypeError: obj.method is not a constructor
+
+const obj = {
+ * g() {}
+};
+new obj.g; // TypeError: obj.g is not a constructor (ES2016 で変更)
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Simple_test_case" name="Simple_test_case">簡単なテストケース</h3>
+
+<pre class="brush: js;highlight[3]">const obj = {
+ a: 'foo',
+ b() { return this.a }
+};
+console.log(obj.b()) // "foo"
+</pre>
+
+<h3 id="Computed_property_names" name="Computed_property_names">計算されたプロパティ名</h3>
+
+<p>簡略構文は計算されたプロパティ名もサポートします。</p>
+
+<pre class="brush: js;highlight[4]">const bar = {
+ foo0: function() { return 0 },
+ foo1(){ return 1 },
+ ['foo' + 2](){ return 2 },
+};
+
+console.log(bar.foo0()) // 0
+console.log(bar.foo1()) // 1
+console.log(bar.foo2()) // 2
+
+// A global function
+function foo() {
+  return 1
+}
+
+let name = 'foo'
+console.log(window[name]()) // 1</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.functions.method_definitions")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><code><a href="/docs/Web/JavaScript/Reference/Functions/get">get</a></code></li>
+ <li><code><a href="/docs/Web/JavaScript/Reference/Functions/set">set</a></code></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Lexical_grammar">字句文法</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/functions/rest_parameters/index.html b/files/ja/web/javascript/reference/functions/rest_parameters/index.html
new file mode 100644
index 0000000000..37e1727538
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/rest_parameters/index.html
@@ -0,0 +1,215 @@
+---
+title: 残余引数
+slug: Web/JavaScript/Reference/Functions/rest_parameters
+tags:
+ - Functions
+ - JavaScript
+ - Language feature
+ - Rest
+ - Rest parameters
+ - 残余引数
+ - 言語機能
+ - 関数
+translation_of: Web/JavaScript/Reference/Functions/rest_parameters
+---
+<div>{{jsSidebar("Functions")}}</div>
+
+<p><span class="seoSummary"><strong>残余引数</strong>構文により、不定数の引数を配列として表すことができます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/functions-restparameters.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">function f(<var>a</var>, <var>b</var>, ...<var>theArgs</var>) {
+ // ...
+}</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>関数の最後の引数に <code>...</code> の接頭辞を付けると、(ユーザーが提供した) その位置にある残りの引数を JavaScript の「標準の」配列の中に入れることができます。</p>
+
+<p>最後の引数のみが「残余引数」になることができます。</p>
+
+<pre class="brush: js notranslate">function myFun(a, b, ...manyMoreArgs) {
+ console.log("a", a)
+ console.log("b", b)
+ console.log("manyMoreArgs", manyMoreArgs)
+}
+
+myFun("one", "two", "three", "four", "five", "six")
+
+// コンソール出力:
+// a, one
+// b, two
+// manyMoreArgs, [three, four, five, six]
+</pre>
+
+<h3 id="Difference_between_rest_parameters_and_the_arguments_object" name="Difference_between_rest_parameters_and_the_arguments_object">残余引数と <code>arguments</code> オブジェクトとの違い</h3>
+
+<p>残余引数と {{jsxref("Functions/arguments", "arguments")}} オブジェクトの間には、主に 3 つの違いがあります。</p>
+
+<ul>
+ <li>残余引数は、各引数に個別の名前が与えられていないだけ (すなわち、正式に定義された関数式) であるのに対し、<code>arguments</code> オブジェクトは、関数に渡される<em>すべての</em>引数を含みます。</li>
+ <li><code>arguments</code> オブジェクトは実配列ではありません。一方、残余引数は {{jsxref("Global_Objects/Array", "Array")}} インスタンスです。これは、{{jsxref("Array.sort", "sort")}}, {{jsxref("Array.map", "map")}}, {{jsxref("Array.forEach", "forEach")}}, {{jsxref("Array/pop", "pop")}} などのメソッドを直接適用できることを意味します。</li>
+ <li><code>arguments</code> オブジェクトは、(<code>callee</code> プロパティのように) 自身への固有の追加機能を持っています。</li>
+</ul>
+
+<h3 id="From_arguments_to_an_array" name="From_arguments_to_an_array">arguments から配列へ</h3>
+
+<p>残余引数は、引数により引き起こされる定型コードを減らすために導入されました。</p>
+
+<pre class="brush: js notranslate">// 残余引数の登場以前は、"arguments" を普通の配列に変換するには以下のようにしていました。
+
+function f(a, b) {
+
+ let normalArray = Array.prototype.slice.call(arguments)
+ // -- or --
+ let normalArray = [].slice.call(arguments)
+ // -- or --
+ let normalArray = Array.from(arguments)
+
+ let first = normalArray.shift() // OK、最初の引数が得られる
+ let first = arguments.shift() // エラー (arguments は通常の配列ではない)
+}
+
+// 残余引数を使ってふつうの配列へのアクセスが得られるようになりました
+
+function f(...args) {
+ let normalArray = args
+ let first = normalArray.shift() // OK、最初の引数が得られる
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_rest_parameters" name="Using_rest_parameters">残余引数の使用</h3>
+
+<p>この例では、最初の引数が <code>a</code> に、2番目の引数が <code>b</code> に割り当てられますので、これらの名前付き引数はふつう通り使われます。</p>
+
+<p>しかし、3番目の引数、<code>manyMoreArgs</code> は、3番目、4番目、5番目、6番目、・・・<var>n</var>番目 — ユーザーが入れただけの数の引数を持つ配列になります。</p>
+
+<pre class="brush: js notranslate">function myFun(a, b, ...manyMoreArgs) {
+ console.log("a", a)
+ console.log("b", b)
+ console.log("manyMoreArgs", manyMoreArgs)
+}
+
+myFun("one", "two", "three", "four", "five", "six")
+
+// a, one
+// b, two
+// manyMoreArgs, [three, four, five, six]
+</pre>
+
+<p>以下の例では・・・値が 1 つしかなくても、最後の引数は配列に入れられます。</p>
+
+<pre class="brush: js notranslate">// 上記の例と同じ関数定義を使用
+
+myFun("one", "two", "three")
+
+// a, one
+// b, two
+// manyMoreArgs, [three]</pre>
+
+<p>以下の例では、3番目の引数が提供されていませんが、<code>manyMoreArgs</code> は配列のままです (ただし空のものです)。</p>
+
+<pre class="brush: js notranslate">// 上記の例と同じ関数定義を使用
+
+myFun("one", "two")
+
+// a, one
+// b, two
+// manyMoreArgs, []</pre>
+
+<h3 id="Argument_length" name="Argument_length">引数の長さ</h3>
+
+<p><code>theArgs</code> は配列なので、<code>length</code> プロパティを使用して要素数を取得することができます。</p>
+
+<pre class="brush: js notranslate">function fun1(...theArgs) {
+ console.log(theArgs.length)
+}
+
+fun1() // 0
+fun1(5) // 1
+fun1(5, 6, 7) // 3
+</pre>
+
+<h3 id="Ordinary_parameter_and_rest_parameters" name="Ordinary_parameter_and_rest_parameters">通常の引数と残余引数</h3>
+
+<p>次の例では、残余引数を使用して 2 番目の引数から最後の引数までを配列に集めています。それからそれぞれを最初の引数と乗算し、その配列を返します。</p>
+
+<pre class="brush: js notranslate">function multiply(multiplier, ...theArgs) {
+ return theArgs.map(element =&gt; {
+ return multiplier * element
+ })
+}
+
+let arr = multiply(2, 1, 2, 3)
+console.log(arr) // [2, 4, 6]
+</pre>
+
+<h3 id="Use_with_the_arguments_object" name="Use_with_the_arguments_object">arguments との使用</h3>
+
+<p><code>Array</code> のメソッドを残余引数で利用することができますが、<code>arguments</code> オブジェクトでは利用できません。</p>
+
+<pre class="brush: js notranslate">function sortRestArgs(...theArgs) {
+ let sortedArgs = theArgs.sort()
+ return sortedArgs
+}
+
+console.log(sortRestArgs(5, 3, 7, 1)) // 1, 3, 5, 7
+
+function sortArguments() {
+ let sortedArgs = arguments.sort()
+ return sortedArgs // これは実行されない
+}
+
+
+console.log(sortArguments(5, 3, 7, 1))
+// TypeError が発生 (arguments.sort は関数ではない)
+</pre>
+
+<p><code>arguments</code> オブジェクト上で <code>Array</code> メソッドを使用するには、まずオブジェクトを実配列に変換する必要があります。</p>
+
+<pre class="brush: js notranslate">function sortArguments() {
+ let args = Array.from(arguments)
+ let sortedArgs = args.sort()
+ return sortedArgs
+}
+console.log(sortArguments(5, 3, 7, 1)) // 1, 3, 5, 7
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.functions.rest_parameters")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Spread_operator" title="spread operator">スプレッド構文</a> (こちらも ‘<code>...</code>’)</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/arguments" title="arguments">arguments オブジェクト</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array" title="Array">配列</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions" title="Functions and function scope">関数</a></li>
+ <li><a class="external" href="http://wiki.ecmascript.org/doku.php?id=harmony:rest_parameters">ecmascript.org のオリジナル提案</a></li>
+ <li><a class="external" href="http://javascriptweblog.wordpress.com/2011/01/18/javascripts-arguments-object-and-beyond/">JavaScript arguments object and beyond</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">分割代入</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/functions/set/index.html b/files/ja/web/javascript/reference/functions/set/index.html
new file mode 100644
index 0000000000..32b1d9b623
--- /dev/null
+++ b/files/ja/web/javascript/reference/functions/set/index.html
@@ -0,0 +1,146 @@
+---
+title: セッター
+slug: Web/JavaScript/Reference/Functions/set
+tags:
+ - ECMAScript 5
+ - Functions
+ - JavaScript
+ - Language feature
+ - 言語機能
+ - 関数
+translation_of: Web/JavaScript/Reference/Functions/set
+---
+<div>{{jsSidebar("Functions")}}</div>
+
+<p><span class="seoSummary"><strong><code>set</code></strong> 構文は、あるオブジェクトプロパティを関数にバインドして、プロパティに設定しようとしたときに呼び出される関数に結びつけます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/functions-setter.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">{set <var>prop</var>(<var>val</var>) { . . . }}
+{set [<var>expression</var>](<var>val</var>) { . . . }}</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>prop</var></code></dt>
+ <dd>与えられた関数を割り当てるプロパティの名称です。</dd>
+ <dt><code><var>val</var></code></dt>
+ <dd><code><var>prop</var></code> に設定しようとする値を保持する変数のエイリアスです。</dd>
+ <dt><code><var>expression</var></code></dt>
+ <dd>ECMAScript 2015 より、算出されたプロパティ名 (computed property name) の式を使用して関数に結び付けることもできます。</dd>
+</dl>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>JavaScript では、特定のプロパティを変更しようとするたびに関数を実行するため、セッターを利用できます。セッターはたいていゲッターと合わせて、擬似的なプロパティを作成するために用いられます。実際の値を持つプロパティが、同時にセッターを持つことはできません。</p>
+
+<p><code>set</code> 構文を使用する際の注意事項:</p>
+
+<div>
+<ul>
+ <li>識別子は数値でも文字列でも持つことができます。</li>
+ <li>厳密に 1 つの引数を持たなければなりません (詳しくは <a href="http://whereswalden.com/2010/08/22/incompatible-es5-change-literal-getter-and-setter-functions-must-now-have-exactly-zero-or-one-arguments/" rel="external nofollow">Incompatible <abbr title="ECMAScript 5th edition">ES5</abbr> change: literal getter and setter functions must now have exactly zero or one arguments</a> をご覧ください)。</li>
+ <li>あるオブジェクトリテラルが、同じプロパティのための別の <code>set</code> を持ったり、データ項目を持ったりしてはいけません。<br>
+ ( <code>{ set x(v) { }, set x(v) { } }</code> や <code>{ x: ..., set x(v) { } }</code> は不可 )</li>
+</ul>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Defining_a_setter_on_new_objects_in_object_initializers" name="Defining_a_setter_on_new_objects_in_object_initializers">新しいオブジェクトでオブジェクトの初期化時にセッターを定義</h3>
+
+<p>以下の例では、擬似プロパティ <code>current</code> を <code>language</code> オブジェクトに定義します。 <code>current</code> に値が代入されると、 <code>log</code> をその値で更新します。</p>
+
+<pre class="brush: js notranslate">const language = {
+ set current(name) {
+ this.log.push(name);
+ },
+ log: []
+}
+
+language.current = 'EN';
+console.log(language.log); // ['EN']
+
+language.current = 'FA';
+console.log(language.log); // ['EN', 'FA']
+</pre>
+
+<p><code>current</code> は定義されておらず、あらゆるアクセスを試みてもその結果は <code>undefined</code> になることに注意してください。</p>
+
+<h3 id="Removing_a_setter_with_the_delete_operator" name="Removing_a_setter_with_the_delete_operator"><code>delete</code> 演算子によるセッターの削除</h3>
+
+<p>セッターを削除したい場合は、 {{jsxref("Operators/delete", "delete")}} だけで削除できます。</p>
+
+<pre class="brush: js notranslate">delete language.current;
+</pre>
+
+<h3 id="Defining_a_setter_on_existing_objects_using_defineProperty" name="Defining_a_setter_on_existing_objects_using_defineProperty"><code>defineProperty</code> を使用して既存のオブジェクトにセッターを定義する</h3>
+
+<p><em>既存の</em>オブジェクトにセッターを追加するには、 {{jsxref("Object.defineProperty()")}} を使用します。</p>
+
+<pre class="brush: js notranslate">const o = {a: 0};
+
+Object.defineProperty(o, 'b', {
+ set: function(x) { this.a = x / 2; }
+});
+
+o.b = 10;
+// セッターを実行し、 10 / 2 (5) を 'a' プロパティに代入
+
+console.log(o.a)
+// 5</pre>
+
+<h3 id="Using_a_computed_property_name" name="Using_a_computed_property_name">算出されたプロパティ名を使用する</h3>
+
+<pre class="brush: js notranslate">const expr = 'foo';
+
+const obj = {
+ baz: 'bar',
+ set [expr](v) { this.baz = v; }
+};
+
+console.log(obj.baz);
+// "bar"
+
+obj.foo = 'baz';
+// セッターを実行
+
+console.log(obj.baz);
+// "baz"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.functions.set")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/get">ゲッター</a></li>
+ <li>{{jsxref("Operators/delete", "delete")}}</li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Object.defineGetter", "__defineGetter__")}}</li>
+ <li>{{jsxref("Object.defineSetter", "__defineSetter__")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">ゲッターとセッターの定義</a> (JavaScript ガイド)</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/aggregateerror/aggregateerror/index.html b/files/ja/web/javascript/reference/global_objects/aggregateerror/aggregateerror/index.html
new file mode 100644
index 0000000000..f98f2de7c4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/aggregateerror/aggregateerror/index.html
@@ -0,0 +1,69 @@
+---
+title: AggregateError() constructor
+slug: Web/JavaScript/Reference/Global_Objects/AggregateError/AggregateError
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/AggregateError/AggregateError
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>AggregateError()</strong></code> コンストラクタは、単一のエラーにラップする必要があるいくつかのエラーに対してエラーを作成します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate">new AggregateError(errors[, message])</pre>
+
+<h3 id="値">値</h3>
+
+<dl>
+ <dt><code>errors</code></dt>
+ <dd>エラーの反復可能であり、実際には {{JSxRef("Error")}} インスタンスではない場合があります。</dd>
+ <dt><code>message</code>{{Optional_Inline}}</dt>
+ <dd>集計エラーのオプションのヒューマンリーダブルの説明。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<h3 id="AggregateError_の作成"><code>AggregateError</code> の作成</h3>
+
+<pre class="brush: js; notranslate">try {
+ throw new AggregateError([
+ new Error("some error"),
+ ], 'Hello');
+} catch (e) {
+ console.log(e instanceof AggregateError); // true
+ console.log(e.message); // "Hello"
+ console.log(e.name); // "AggregateError"
+ console.log(e.errors); // [ Error: "some error" ]
+}</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Promise.any', '#sec-aggregate-error-constructor', 'AggregateError()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.AggregateError.AggregateError")}}</p>
+</div>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Promise.any")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/aggregateerror/index.html b/files/ja/web/javascript/reference/global_objects/aggregateerror/index.html
new file mode 100644
index 0000000000..d9e0e018e9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/aggregateerror/index.html
@@ -0,0 +1,88 @@
+---
+title: AggregateError
+slug: Web/JavaScript/Reference/Global_Objects/AggregateError
+tags:
+ - AggregateError
+ - Class
+ - Experimental
+ - Interface
+ - JavaScript
+ - クラス
+translation_of: Web/JavaScript/Reference/Global_Objects/AggregateError
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>AggregateError</strong></code> オブジェクトは、複数のエラーを1つのエラーにまとめる必要があるときのエラーを表します。これは一つの操作で複数のエラーを報告する必要があるときに発生します。例えば {{JSxRef("Promise.any()")}} において、渡されたすべてのプロミスが拒否された場合などです。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/AggregateError/AggregateError", "AggregateError()")}}</dt>
+ <dd>新しい <code>AggregateError</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{JSxRef("Error.prototype.message", "AggregateError.prototype.message")}}</dt>
+ <dd>エラーメッセージで、既定値は <code>""</code> です。</dd>
+ <dt>{{JSxRef("Error.prototype.name", "AggregateError.prototype.name")}}</dt>
+ <dd>エラー名で、既定値は <code>AggregateError</code> です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Catching_an_AggregateError" name="Catching_an_AggregateError">AggregateError の捕捉</h3>
+
+<pre class="brush: js; notranslate">Promise.any([
+ Promise.reject(new Error("some error")),
+]).catch(e =&gt; {
+ console.log(e instanceof AggregateError); // true
+ console.log(e.message); // "All Promises rejected"
+ console.log(e.name); // "AggregateError"
+ console.log(e.errors); // [ Error: "some error" ]
+});
+</pre>
+
+<h3 id="Creating_an_AggregateError" name="Creating_an_AggregateError">AggregateError の生成</h3>
+
+<pre class="brush: js; notranslate">try {
+ throw new AggregateError([
+ new Error("some error"),
+ ], 'Hello');
+} catch (e) {
+ console.log(e instanceof AggregateError); // true
+ console.log(e.message); // "Hello"
+ console.log(e.name); // "AggregateError"
+ console.log(e.errors); // [ Error: "some error" ]
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Promise.any', '#sec-aggregate-error-object-structure', 'AggregateError')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.AggregateError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Error")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/@@iterator/index.html b/files/ja/web/javascript/reference/global_objects/array/@@iterator/index.html
new file mode 100644
index 0000000000..df8c0269be
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/@@iterator/index.html
@@ -0,0 +1,126 @@
+---
+title: 'Array.prototype[@@iterator]()'
+slug: Web/JavaScript/Reference/Global_Objects/Array/@@iterator
+tags:
+ - Array
+ - Beginner
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - イテレーター
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@iterator
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>@@iterator</strong></code> メソッドは<a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">反復プロトコル</a>の一部であり、値の列を同期的に反復する方法を定義します。</p>
+
+<p><code><strong>@@iterator</strong></code> プロパティの初期値は {{jsxref("Array.prototype.values()", "values()")}} プロパティの初期値と同じ関数オブジェクトです。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>arr</var>[Symbol.iterator]()</code></pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Array.prototype.values()", "values()")}} <strong>イテレーター</strong> によって与えられる初期値です。既定では、 <code>arr[Symbol.iterator]</code> を使うと {{jsxref("Array.prototype.values()", "values()")}} を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Iteration_using_for...of_loop" name="Iteration_using_for...of_loop">for...of ループを用いた反復</h3>
+
+<h4 id="HTML">HTML</h4>
+
+<pre class="brush: html notranslate">&lt;ul id="letterResult"&gt;
+&lt;/ul&gt;</pre>
+
+<h4 id="JavaScript">JavaScript</h4>
+
+<pre class="brush: js notranslate">var arr = ['a', 'b', 'c'];
+var eArr = arr[Symbol.iterator]();
+var letterResult = document.getElementById('letterResult');
+// your browser must support for..of loop
+// and let-scoped variables in for loops
+// const and var could also be used
+for (let letter of eArr) {
+ letterResult.innerHTML += "&lt;li&gt;" + letter + "&lt;/li&gt;";
+}
+</pre>
+
+<h4 id="Result" name="Result">結果</h4>
+
+<p>{{EmbedLiveSample('Iteration_using_for...of_loop', '', '', '', 'Web/JavaScript/Reference/Global_Objects/Array/@@iterator')}}</p>
+
+<h3 id="Alternative_iteration" name="Alternative_iteration">他の反復方法</h3>
+
+<pre class="brush: js notranslate">var arr = ['a', 'b', 'c', 'd', 'e'];
+var eArr = arr[Symbol.iterator]();
+console.log(eArr.next().value); // a
+console.log(eArr.next().value); // b
+console.log(eArr.next().value); // c
+console.log(eArr.next().value); // d
+console.log(eArr.next().value); // e
+</pre>
+
+<h3 id="Use_Case_for_brace_notation" name="Use_Case_for_brace_notation">括弧表記の使用法</h3>
+
+<p>この構文をドット記法 (<code>Array.prototype.values()</code>) よりも優先して使用する場合は、事前にどのようなオブジェクトになるのかが分からない場合です。イテレータを受け取り、その値を反復処理する関数があるが、そのオブジェクトが [Iterable].prototype.values メソッドを持っているかどうかわからない場合です。これはStringオブジェクトのような組み込みオブジェクトでも、カスタムオブジェクトでもよいでしょう。これは <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/@@iterator">String</a> オブジェクトのような組込みオブジェクトや、独自オブジェクトである可能性があります。</p>
+
+<pre class="brush: js notranslate">function logIterable(it) {
+ var iterator = it[Symbol.iterator]();
+ // your browser must support for..of loop
+ // and let-scoped variables in for loops
+ // const and var could also be used
+ for (let letter of iterator) {
+ console.log(letter);
+ }
+}
+
+// Array
+logIterable(['a', 'b', 'c']);
+// a
+// b
+// c
+
+// string
+logIterable('abc');
+// a
+// b
+// c
+
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.@@iterator")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.keys()")}}</li>
+ <li>{{jsxref("Array.prototype.entries()")}}</li>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Array.prototype.every()")}}</li>
+ <li>{{jsxref("Array.prototype.some()")}}</li>
+ <li>{{jsxref("Array.prototype.values()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/@@species/index.html b/files/ja/web/javascript/reference/global_objects/array/@@species/index.html
new file mode 100644
index 0000000000..24bb647f43
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/@@species/index.html
@@ -0,0 +1,73 @@
+---
+title: 'get Array[@@species]'
+slug: Web/JavaScript/Reference/Global_Objects/Array/@@species
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@species
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Array[@@species]</code></strong> アクセサープロパティは、<code>Array</code> コンストラクターを返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Array[Symbol.species]
+</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Array")}} コンストラクターです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>species</code> アクセサープロパティは、 <code>Array</code> オブジェクトの既定のコンストラクターを返します。サブクラスのコンストラクターはコンストラクターに代入することで、これをオーバーライドすることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Species_in_ordinary_objects" name="Species_in_ordinary_objects">通常のオブジェクトの spicies</h3>
+
+<p><code>species</code> プロパティは、<code>Array</code> オブジェクトの既定のコンストラクター関数である <code>Array</code> コンストラクターを返します。</p>
+
+<pre class="brush: js notranslate">Array[Symbol.species]; // Array() 関数</pre>
+
+<h3 id="Species_in_derived_objects" name="Species_in_derived_objects">派生オブジェクトの spicies</h3>
+
+<p>派生コレクションオブジェクト (たとえば、独自の配列である <code>MyArray</code>) では、<code>MyArray</code> の species は <code>MyArray</code> コンストラクターです。しかし、派生クラスのメソッドで、親である <code>Array</code> オブジェクトを返すためにこれをオーバーライドしたいかもしれません。</p>
+
+<pre class="brush: js notranslate">class MyArrayBuffer extends ArrayBuffer {
+ // MyArray species を親である ArrayBuffer コンストラクタにオーバーライド。
+ static get [Symbol.species]() { return ArrayBuffer; }
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-array-@@species', 'get Array [ @@species ]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.@@species")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+ <li>{{jsxref("Symbol.species")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/@@unscopables/index.html b/files/ja/web/javascript/reference/global_objects/array/@@unscopables/index.html
new file mode 100644
index 0000000000..478ccbfb0e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/@@unscopables/index.html
@@ -0,0 +1,78 @@
+---
+title: 'Array.prototype[@@unscopables]'
+slug: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables
+tags:
+ - Array
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>@@unscopable</strong></code> シンボルプロパティには、 ES2015 以前の ECMAScript 標準には含まれていないプロパティ名があります。それらのプロパティは、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/with">with</a></code> 文のバインディングから除外されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>with</code> バインディングから除外される既定の配列プロパティは次のとおりです。</p>
+
+<ul>
+ <li>{{jsxref("Array.prototype.copyWithin()", "copyWithin()")}}</li>
+ <li>{{jsxref("Array.prototype.entries()", "entries()")}}</li>
+ <li>{{jsxref("Array.prototype.fill()", "fill()")}}</li>
+ <li>{{jsxref("Array.prototype.find()", "find()")}}</li>
+ <li>{{jsxref("Array.prototype.findIndex()", "findIndex()")}}</li>
+ <li>{{jsxref("Array.prototype.includes()", "includes()")}}</li>
+ <li>{{jsxref("Array.prototype.keys()", "keys()")}}</li>
+ <li>{{jsxref("Array.prototype.values()", "values()")}}</li>
+</ul>
+
+<p>自作オブジェクトに <code>unscopables</code> を設定する方法については、 {{jsxref("Symbol.unscopables")}} を見てください。</p>
+
+<p>{{js_property_attributes(0,0,1)}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Use_in_with_environments" name="Use_in_with_environments">with 環境内での使用</h3>
+
+<p>次のコードは、 ES5 以下であれば正常に動作します。しかし、 ECMAScript 2015 以降では {{jsxref("Array.prototype.keys()")}} メソッドが導入されました。つまり、<code>with</code> 環境内では、 "keys" はメソッドであり、変数ではありません。ここが組込み <code>@@unscopables</code> の役立つ場所です。<code>Array.prototype[@@unscopables]</code> シンボルプロパティが使用されると、配列のいくつかのメソッドが <code>with</code> 文のスコープに入ることを防ぎます。</p>
+
+<pre class="brush: js notranslate">var keys = [];
+
+with (Array.prototype) {
+ keys.push('something');
+}
+
+Object.keys(Array.prototype[Symbol.unscopables]);
+// ["copyWithin", "entries", "fill", "find", "findIndex",
+// "includes", "keys", "values"]</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.@@unscopables")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Symbol.unscopables")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/array/index.html b/files/ja/web/javascript/reference/global_objects/array/array/index.html
new file mode 100644
index 0000000000..5aea96686d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/array/index.html
@@ -0,0 +1,88 @@
+---
+title: Array() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Array/Array
+tags:
+ - Array
+ - Constructor
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Array()</code></strong> コンストラクターは {{jsxref("Array")}} オブジェクトを生成するために使用します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">[<var>element0</var>, <var>element1</var>, ..., <var>elementN</var>]
+
+new Array(<var>element0</var>, <var>element1</var>[, ...[, <var>elementN</var>]])
+new Array(<var>arrayLength</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>element<em>N</em></code></dt>
+ <dd>JavaScript の配列は、与えられた要素で初期化されますが、 <code>Array</code> コンストラクターに単一の引数が渡され、その引数が数値であった場合は例外です (下記の arrayLength 引数を参照してください)。なお、この特殊な場合は JavaScript の配列が <code>Array</code> コンストラクターで生成されたときのみであり、ブラケット構文で配列リテラルを作成した場合は当てはまりません。</dd>
+ <dt><code>arrayLength</code></dt>
+ <dd><code>Array</code> コンストラクターに渡された唯一の引数が 0 から 2<sup>32</sup>-1 の間 (両端を含む) の整数であった場合は、新しい JavaScript の配列を返し、その <code>length</code> プロパティがその値になります (<strong>注:</strong> これは <code>arrayLength</code> 個の空のスロットを持つ配列であり、実際に <code>undefined</code> の値が入ったスロットではありません)。この引数がそれ以外の数値であった場合は、 {{jsxref("RangeError")}} 例外が発生します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Array_literal_notation" name="Array_literal_notation">配列リテラル記法</h3>
+
+<p>配列は<a href="/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Array_literals">リテラル</a>記法を使用して生成することができます。</p>
+
+<pre class="brush: js notranslate">let fruits = ['りんご', 'バナナ'];
+
+console.log(fruits.length); // 2
+console.log(fruits[0]); // "りんご"
+</pre>
+
+<h3 id="Array_constructor_with_a_single_parameter" name="Array_constructor_with_a_single_parameter">単一の引数を持つ Array コンストラクター</h3>
+
+<p>配列は単一の数値の引数を持つコンストラクターで生成することができます。配列は <code>length</code> プロパティにその値が設定されており、配列の要素は空スロットになります。</p>
+
+<pre class="brush: js notranslate">let fruits = new Array(2);
+
+console.log(fruits.length); // 2
+console.log(fruits[0]); // undefined
+</pre>
+
+<h3 id="Array_constructor_with_multiple_parameters" name="Array_constructor_with_multiple_parameters">複数の引数を持つ Array コンストラクター</h3>
+
+<p>2つ以上の引数がコンストラクターに渡された場合、与えられた要素を持つ {{jsxref("Array")}} が生成されます。</p>
+
+<pre class="brush: js notranslate">let fruits = new Array('りんご', 'バナナ');
+
+console.log(fruits.length); // 2
+console.log(fruits[0]); // "りんご"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array-constructor', 'Array constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array")}} クラス</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/concat/index.html b/files/ja/web/javascript/reference/global_objects/array/concat/index.html
new file mode 100644
index 0000000000..12b727925a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/concat/index.html
@@ -0,0 +1,141 @@
+---
+title: Array.prototype.concat()
+slug: Web/JavaScript/Reference/Global_Objects/Array/concat
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - array.concat
+ - concat
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/concat
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>concat()</strong></code> メソッドは、2つ以上の配列を結合するために使用します。このメソッドは既存の配列を変更せず、新しい配列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-concat.html","shorter")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>new_array</var> = <var>old_array</var>.concat([<var>value1</var>[, <var>value2</var>[, ...[, <var>valueN</var>]]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>value<em>N</em></code> {{optional_inline}}</dt>
+ <dd>新しい配列に連結する配列や値です。すべての <code>value<em>N</em></code> 引数が省略された場合、 <code>concat</code> は呼び出された既存の配列のシャローコピーを返します。詳しくは下記の解説をお読みください。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい {{jsxref("Array")}} インスタンス。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>concat</code> は、メソッドを呼び出した <code>this</code> オブジェクトの要素に、与えられた引数の要素 (引数が配列である場合) または引数そのもの (引数が配列でない場合) が順に続く、新しい配列オブジェクトを生成します。</p>
+
+<p><code>concat</code> は <code>this</code> や引数として与えられた配列を変更しませんが、その代わりに元の配列から結合させた同じ要素のコピーを含むシャローコピー (1 次元の配列要素までの浅いコピー) を返します。元の配列の要素は以下のようにして新しい配列にコピーされます。</p>
+
+<ul>
+ <li>オブジェクトの参照 (実際のオブジェクトではなく): <code>concat</code> はオブジェクトの参照を新しい配列にコピーします。元の配列も新しい配列も同じオブジェクトを参照します。これはつまり、もし参照されているオブジェクトが修正されれば、その変更は元の配列と新しい配列の両方に現れるわけです。</li>
+ <li>文字列や数値、真偽値 ({{jsxref("Global_Objects/String", "String")}} オブジェクトや {{jsxref("Global_Objects/Number", "Number")}} オブジェクト、{{jsxref("Global_Objects/Boolean", "Boolean")}} オブジェクトではなく): <code>concat</code> は文字列や数値の値を新しい配列にコピーします。</li>
+</ul>
+
+<div class="note">
+<p><strong>注:</strong> 連結した配列/値は元の配列には手を付けません。さらに、新しい配列へどんな操作をしても、元の配列には影響しません。逆もまた同様です(要素がオブジェクト参照ではない場合のみです)。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="2_つの配列を連結させる">2 つの配列を連結させる</h3>
+
+<p>以下のコードは 2 つの配列を連結させます。</p>
+
+<pre class="brush: js notranslate">const letters = ['a', 'b', 'c'];
+const numbers = [1, 2, 3];
+
+letters.concat(numbers);
+// result in ['a', 'b', 'c', 1, 2, 3]
+</pre>
+
+<h3 id="3_つの配列を連結させる">3 つの配列を連結させる</h3>
+
+<p>以下のコードは 3 つの配列を連結させます。</p>
+
+<pre class="brush: js notranslate">const num1 = [1, 2, 3];
+const num2 = [4, 5, 6];
+const num3 = [7, 8, 9];
+
+const numbers = num1.concat(num2, num3);
+
+console.log(numbers);
+// results in [1, 2, 3, 4, 5, 6, 7, 8, 9]
+</pre>
+
+<h3 id="配列に値を連結させる">配列に値を連結させる</h3>
+
+<p>以下のコードは配列に値を連結させます。</p>
+
+<pre class="brush: js notranslate">const letters = ['a', 'b', 'c'];
+
+const alphaNumeric = letters.concat(1, [2, 3]);
+
+console.log(alphaNumeric);
+// results in ['a', 'b', 'c', 1, 2, 3]
+</pre>
+
+<h3 id="ネストした配列を連結する">ネストした配列を連結する</h3>
+
+<p>以下のコードはネストした配列同士を連結させます。また、元の配列からの参照を保持しています。</p>
+
+<pre class="brush: js notranslate">const num1 = [[1]];
+const num2 = [2, [3]];
+
+const numbers = num1.concat(num2);
+
+console.log(numbers);
+// results in [[1], 2, [3]]
+
+// num1 の最初の要素を変更します
+num1[0].push(4);
+
+console.log(numbers);
+// results in [[1, 4], 2, [3]]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.concat', 'Array.prototype.concat')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.concat")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.push", "push")}} / {{jsxref("Array.pop", "pop")}} - 配列末尾への要素の追加 / 配列末尾の要素の削除</li>
+ <li>{{jsxref("Array.unshift", "unshift")}} / {{jsxref("Array.shift", "shift")}} - 配列の先頭に要素を追加 / 配列の先頭の要素を削除</li>
+ <li>{{jsxref("Array.splice", "splice")}} - 配列の指定位置に要素を追加 / 指定位置の要素を削除</li>
+ <li>{{jsxref("String.prototype.concat()")}}</li>
+ <li>{{jsxref("Symbol.isConcatSpreadable")}} – 平坦化を制御</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/copywithin/index.html b/files/ja/web/javascript/reference/global_objects/array/copywithin/index.html
new file mode 100644
index 0000000000..eec6a36bf4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/copywithin/index.html
@@ -0,0 +1,181 @@
+---
+title: Array.prototype.copyWithin()
+slug: Web/JavaScript/Reference/Global_Objects/Array/copyWithin
+tags:
+ - Array
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/copyWithin
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>copyWithin()</strong></code> メソッドは、サイズを変更せずに、配列の一部を同じ配列内の別の場所にシャローコピーして返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-copywithin.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>arr</var>.copyWithin(<var>target[</var>, <var>start</var>[, <var>end</var>]])</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>target</code></dt>
+ <dd>シーケンスのコピー先となる、0 から始まるインデックスです。負の場合、<code>target</code> は最後から数えられます。</dd>
+ <dd><code>target</code> が <code>arr.length</code> 以上の場合、何もコピーされません。 <code>target</code> が <code>start</code> より後に配置されている場合、コピーされたシーケンスは <code>arr.length</code> に合うように切り詰められます。</dd>
+ <dt><code>start</code> {{optional_inline}}</dt>
+ <dd>要素のコピー元の始まりを表す、0 から始まるインデックスです。負の場合、 <code>start</code> は最後から数えられます。</dd>
+ <dd><code>start</code> が省略された場合、<code>copyWithin</code> は最初の要素からコピーします(つまり、初期値は 0 です)。</dd>
+ <dt><code>end</code> {{optional_inline}}</dt>
+ <dd>要素のコピー元の末尾を表す、0 から始まるインデックスです。 <code>copyWithin</code> のコピーは <code>end</code> を含みません。負の場合、 <code>end</code> は最後から数えられます。</dd>
+ <dd><code>end</code> が省略された場合、 <code>copyWithin</code> は最後までコピーします(つまり、初期値は <code>arr.length</code> です)。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>変更された配列です。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>copyWithin</code> メソッドは C 言語や C++ 言語の <code>memmove</code> のような動きをし、{{jsxref("Array")}} のデータをシフトさせる高いパフォーマンスのメソッドです。これは特に {{jsxref("TypedArray/copyWithin", "TypedArray")}} の同名メソッドに当てはまります。シーケンスはコピーされ貼り付けられる処理が一命令で行われます。コピー&ペースト領域が重なっている場合でも、ペーストされたシーケンスはコピーされた値を持ちます。</p>
+
+<p><code>copyWithin</code> 関数は、ジェネリック関数として動作します。<code>this</code> 値が {{jsxref("Array")}} オブジェクトである必要はありません。</p>
+
+<p><code>copyWithin</code> は<em>可変メソッド</em>であり、<code>this</code> オブジェクト自身を変更し、コピーではなく、オブジェクト自身を返します。</p>
+
+
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">if (!Array.prototype.copyWithin) {
+  Object.defineProperty(Array.prototype, 'copyWithin', {
+    value: function(target, start/*, end*/) {
+   // Steps 1-2.
+    if (this == null) {
+   throw new TypeError('this is null or not defined');
+    }
+
+   var O = Object(this);
+
+   // Steps 3-5.
+   var len = O.length &gt;&gt;&gt; 0;
+
+   // Steps 6-8.
+    var relativeTarget = target &gt;&gt; 0;
+
+   var to = relativeTarget &lt; 0 ?
+    Math.max(len + relativeTarget, 0) :
+   Math.min(relativeTarget, len);
+
+   // Steps 9-11.
+    var relativeStart = start &gt;&gt; 0;
+
+   var from = relativeStart &lt; 0 ?
+    Math.max(len + relativeStart, 0) :
+   Math.min(relativeStart, len);
+
+   // Steps 12-14.
+    var end = arguments[2];
+    var relativeEnd = end === undefined ? len : end &gt;&gt; 0;
+
+   var final = relativeEnd &lt; 0 ?
+    Math.max(len + relativeEnd, 0) :
+   Math.min(relativeEnd, len);
+
+   // Step 15.
+    var count = Math.min(final - from, len - to);
+
+   // Steps 16-17.
+    var direction = 1;
+
+   if (from &lt; to &amp;&amp; to &lt; (from + count)) {
+    direction = -1;
+    from += count - 1;
+    to += count - 1;
+    }
+
+   // Step 18.
+    while (count &gt; 0) {
+   if (from in O) {
+   O[to] = O[from];
+   } else {
+    delete O[to];
+   }
+
+   from += direction;
+    to += direction;
+   count--;
+   }
+
+    // Step 19.
+   return O;
+   },
+    configurable: true,
+   writable: true
+  });
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="copyWithin_の使用">copyWithin の使用</h3>
+
+<pre class="brush: js notranslate">[1, 2, 3, 4, 5].copyWithin(-2);
+// [1, 2, 3, 1, 2]
+
+[1, 2, 3, 4, 5].copyWithin(0, 3);
+// [4, 5, 3, 4, 5]
+
+[1, 2, 3, 4, 5].copyWithin(0, 3, 4);
+// [4, 2, 3, 4, 5]
+
+[1, 2, 3, 4, 5].copyWithin(0, -2, -1);
+// [4, 2, 3, 4, 5]
+
+[].copyWithin.call({length: 5, 3: 1}, 0, 3);
+// {0: 1, 3: 1, length: 5}
+
+// ES2015 Typed Arrays are subclasses of Array
+var i32a = new Int32Array([1, 2, 3, 4, 5]);
+
+i32a.copyWithin(0, 2);
+// Int32Array [3, 4, 5, 4, 5]
+
+// On platforms that are not yet ES2015 compliant:
+[].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4);
+// Int32Array [4, 2, 3, 4, 5]
+</pre>
+
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.copywithin', 'Array.prototype.copyWithin')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Array.copyWithin")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/entries/index.html b/files/ja/web/javascript/reference/global_objects/array/entries/index.html
new file mode 100644
index 0000000000..dd7c6eae3e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/entries/index.html
@@ -0,0 +1,89 @@
+---
+title: Array.prototype.entries()
+slug: Web/JavaScript/Reference/Global_Objects/Array/entries
+tags:
+ - Array
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/entries
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>entries()</code></strong> メソッドは、配列内の各要素に対するキー/値のペアを含む新しい <strong>Array イテレーター</strong>オブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-entries.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>array</var>.entries()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい {{jsxref("Array")}} イテレーターオブジェクトを返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Iterating_with_index_and_element" name="Iterating_with_index_and_element">インデックスと要素の反復処理</h3>
+
+<pre class="brush:js notranslate">const a = ['a', 'b', 'c'];
+
+for (const [index, element] of a.entries())
+ console.log(index, element);
+
+// 0 'a'
+// 1 'b'
+// 2 'c'
+</pre>
+
+<h3 id="Using_a_for…of_loop" name="Using_a_for…of_loop"><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for…of</a> loop で使う</h3>
+
+<pre class="brush:js notranslate">var a = ['a', 'b', 'c'];
+var iterator = a.entries();
+
+for (let e of iterator) {
+ console.log(e);
+}
+// [0, 'a']
+// [1, 'b']
+// [2, 'c']
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.entries', 'Array.prototype.entries')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.entries")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.keys()")}}</li>
+ <li>{{jsxref("Array.prototype.values()")}}</li>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Array.prototype.every()")}}</li>
+ <li>{{jsxref("Array.prototype.some()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復処理プロトコル</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/every/index.html b/files/ja/web/javascript/reference/global_objects/array/every/index.html
new file mode 100644
index 0000000000..2e797063fb
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/every/index.html
@@ -0,0 +1,243 @@
+---
+title: Array.prototype.every()
+slug: Web/JavaScript/Reference/Global_Objects/Array/every
+tags:
+ - Array
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Prototype
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/every
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>every()</code></strong> メソッドは、列内のすべての要素が指定された関数で実装されたテストに合格するかどうかをテストします。これは論理値を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-every.html","shorter")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.every(<var>callback</var>(<var>element</var>[, <var>index</var>[, <var>array</var>]])[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>各要素に対してテストを実行する関数です。次の 3 つの引数を取ります。
+ <dl>
+ <dt><code><var>element</var></code></dt>
+ <dd>現在処理されている要素です。</dd>
+ <dt><code><var>index</var></code> {{Optional_inline}}</dt>
+ <dd>現在処理されている要素の添字です。</dd>
+ <dt><code><var>array</var></code> {{Optional_inline}}</dt>
+ <dd><code>every</code> が実行されている配列です。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code> {{Optional_inline}}</dt>
+ <dd><code><var>callback</var></code> を実行するときに <code>this</code> として使用すされる値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code><var>callback</var></code> 関数が配列のすべての要素について{{Glossary("truthy", "真値")}}を返した場合は <strong><code>true</code></strong>。それ以外は <strong><code>false</code></strong>。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>every</code> は、与えられた <code><var>callback</var></code> 関数を、配列に含まれる各要素に対して一度ずつ、<code><var>callback</var></code> が{{Glossary("falsy", "偽値")}}を返す要素が見つかるまで呼び出します。そのような要素が見つかると、<code>every</code> メソッドはただちに <code>false</code> を返します。<code><var>callback</var></code> がすべての要素に対して{{Glossary("truthy", "真値")}}を返した場合、<code>every</code> は <code>true</code> を返します。</p>
+
+<div class="blockIndicator note">
+<p><strong>注意</strong>: このメソッドを空の配列に対して呼び出すと、無条件に <code>true</code> を返します。</p>
+</div>
+
+<p><code><var>callback</var></code> は値が代入されている配列の要素に対してのみ呼び出されます。つまり、すでに削除された要素や、まだ値が代入されていない要素に対しては呼び出されません。</p>
+
+<p><code><var>callback</var></code> は、要素の値、要素の添字、走査されている Array オブジェクトという 3 つの引数をともなって呼び出されます。</p>
+
+<p><code><var>thisArg</var></code> 引数が <code>every</code> に与えられると、それがコールバックの <code>this</code> として使用されます。それ以外の場合は <code>undefined</code> が <code>this</code> の値として使われます。<code><var>callback</var></code> が最終的に監視できる <code>this</code> の値は、<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数から見た <code>this</code> の決定に関する一般的なルール</a>によって決定されます。</p>
+
+<p><code>every</code> は呼び出された配列を変化させません。</p>
+
+<p><code>every</code> によって処理される要素の範囲は、<code><var>callback</var></code> が最初に呼び出される前に設定されます。<code><var>callback</var></code> は、<code>every</code> の呼び出しが開始された後に追加された要素に対しては、実行されません。既存の配列要素が変更されたり、削除された場合、<code><var>callback</var></code> に渡される値は <code>every</code> がそれらを訪れた時点での値になり、<code>every</code> が削除された要素を訪問することはありません。</p>
+
+<p><code>every</code> は数学における「∀ (すべての / for all)」記号と同様のふるまいをします。具体的に言うと、空の配列に対しては <code>true</code> を返します。(<a href="https://en.wikipedia.org/wiki/Empty_set#Properties">空集合</a>のすべての要素が与えられた任意の条件を満たすことは<a href="https://en.wikipedia.org/wiki/Vacuous_truth">空虚に真</a>です。)</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>every</code> は ECMA-262 標準に第5版で追加されたもので、この標準のそれ以外の実装には存在しないかもしれません。これを回避するには、スクリプトの最初に以下のコードを挿入することで、ネイティブで対応していない実装でも <code>every</code> を使用できるようにすることができます。</p>
+
+<p>このアルゴリズムは、<code>Object</code> と <code>TypeError</code> が元の値を持ち、<code><var>callbackfn</var>.call</code> が {{jsxref("Function.prototype.call")}} の元の値に評価されると仮定するもので、ECMA-262 第5版で指定されているものと全く同じです。</p>
+
+<pre class="brush: js notranslate">if (!Array.prototype.every) {
+ Array.prototype.every = function(callbackfn, thisArg) {
+ 'use strict';
+ var T, k;
+
+ if (this == null) {
+ throw new TypeError('this is null or not defined');
+ }
+
+ // 1. Let O be the result of calling ToObject passing the this
+ // value as the argument.
+ var O = Object(this);
+
+ // 2. Let lenValue be the result of calling the Get internal method
+ // of O with the argument "length".
+ // 3. Let len be ToUint32(lenValue).
+ var len = O.length &gt;&gt;&gt; 0;
+
+ // 4. If IsCallable(callbackfn) is false, throw a TypeError exception.
+ if (typeof callbackfn !== 'function' &amp;&amp; Object.prototype.toString.call(callbackfn) !== '[object Function]') {
+ throw new TypeError();
+ }
+
+ // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
+ if (arguments.length &gt; 1) {
+ T = thisArg;
+ }
+
+ // 6. Let k be 0.
+ k = 0;
+
+ // 7. Repeat, while k &lt; len
+ while (k &lt; len) {
+
+ var kValue;
+
+ // a. Let Pk be ToString(k).
+ // This is implicit for LHS operands of the in operator
+ // b. Let kPresent be the result of calling the HasProperty internal
+ // method of O with argument Pk.
+ // This step can be combined with c
+ // c. If kPresent is true, then
+ if (k in O) {
+ var testResult;
+ // i. Let kValue be the result of calling the Get internal method
+ // of O with argument Pk.
+ kValue = O[k];
+
+ // ii. Let testResult be the result of calling the Call internal method
+ // of callbackfn with T as the this value if T is not undefined
+ // else is the result of calling callbackfn
+ // and argument list containing kValue, k, and O.
+ if(T) testResult = callbackfn.call(T, kValue, k, O);
+ else testResult = callbackfn(kValue,k,O)
+
+ // iii. If ToBoolean(testResult) is false, return false.
+ if (!testResult) {
+ return false;
+ }
+ }
+ k++;
+ }
+ return true;
+ };
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Testing_size_of_all_array_elements" name="Testing_size_of_all_array_elements">すべての配列要素の大きさをテストする</h3>
+
+<p>次の例は、配列内のすべての要素が 10 よりも大きいかどうかテストします。</p>
+
+<pre class="brush: js notranslate">function isBigEnough(element, index, array) {
+ return element &gt;= 10;
+}
+[12, 5, 8, 130, 44].every(isBigEnough); // false
+[12, 54, 18, 130, 44].every(isBigEnough); // true
+</pre>
+
+<h3 id="Using_arrow_functions" name="Using_arrow_functions">アロー関数の使用</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a>はより短い構文で同じテストを提供します。</p>
+
+<pre class="brush: js notranslate">[12, 5, 8, 130, 44].every(x =&gt; x &gt;= 10); // false
+[12, 54, 18, 130, 44].every(x =&gt; x &gt;= 10); // true</pre>
+
+<h3 id="初期配列への影響_変更、追加、削除">初期配列への影響 (変更、追加、削除)</h3>
+
+<p>次の例は、配列が変更されたときに <code>every</code> メソッドの動作をテストするものです。</p>
+
+<pre class="brush: js notranslate">// ---------------
+// Modifying items
+// ---------------
+let arr = [1, 2, 3, 4];
+arr.every( (elem, index, arr) =&gt; {
+ arr[index+1] -= 1
+ console.log(`[${arr}][${index}] -&gt; ${elem}`)
+ return elem &lt; 2
+})
+
+// Loop runs for 3 iterations, but would
+// have run 2 iterations without any modification
+//
+// 1st iteration: [1,1,3,4][0] -&gt; 1
+// 2nd iteration: [1,1,2,4][1] -&gt; 1
+// 3rd iteration: [1,1,2,3][2] -&gt; 2
+
+// ---------------
+// Appending items
+// ---------------
+arr = [1, 2, 3];
+arr.every( (elem, index, arr) =&gt; {
+ arr.push('new')
+ console.log(`[${arr}][${index}] -&gt; ${elem}`)
+ return elem &lt; 4
+})
+
+// Loop runs for 3 iterations, even after appending new items
+//
+// 1st iteration: [1, 2, 3, new][0] -&gt; 1
+// 2nd iteration: [1, 2, 3, new, new][1] -&gt; 2
+// 3rd iteration: [1, 2, 3, new, new, new][2] -&gt; 3
+
+// ---------------
+// Deleting items
+// ---------------
+arr = [1, 2, 3, 4];
+arr.every( (elem, index, arr) =&gt; {
+ arr.pop()
+ console.log(`[${arr}][${index}] -&gt; ${elem}`)
+ return elem &lt; 4
+})
+
+// Loop runs for 2 iterations only, as the remaining
+// items are `pop()`ed off
+//
+// 1st iteration: [1,2,3][0] -&gt; 1
+// 2nd iteration: [1,2][1] -&gt; 2</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.every', 'Array.prototype.every')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.every")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Array.prototype.some()")}}</li>
+ <li>{{jsxref("Array.prototype.find()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.every()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/fill/index.html b/files/ja/web/javascript/reference/global_objects/array/fill/index.html
new file mode 100644
index 0000000000..7b995dd9b7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/fill/index.html
@@ -0,0 +1,147 @@
+---
+title: Array.prototype.fill()
+slug: Web/JavaScript/Reference/Global_Objects/Array/fill
+tags:
+ - Array
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/fill
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>fill()</strong></code> メソッドは、開始インデックス(デフォルトは <code>0</code>)から終了インデックス(デフォルトは <code>array.length</code>)までのすべての要素を、静的な値に変更した配列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-fill.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>arr</var>.fill(<var>value</var>[, <var>start<var>[, <var>end</var>]])</var></var></code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>value</code></dt>
+ <dd>配列に設定する値です。</dd>
+ <dt><code>start</code>&nbp;{{optional_inline}}</dt>
+ <dd>開始する位置です。既定値は 0 です。</dd>
+ <dt><code>end</code> {{optional_inline}}</dt>
+ <dd>終了する位置です。既定値は <code>this.length</code> です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>変更された配列です。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<ul>
+ <li><code>start</code> が負の場合 <code>array.length + start</code> として扱われます。</li>
+ <li><code>end</code> が負の場合 <code>array.length + end</code> として扱われます。</li>
+ <li><code>fill</code> メソッドはジェネリック関数であり、<code>this</code> が配列オブジェクトである必要はありません。</li>
+ <li><code>fill</code> メソッドは可変メソッドで、配列のコピーではなく、変更された配列そのものを返します。</li>
+ <li>最初のパラメータがオブジェクトの場合、配列の各スロットはそのオブジェクトを参照します。</li>
+</ul>
+
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">if (!Array.prototype.fill) {
+ Object.defineProperty(Array.prototype, 'fill', {
+ value: function(value) {
+
+ // Steps 1-2.
+ if (this == null) {
+ throw new TypeError('this is null or not defined');
+ }
+
+ var O = Object(this);
+
+ // Steps 3-5.
+ var len = O.length &gt;&gt;&gt; 0;
+
+ // Steps 6-7.
+ var start = arguments[1];
+ var relativeStart = start &gt;&gt; 0;
+
+ // Step 8.
+ var k = relativeStart &lt; 0 ?
+ Math.max(len + relativeStart, 0) :
+ Math.min(relativeStart, len);
+
+ // Steps 9-10.
+ var end = arguments[2];
+ var relativeEnd = end === undefined ?
+ len : end &gt;&gt; 0;
+
+ // Step 11.
+ var final = relativeEnd &lt; 0 ?
+ Math.max(len + relativeEnd, 0) :
+ Math.min(relativeEnd, len);
+
+ // Step 12.
+ while (k &lt; final) {
+ O[k] = value;
+ k++;
+ }
+
+ // Step 13.
+ return O;
+ }
+ });
+}
+</pre>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a></code> が利用できないとても古い JavaScript エンジンをサポートする必要がある場合、<code>Array.prototype</code> のメソッドを polyfill するのは避けたほうがよいでしょう。それらを列挙不可にすることができないからです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_fill" name="Using_fill">fill を使用する</h3>
+
+<pre class="brush: js notranslate">[1, 2, 3].fill(4) // [4, 4, 4]
+[1, 2, 3].fill(4, 1) // [1, 4, 4]
+[1, 2, 3].fill(4, 1, 2) // [1, 4, 3]
+[1, 2, 3].fill(4, 1, 1) // [1, 2, 3]
+[1, 2, 3].fill(4, 3, 3) // [1, 2, 3]
+[1, 2, 3].fill(4, -3, -2) // [4, 2, 3]
+[1, 2, 3].fill(4, NaN, NaN) // [1, 2, 3]
+[1, 2, 3].fill(4, 3, 5) // [1, 2, 3]
+Array(3).fill(4) // [4, 4, 4]
+[].fill.call({ length: 3 }, 4) // {0: 4, 1: 4, 2: 4, length: 3}
+
+// A single object, referenced by each slot of the array:
+let arr = Array(3).fill({}) // [{}, {}, {}]
+arr[0].hi = "hi" // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.fill', 'Array.prototype.fill')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Array.fill")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+ <li>{{jsxref("TypedArray.prototype.fill()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/filter/index.html b/files/ja/web/javascript/reference/global_objects/array/filter/index.html
new file mode 100644
index 0000000000..0c88f3f260
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/filter/index.html
@@ -0,0 +1,287 @@
+---
+title: Array.prototype.filter()
+slug: Web/JavaScript/Reference/Global_Objects/Array/filter
+tags:
+ - Array
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - polyfill
+ - メソッド
+ - 配列
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/filter
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>filter()</code></strong> メソッドは、与えられた関数によって実装されたテストに合格したすべての配列からなる<strong>新しい配列を生成</strong>します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-filter.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: js notranslate">let <var>newArray</var> = <var>arr</var>.filter(<var>callback</var>(<var>element</var>[, <var>index</var>, [<var>array</var>]])[, <var>thisArg</var>])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>
+ <p>配列の各要素に対して実行するテスト関数です。この関数が <code>true</code> を返した要素は残され、<code>false</code> を返した要素は取り除かれます。</p>
+
+ <p>この関数は3つの引数を受け付けます。</p>
+
+ <dl>
+ <dt><code><var>element</var></code></dt>
+ <dd>配列内で処理中の現在の要素です。</dd>
+ <dt><code><var>index</var></code>{{optional_inline}}</dt>
+ <dd>配列内で処理中の現在の要素の位置です。</dd>
+ <dt><code><var>array</var></code>{{optional_inline}}</dt>
+ <dd><code>filter</code> メソッドが実行されている配列です。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code>{{optional_inline}}</dt>
+ <dd><code><var>callback</var></code> を実行するときに <code>this</code> として使用する値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>テストに合格した要素からなる新しい配列です。テストに合格した要素がなかった場合は、空の配列が返されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>filter()</code> は、与えられた <code><var>callback</var></code> 関数を配列の各要素に対して一度ずつ呼び出し、<code><var>callback</var></code> が <a href="/ja/docs/Glossary/Truthy"><code>true</code> と評価される値</a>を返したすべての要素からなる新しい配列を生成します。<code><var>callback</var></code> は値が代入されている配列の添字に対してのみ呼び出されます。つまり、すでに削除された添字や、まだ値が代入されていない添字に対しては呼び出されません。<code><var>callback</var></code> によるテストに合格しなかった配列要素は単純にスキップされ、新しい配列には含まれないだけです。</p>
+
+<p><code><var>callback</var></code> は 3 つの引数と共に呼び出されます。</p>
+
+<ol>
+ <li>要素の値</li>
+ <li>要素の添字</li>
+ <li>走査されている配列オブジェクト</li>
+</ol>
+
+<p><code>filter</code> に引数 <code><var>thisArg</var></code> が与えられた場合、そのオブジェクトは <code><var>callback</var></code> 関数内の <code>this</code> 値として使われます。そうでない場合、 <code>undefined</code> が <code>this</code> 値として使われます。<code><var>callback</var></code> 関数内の最終的な <code>this</code> 値は<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数内の <code>this</code> を決定する一般的ルール</a>に従って決められます。</p>
+
+<p><code>filter()</code> は呼び出された配列を変化させません。</p>
+
+<p><code>filter()</code> によって処理される配列要素の範囲は、<code><var>callback</var></code> が最初に呼び出される前に設定されます。<code>filter()</code> の呼び出しが開始された後に (<code><var>callback</var></code> から) 追加された配列要素に対しては、<code><var>callback</var></code> は実行されません。既存の配列要素が削除された場合は、同様にそれらの要素は処理されません。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>filter()</code> は ECMA-262 標準の第5版で追加されました。したがって、この標準のすべての実装に存在するとは限りません。</p>
+
+<p>回避策として、スクリプトの最初に以下のコードを挿入して、ネイティブに対応していない ECMA-262 の実装で filter() を使用できるようにすることができます。このアルゴリズムは ECMA-262 第5版で指定されているものと完全に等価で、 <code>fn.call</code> が {{jsxref("Function.prototype.bind()")}} の元の値を評価し、 {{jsxref("Array.prototype.push()")}} が元の値を持つことを仮定しています。</p>
+
+<pre class="brush: js notranslate">if (!Array.prototype.filter){
+ Array.prototype.filter = function(func, thisArg) {
+ 'use strict';
+ if ( ! ((typeof func === 'Function' || typeof func === 'function') &amp;&amp; this) )
+ throw new TypeError();
+
+ var len = this.length &gt;&gt;&gt; 0,
+ res = new Array(len), // preallocate array
+ t = this, c = 0, i = -1;
+
+ var kValue;
+ if (thisArg === undefined){
+ while (++i !== len){
+ // checks to see if the key was set
+ if (i in this){
+ kValue = t[i]; // in case t is changed in callback
+ if (func(t[i], i, t)){
+ res[c++] = kValue;
+ }
+ }
+ }
+ }
+ else{
+ while (++i !== len){
+ // checks to see if the key was set
+ if (i in this){
+ kValue = t[i];
+ if (func.call(thisArg, t[i], i, t)){
+ res[c++] = kValue;
+ }
+ }
+ }
+ }
+
+ res.length = c; // shrink down array to proper size
+ return res;
+ };
+}</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Filtering_out_all_small_values" name="Filtering_out_all_small_values">小さい値をすべて取り除く</h3>
+
+<p>次の例では、<code>filter()</code> を使って <code>10</code> 未満の値を持つ要素をすべて取り除いた配列を生成します。</p>
+
+<pre class="brush: js notranslate">function isBigEnough(value) {
+ return value &gt;= 10
+}
+
+let filtered = [12, 5, 8, 130, 44].filter(isBigEnough)
+// filtered は [12, 130, 44]
+</pre>
+
+<h3 id="Find_all_prime_numbers_in_an_array" name="Find_all_prime_numbers_in_an_array">配列内の素数をすべて検索する</h3>
+
+<p>以下の例は配列内のすべての素数を返します。</p>
+
+<pre class="notranslate"><code>const array = [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
+
+function isPrime(num) {
+ for (let i = 2; num &gt; i; i++) {
+ if (num % i == 0) {
+ return false;
+ }
+ }
+ return num &gt; 1;
+}
+
+console.log(array.filter(isPrime)); // [2, 3, 5, 7, 11, 13]</code></pre>
+
+<h3 id="Filtering_invalid_entries_from_JSON" name="Filtering_invalid_entries_from_JSON">JSON の不正な内容を取り除く</h3>
+
+<p>次の例では、<code>filter()</code> を使って <code>id</code> の数値が 0 以外の要素だけに絞った JSON を生成します。</p>
+
+<pre class="brush: js notranslate">let arr = [
+ { id: 15 },
+ { id: -1 },
+ { id: 0 },
+ { id: 3 },
+ { id: 12.2 },
+ { },
+ { id: null },
+ { id: NaN },
+ { id: 'undefined' }
+]
+
+let invalidEntries = 0
+
+function filterByID(item) {
+ if (Number.isFinite(item.id) &amp;&amp; item.id !== 0) {
+ return true
+ }
+ invalidEntries++
+ return false;
+}
+
+let arrByID = arr.filter(filterByID)
+
+console.log('Filtered Array\n', arrByID)
+// Filtered Array
+// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]
+
+console.log('Number of Invalid Entries = ', invalidEntries)
+// Number of Invalid Entries = 5
+</pre>
+
+<h3 id="Searching_in_array" name="Searching_in_array">配列内の検索</h3>
+
+<p>次の例では <code>filter()</code> を使って検索条件で配列の絞り込みをしています。</p>
+
+<pre class="brush: js notranslate">let fruits = ['apple', 'banana', 'grapes', 'mango', 'orange']
+
+/**
+ * Filter array items based on search criteria (query)
+ */
+function filterItems(arr, query) {
+ return arr.filter(function(el) {
+ return el.toLowerCase().indexOf(query.toLowerCase()) !== -1
+ })
+}
+
+console.log(filterItems(fruits, 'ap')) // ['apple', 'grapes']
+console.log(filterItems(fruits, 'an')) // ['banana', 'mango', 'orange']</pre>
+
+<h4 id="ES2015_Implementation" name="ES2015_Implementation">ES2015 版の実装</h4>
+
+<pre class="brush: js notranslate">const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange']
+
+/**
+ * Filter array items based on search criteria (query)
+ */
+const filterItems = (arr, query) =&gt; {
+ return arr.filter(el =&gt; el.toLowerCase().indexOf(query.toLowerCase()) !== -1)
+}
+
+console.log(filterItems(fruits, 'ap')) // ['apple', 'grapes']
+console.log(filterItems(fruits, 'an')) // ['banana', 'mango', 'orange']
+
+</pre>
+
+<h3 id="初期の配列への影響_変更、追加、削除">初期の配列への影響 (変更、追加、削除)</h3>
+
+<p>以下の例は、配列が変更された時の <code>filter</code> の動作をテストするものです。</p>
+
+<pre class="brush: js notranslate">// Modifying each words
+let words = ['spray', 'limit', 'exuberant', 'destruction','elite', 'present']
+
+const modifiedWords = words.filter( (word, index, arr) =&gt; {
+ arr[index+1] +=' extra'
+ return word.length &lt; 6
+})
+
+console.log(modifiedWords)
+// Notice there are three words below length 6, but since they've been modified one is returned
+// ["spray"]
+
+// Appending new words
+words = ['spray', 'limit', 'exuberant', 'destruction','elite', 'present']
+const appendedWords = words.filter( (word, index, arr) =&gt; {
+ arr.push('new')
+ return word.length &lt; 6
+})
+
+console.log(appendedWords)
+// Only three fits the condition even though the `words` itself now has a lot more words with character length less than 6
+// ["spray" ,"limit" ,"elite"]
+
+// Deleting words
+words = ['spray', 'limit', 'exuberant', 'destruction', 'elite', 'present']
+const deleteWords = words.filter( (word, index, arr) =&gt; {
+ arr.pop()
+ return word.length &lt; 6
+})
+
+console.log(deleteWords)
+// Notice 'elite' is not even obtained as its been popped off `words` before filter can even get there
+// ["spray" ,"limit"]</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.filter', 'Array.prototype.filter')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.filter")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Array.prototype.every()")}}</li>
+ <li>{{jsxref("Array.prototype.some()")}}</li>
+ <li>{{jsxref("Array.prototype.reduce()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/find/index.html b/files/ja/web/javascript/reference/global_objects/array/find/index.html
new file mode 100644
index 0000000000..53241787a3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/find/index.html
@@ -0,0 +1,236 @@
+---
+title: Array.prototype.find()
+slug: Web/JavaScript/Reference/Global_Objects/Array/find
+tags:
+ - Array
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/find
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><code><strong>find()</strong></code> メソッドは、提供されたテスト関数を満たす配列内の <strong>最初の要素</strong> の <strong>値</strong> を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-find.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<ul>
+ <li>配列内で見つかった要素の<strong>添字</strong>が必要な場合は、{{jsxref("Array.findIndex", "findIndex()")}} を使用してください。</li>
+ <li><strong>値の添字</strong>を検索する必要がある場合は、{{jsxref("Array.prototype.indexOf()")}} を使用してください。({{jsxref("Array.findIndex", "findIndex()")}} と似ていますが、それぞれの要素の等価性はテスト関数ではなく値でチェックします。)</li>
+ <li>配列内に値が<strong>存在する</strong>かどうかを調べる必要がある場合は、{{jsxref("Array.prototype.includes()")}} を使用してください。</li>
+ <li>指定したテスト関数を満たす要素があるかどうかを調べる必要がある場合は、{{jsxref("Array.prototype.some()")}} を使用してください。</li>
+</ul>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.find(<var>callback(element[, index[, array]])</var>[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>配列内の各要素に対して実行する関数で、次の 3 つの引数を取ります。
+ <dl>
+ <dt><code><var>element</var></code></dt>
+ <dd>配列内で現在処理されている要素です。</dd>
+ <dt><code><var>index</var></code> {{optional_inline}}</dt>
+ <dd>配列内で現在処理されている要素の添字 (位置) です。</dd>
+ <dt><code><var>array</var></code> {{optional_inline}}</dt>
+ <dd><code>find</code> を呼び出した元の配列です。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code> {{optional_inline}}</dt>
+ <dd><code><var>callback</var></code> 内で {{jsxref("Operators/this", "this")}} として使われるオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列の中で、提供されたテスト関数を満足する<strong>最初の要素</strong>の<strong>値</strong>です。見つからなかった場合は {{jsxref("undefined")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>find</code> メソッドは、配列のそれぞれの添字に対して一度ずつ、<code><var>callback</var></code> 関数を実行し、<code><var>callback</var></code> 関数が {{glossary("truthy")}} な値を返すまで繰り返します。その場合、<code>find</code> は直ちにその要素の値を返します。そうでなければ、<code>find</code> は {{jsxref("undefined")}} を返します。</p>
+
+<p><code><var>callback</var></code> は、値が割り当てられているものに限らず、配列中の<em>すべて</em>の添字に対して呼び出されます。すなわち、疎配列では値が割り当てられているもののみを呼び出すメソッドに比べて効率的ではないことを意味します。</p>
+
+<p><code><var>thisArg</var></code> 引数が <code>find</code> に与えられた場合、<code><var>callback</var></code> の呼び出しのたびに、その内部で <code>this</code> 値として使用されます。この引数を省略した場合は {{jsxref("undefined")}} が使用されます。</p>
+
+<p><code>find</code> は、呼び出した配列を変更 (mutate) しませんが、<code><var>callback</var></code> で提供された関数は変更する可能性があります。その場合、<code>find</code> によって処理される各要素は、最初に <code><var>callback</var></code> が呼び出される<em>前に</em>設定されます。したがって、</p>
+
+<ul>
+ <li><code><var>callback</var></code> は <code>find</code> の呼び出しが始まった後に追加された要素に対しては実行されません。</li>
+ <li>配列の、既存のまだ呼び出していない要素が <code><var>callback</var></code> によって変更された場合、<code><var>callback</var></code> に渡される値は <code>find</code> がその要素の添字を処理した時点での値になります。</li>
+ <li>{{jsxref("delete", "削除")}}された要素も処理されます。</li>
+</ul>
+
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>このメソッドは、ECMAScript 2015 仕様書で追加されたものであり、すべての JavaScript 実装環境で使用できるとは限りません。しかし、<code>Array.prototype.find</code> のポリフィルを以下のスニペットで使用できます。</p>
+
+<pre class="brush: js notranslate">// https://tc39.github.io/ecma262/#sec-array.prototype.find
+if (!Array.prototype.find) {
+ Object.defineProperty(Array.prototype, 'find', {
+ value: function(predicate) {
+ // 1. Let O be ? ToObject(this value).
+ if (this == null) {
+ throw TypeError('"this" is null or not defined');
+ }
+
+ var o = Object(this);
+
+ // 2. Let len be ? ToLength(? Get(O, "length")).
+ var len = o.length &gt;&gt;&gt; 0;
+
+ // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+ if (typeof predicate !== 'function') {
+ throw TypeError('predicate must be a function');
+ }
+
+ // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+ var thisArg = arguments[1];
+
+ // 5. Let k be 0.
+ var k = 0;
+
+ // 6. Repeat, while k &lt; len
+ while (k &lt; len) {
+ // a. Let Pk be ! ToString(k).
+ // b. Let kValue be ? Get(O, Pk).
+ // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+ // d. If testResult is true, return kValue.
+ var kValue = o[k];
+ if (predicate.call(thisArg, kValue, k, o)) {
+ return kValue;
+ }
+ // e. Increase k by 1.
+ k++;
+ }
+
+ // 7. Return undefined.
+ return undefined;
+ },
+ configurable: true,
+ writable: true
+ });
+}
+</pre>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a></code> に対応していない、本当に古い JavaScript エンジンに対応する必要がある場合は、列挙不可に設定することができないため、<code>Array.prototype</code> のポリフィルをまったく使用しないのが最善です。</p>
+
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Find_an_object_in_an_array_by_one_of_its_properties" name="Find_an_object_in_an_array_by_one_of_its_properties">配列内のオブジェクトをプロパティの一つで検索</h3>
+
+<pre class="brush: js notranslate">const inventory = [
+ {name: 'apples', quantity: 2},
+ {name: 'bananas', quantity: 0},
+ {name: 'cherries', quantity: 5}
+];
+
+function isCherries(fruit) {
+ return fruit.name === 'cherries';
+}
+
+console.log(inventory.find(isCherries));
+// { name: 'cherries', quantity: 5 }</pre>
+
+<h4 id="Using_arrow_function_and_destructuring" name="Using_arrow_function_and_destructuring">アロー関数と分割の使用</h4>
+
+<pre class="brush: js notranslate">const inventory = [
+ {name: 'apples', quantity: 2},
+ {name: 'bananas', quantity: 0},
+ {name: 'cherries', quantity: 5}
+];
+
+const result = inventory.find( ({ name }) =&gt; name === 'cherries' );
+
+console.log(result) // { name: 'cherries', quantity: 5 }</pre>
+
+<h3 id="Find_a_prime_number_in_an_array" name="Find_a_prime_number_in_an_array">配列内の素数の検索</h3>
+
+<p>次の例は、配列内の素数を探します (配列内に素数が見つからない場合は {{jsxref("undefined")}} を返します)。</p>
+
+<pre class="brush: js notranslate">function isPrime(element, index, array) {
+ let start = 2;
+ while (start &lt;= Math.sqrt(element)) {
+ if (element % start++ &lt; 1) {
+ return false;
+ }
+ }
+ return element &gt; 1;
+}
+
+console.log([4, 6, 8, 12].find(isPrime)); // undefined, 見つからない
+console.log([4, 5, 8, 12].find(isPrime)); // 5
+</pre>
+
+<p>以下の例は存在せず削除された要素が処理<em>される</em>こと、コールバックに渡される値が処理時点での値であることを示しています。</p>
+
+<pre class="brush: js notranslate">// 添字が 2, 3, 4 の位置に要素がない配列を宣言
+const array = [0,1,,,,5,6];
+
+// 値が割り当てられているものに限らず、すべての添字を表示
+array.find(function(value, index) {
+ console.log('Visited index ', index, ' with value ', value);
+});
+
+// 削除されたものを含め、すべての添字を表示
+array.find(function(value, index) {
+ // 初回で要素 5 を削除
+ if (index === 0) {
+ console.log('Deleting array[5] with value ', array[5]);
+ delete array[5];
+ }
+ // 要素 5 は削除されても処理される
+ console.log('Visited index ', index, ' with value ', value);
+});
+// 期待される出力:
+// Deleting array[5] with value 5
+// Visited index 0 with value 0
+// Visited index 1 with value 1
+// Visited index 2 with value undefined
+// Visited index 3 with value undefined
+// Visited index 4 with value undefined
+// Visited index 5 with value undefined
+// Visited index 6 with value 6
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.find', 'Array.prototype.find')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Array.find")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.findIndex()")}} – インデックスを見つけて返す</li>
+ <li>{{jsxref("Array.prototype.includes()")}} – 配列内に値が存在するかどうかをテストする</li>
+ <li>{{jsxref("Array.prototype.filter()")}} – マッチしない要素をすべて削除する</li>
+ <li>{{jsxref("Array.prototype.every()")}} – すべての要素をテストする</li>
+ <li>{{jsxref("Array.prototype.some()")}} – 1つの要素が一致するまでテストする</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/findindex/index.html b/files/ja/web/javascript/reference/global_objects/array/findindex/index.html
new file mode 100644
index 0000000000..5a4bc9df41
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/findindex/index.html
@@ -0,0 +1,191 @@
+---
+title: Array.prototype.findIndex()
+slug: Web/JavaScript/Reference/Global_Objects/Array/findIndex
+tags:
+ - Array
+ - ECMAScript2015
+ - JavaScript
+ - Method
+ - Prototype
+ - polyfill
+ - メソッド
+ - 配列
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><code><strong>findIndex()</strong></code> メソッドは、配列内の<strong>指定されたテスト関数を満たす</strong>最初の要素の<strong>位置</strong>を返します。テスト関数を満たす要素がない場合を含め、それ以外の場合は <code>-1</code> を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-findindex.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<p>{{jsxref("Array.find", "find()")}} メソッドも参照してください。このメソッドは、配列内で見つかった要素の位置ではなく、<strong>値</strong> を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>arr</var>.findIndex(<var>callback</var>( <var>element</var>[, <var>index</var>[, <var>array</var>]] )[, <var>thisArg</var>])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>
+ <p>配列内のそれぞれの値に対して実行される関数で、条件を満たす要素が発見されたことを示す <code>true</code> が返るまで続けられます。</p>
+
+ <p>3つの引数を取ります。</p>
+
+ <dl>
+ <dt><code><var>element</var></code></dt>
+ <dd>配列内で現在処理されている要素。</dd>
+ <dt><code><var>index</var></code> {{optional_inline}}</dt>
+ <dd>配列内で現在処理されている要素の位置。</dd>
+ <dt><code><var>array</var></code> {{optional_inline}}</dt>
+ <dd><code>findIndex()</code> を呼び出した元の配列。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code> {{optional_inline}}</dt>
+ <dd>任意で、 <code><var>callback</var></code> を実行する時に <code>this</code> として使うオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>テストを満たした配列の要素の位置を返します。それ以外の場合は、 <code>-1</code> を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>findIndex()</code> メソッドは、配列のそれぞれの位置に対して <code><var>callback</var></code> を1回ずつ呼び出し、 <code><var>callback</var></code> が{{Glossary("truthy", "真値")}}を返すものを見つけるまで繰り返します。</p>
+
+<p>そのような要素が見つかると、 <code>findIndex()</code> はすぐにその要素の位置を返します。 <code><var>callback</var></code> が真値を返すと (または配列の <code>length</code> が <code>0</code> であると)、 <code>findIndex()</code> は <code>-1</code> を返します。</p>
+
+<div class="blockIndicator note">
+<p><strong>極端な場合の警告:</strong> {{jsxref("Array.some()")}} などの他の配列メソッドとは異なり、 <code><var>callback</var></code> は値が割り当てられていない位置でも実行されます。</p>
+</div>
+
+<p><code><var>callback</var></code> は3つの引数で呼び出されます。</p>
+
+<ol>
+ <li>その要素の値</li>
+ <li>その要素の位置</li>
+ <li>走査されている配列オブジェクト</li>
+</ol>
+
+<p><code>findIndex</code> に <code>thisArg</code> 引数を与えた場合、各 <code>callback</code> の呼び出し時に、その与えたオブジェクトが、<code>this</code> として使用されます。この引数を省略した場合、<code>this</code> は {{jsxref("undefined")}} になります。</p>
+
+<p><code>findIndex()</code> で処理される要素の範囲は、 <code><var>callback</var></code> が最初に呼び出される前に設定されます。 <code><var>callback</var></code> は最初の <code>findIndex()</code> の呼び出し以降に配列に追加された要素は処理しません。配列内で未処理の既存の要素が <code><var>callback</var></code> によって変更された場合、 <code><var>callback</var></code> へ渡される値は <code>findIndex()</code> がその要素の位置を処理する時点での値になります。</p>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/delete">削除</a>された値も処理対象になります。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js">// https://tc39.github.io/ecma262/#sec-array.prototype.findindex
+if (!Array.prototype.findIndex) {
+ Object.defineProperty(Array.prototype, 'findIndex', {
+ value: function(predicate) {
+ // 1. Let O be ? ToObject(this value).
+ if (this == null) {
+ throw new TypeError('"this" is null or not defined');
+ }
+
+ var o = Object(this);
+
+ // 2. Let len be ? ToLength(? Get(O, "length")).
+ var len = o.length &gt;&gt;&gt; 0;
+
+ // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+ if (typeof predicate !== 'function') {
+ throw new TypeError('predicate must be a function');
+ }
+
+ // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+ var thisArg = arguments[1];
+
+ // 5. Let k be 0.
+ var k = 0;
+
+ // 6. Repeat, while k &lt; len
+ while (k &lt; len) {
+ // a. Let Pk be ! ToString(k).
+ // b. Let kValue be ? Get(O, Pk).
+ // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+ // d. If testResult is true, return k.
+ var kValue = o[k];
+ if (predicate.call(thisArg, kValue, k, o)) {
+ return k;
+ }
+ // e. Increase k by 1.
+ k++;
+ }
+
+ // 7. Return -1.
+ return -1;
+ },
+ configurable: true,
+ writable: true
+ });
+}
+</pre>
+
+<p>もし、本当に {{jsxref("Object.defineProperty")}} に対応していない古い JavaScript エンジンに対応する必要があるのであれば、 <code>Array.prototype</code> メソッドに対してポリフィルを使用しないようにしないと、これらを列挙不可能にすることができません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Find_the_index_of_a_prime_number_in_an_array" name="Find_the_index_of_a_prime_number_in_an_array">配列内の素数の位置を検索する</h3>
+
+<p>次の例では、配列の中で素数の入った最初の要素の位置を返し、素数が見つからなかった場合は <code>-1</code> を返します。</p>
+
+<pre class="brush: js">function isPrime(num) {
+ for (let i = 2; num &gt; i; i++) {
+ if (num % i == 0) {
+ return false;
+ }
+ }
+ return num &gt; 1;
+}
+
+console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, not found
+console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (array[2] is 7)
+</pre>
+
+<h3 id="Find_index_using_arrow_function" name="Find_index_using_arrow_function">アロー関数を使用して位置を検索する</h3>
+
+<p>次の例では、アロー関数を使用してフルーツの位置を検索しています。</p>
+
+<pre class="brush: js">const fruits = ["apple", "banana", "cantaloupe", "blueberries", "grapefruit"];
+
+const index = fruits.findIndex(fruit =&gt; fruit === "blueberries");
+
+console.log(index); // 3
+console.log(fruits[index]); // blueberries
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.findindex', 'Array.prototype.findIndex')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.findIndex")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.find()")}}</li>
+ <li>{{jsxref("Array.prototype.indexOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/flat/index.html b/files/ja/web/javascript/reference/global_objects/array/flat/index.html
new file mode 100644
index 0000000000..5513f67945
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/flat/index.html
@@ -0,0 +1,177 @@
+---
+title: Array.prototype.flat()
+slug: Web/JavaScript/Reference/Global_Objects/Array/flat
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - flat
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/flat
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>flat()</strong></code> メソッドは、すべてのサブ配列の要素を指定した深さで再帰的に結合した新しい配列を生成します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-flat.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>var newArray = arr</var>.flat(<em>[depth]</em>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>depth</code> {{optional_inline}}</dt>
+ <dd>ネストされた配列構造で、どの程度の深さをフラット化するか指定する深さレベルです。既定値は 1 です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>サブ配列の要素を結合した新しい配列。</p>
+
+<h2 id="Alternatives" name="Alternatives">代替手段</h2>
+
+<h3 id="reduce_and_concat" name="reduce_and_concat">reduce と concat</h3>
+
+<pre class="brush: js notranslate">const arr = [1, 2, [3, 4]];
+
+// 単一レベルの配列にする
+arr.flat();
+// 次のものと同様
+arr.reduce((acc, val) =&gt; acc.concat(val), []);
+// [1, 2, 3, 4]
+
+// または、分割代入の構文を使用して
+const flattened = arr =&gt; [].concat(...arr);
+</pre>
+
+<h3 id="reduce_concat_isArray_recursivity" name="reduce_concat_isArray_recursivity">reduce + concat + isArray + 再帰</h3>
+
+<pre class="brush: js notranslate">const arr = [1, 2, [3, 4, [5, 6]]];
+
+// reduce と concat の再帰によって深いレベルを平坦化することができる
+function flatDeep(arr, d = 1) {
+ return d &gt; 0 ? arr.reduce((acc, val) =&gt; acc.concat(Array.isArray(val) ? flatDeep(val, d - 1) : val), [])
+ : arr.slice();
+};
+
+flatDeep(arr, Infinity);
+// [1, 2, 3, 4, 5, 6]
+</pre>
+
+<h3 id="Use_a_stack" name="Use_a_stack">スタックの使用</h3>
+
+<pre class="brush: js notranslate">// 再帰を使わずにスタックを使用して平坦化
+// note that depth control is hard/inefficient as we will need to tag EACH value with its own depth
+// also possible w/o reversing on shift/unshift, but array OPs on the end tends to be faster
+function flatten(input) {
+ const stack = [...input];
+ const res = [];
+ while(stack.length) {
+ // pop value from stack
+ const next = stack.pop();
+ if(Array.isArray(next)) {
+ // push back array items, won't modify the original input
+ stack.push(...next);
+ } else {
+ res.push(next);
+ }
+ }
+ // reverse to restore input order
+ return res.reverse();
+}
+
+const arr = [1, 2, [3, 4, [5, 6]]];
+flatten(arr);
+// [1, 2, 3, 4, 5, 6]
+</pre>
+
+<h3 id="Use_Generator_function" name="Use_Generator_function">Generator 関数の使用</h3>
+
+<pre class="brush: js notranslate">function* flatten(array, depth) {
+ if(depth === undefined) {
+ depth = 1;
+ }
+ for(const item of array) {
+ if(Array.isArray(item) &amp;&amp; depth &gt; 0) {
+ yield* flatten(item, depth - 1);
+ } else {
+ yield item;
+ }
+ }
+}
+
+const arr = [1, 2, [3, 4, [5, 6]]];
+const flattened = [...flatten(arr, Infinity)];
+// [1, 2, 3, 4, 5, 6]
+</pre>
+
+<div class="hidden">
+<p>この記事にポリフィルを追加しないでください。参考までに、<a href="https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500">https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500</a> をチェックしてください。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Flattening_nested_arrays" name="Flattening_nested_arrays">ネストされた配列の平坦化</h3>
+
+<pre class="brush: js notranslate">const arr1 = [1, 2, [3, 4]];
+arr1.flat();
+// [1, 2, 3, 4]
+
+const arr2 = [1, 2, [3, 4, [5, 6]]];
+arr2.flat();
+// [1, 2, 3, 4, [5, 6]]
+
+const arr3 = [1, 2, [3, 4, [5, 6]]];
+arr3.flat(2);
+// [1, 2, 3, 4, 5, 6]
+
+const arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
+arr4.flat(Infinity);
+// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+</pre>
+
+<h3 id="Flattening_and_array_holes" name="Flattening_and_array_holes">平坦化と配列の穴</h3>
+
+<p>flat メソッドは配列内の空要素を削除します。</p>
+
+<pre class="brush: js notranslate">const arr5 = [1, 2, , 4, 5];
+arr5.flat();
+// [1, 2, 4, 5]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.flat', 'Array.prototype.flat')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.flat")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.flatMap()")}}</li>
+ <li>{{jsxref("Array.prototype.map()")}}</li>
+ <li>{{jsxref("Array.prototype.reduce()")}}</li>
+ <li>{{jsxref("Array.prototype.concat()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/flatmap/index.html b/files/ja/web/javascript/reference/global_objects/array/flatmap/index.html
new file mode 100644
index 0000000000..03e9fb6140
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/flatmap/index.html
@@ -0,0 +1,148 @@
+---
+title: Array.prototype.flatMap()
+slug: Web/JavaScript/Reference/Global_Objects/Array/flatMap
+tags:
+ - Array
+ - JavaScript
+ - Map
+ - Method
+ - Prototype
+ - Reference
+ - flatMap
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/flatMap
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>flatMap()</strong></code> メソッドは、最初にマッピング関数を使用してそれぞれの要素をマップした後、結果を新しい配列内にフラット化します。これは、{{jsxref("Array.prototype.map","map()")}} の後に深さ 1 の {{jsxref("Array.prototype.flat","flat()")}} を行うのと同じですが、これら 2 つのメソッドを別々にコールするよりもわずかに効率的です。</p>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>var new_array = arr</var>.flatMap(function <var>callback(currentValue[, index[, array]]) {
+ // return element for new_array
+}</var>[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">パラメーター</h3>
+
+<dl>
+ <dt></dt>
+ <dt><code>currentValue</code></dt>
+ <dd>配列で現在処理されている要素です。</dd>
+ <dt><code>index</code>{{optional_inline}}</dt>
+ <dd>配列で現在処理されている要素のインデックスです。</dd>
+ <dt><code>array</code>{{optional_inline}}</dt>
+ <dd><code>map</code> が呼び出された配列です。</dd>
+</dl>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>新しい配列の要素を生成する関数。3 つの引数を受け取ります。</dd>
+ <dt><code>thisArg</code>{{optional_inline}}</dt>
+ <dd><code>callback</code> を実行するときに <code>this</code> として使用する値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>各要素がコールバック関数の結果であり、深さが 1 にフラット化された新しい配列です。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>コールバック関数の詳細な説明は {{jsxref("Array.prototype.map()")}} を参照してください。<code>flatMap</code> メソッドは、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a></code> の後に深さ 1 の <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/flat">flat</a></code> を呼び出すのと同じです。</p>
+
+<h3 id="Alternative" name="Alternative">代替</h3>
+
+<h4 id="reduce_and_concat" name="reduce_and_concat"><code>reduce()</code> と <code>concat()</code></h4>
+
+<pre class="brush: js notranslate">var arr = [1, 2, 3, 4];
+
+arr.flatMap(x =&gt; [x, x * 2]);
+// is equivalent to
+arr.reduce((acc, x) =&gt; acc.concat([x, x * 2]), []);
+// [1, 2, 2, 4, 3, 6, 4, 8]
+</pre>
+
+<p>ただし、これは非効率的であり、大きな配列の場合は避けるべきであることに注意してください。処理ごとにガベージコレクションが必要な新しい一時配列を作成し、要素を単に追加するのではなく、現在のアキュムレータ配列から新しい配列に要素をコピーします。</p>
+
+<div class="hidden">
+<p>Please do not add polyfills on this article. For reference, please check: <a href="https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500">https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500</a></p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="map_and_flatMap" name="map_and_flatMap"><code>map()</code> と <code>flatMap()</code></h3>
+
+<pre class="brush: js notranslate">let arr1 = [1, 2, 3, 4];
+
+arr1.map(x =&gt; [x * 2]);
+// [[2], [4], [6], [8]]
+
+arr1.flatMap(x =&gt; [x * 2]);
+// [2, 4, 6, 8]
+
+// only one level is flattened
+arr1.flatMap(x =&gt; [[x * 2]]);
+// [[2], [4], [6], [8]]
+</pre>
+
+<p>上記は map を使用することでも実現できますが、ここでは <code>flatMap</code> の使用方法をよりよく示す例を紹介します。</p>
+
+<p>文章のリストから単語のリストを生成してみましょう。</p>
+
+<pre class="brush: js notranslate">let arr1 = ["it's Sunny in", "", "California"];
+
+arr1.map(x =&gt; x.split(" "));
+// [["it's","Sunny","in"],[""],["California"]]
+
+arr1.flatMap(x =&gt; x.split(" "));
+// ["it's","Sunny","in", "", "California"]</pre>
+
+<p>出力リストの長さは入力リストの長さとは異なる場合があることに注意してください。</p>
+
+<h3 id="For_adding_and_removing_items_during_a_map" name="For_adding_and_removing_items_during_a_map"><code>map()</code> のアイテムの追加と削除</h3>
+
+<p><code>flatMap</code> は、<code>map</code> 中にアイテムの追加と削除(アイテムの数を変更)を行う方法として利用できます。つまり、常に<em>一対一</em>ではなく、<em>多くのアイテムを多くのアイテムに</em>(入力されたアイテムを個別に扱うことで)マップできるようになります。この意味では、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter">filter</a> の逆のような働きをします。単純に、アイテムを保持するには 1 要素の配列を返し、アイテムを追加するには複数要素の配列を返し、アイテムを削除するには 0 要素の配列を返します。</p>
+
+<pre class="brush: js notranslate">// 負の数をすべて取り除き、奇数を偶数と1に分割します。
+let a = [5, 4, -3, 20, 17, -33, -4, 18]
+// |\ \ x | | \ x x |
+// [4,1, 4, 20, 16, 1, 18]
+
+a.flatMap( (n) =&gt;
+ (n &lt; 0) ? [] :
+  (n % 2 == 0) ? [n] :
+  [n-1, 1]
+)
+
+// 期待される出力: [4, 1, 4, 20, 16, 1, 18]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.flatmap', 'Array.prototype.flatMap')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Array.flatMap")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.flat()")}}</li>
+ <li>{{jsxref("Array.prototype.map()")}}</li>
+ <li>{{jsxref("Array.prototype.reduce()")}}</li>
+ <li>{{jsxref("Array.prototype.concat()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/foreach/index.html b/files/ja/web/javascript/reference/global_objects/array/foreach/index.html
new file mode 100644
index 0000000000..d7328dac1b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/foreach/index.html
@@ -0,0 +1,370 @@
+---
+title: Array.prototype.forEach()
+slug: Web/JavaScript/Reference/Global_Objects/Array/forEach
+tags:
+ - Array
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/forEach
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>forEach()</code></strong> メソッドは与えられた関数を、配列の各要素に対して一度ずつ実行します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-foreach.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.forEach(<var>callback(currentValue[, index[, array]]) {
+</var> // execute something
+<var>}</var>[, <var>thisArg</var>]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>各要素に対して実行するコールバック関数で、1 つから 3 つの引数を受け付けます。</dd>
+ <dd>
+ <dl>
+ <dt><code><var>currentValue</var></code></dt>
+ <dd>現在処理されている配列の要素です。</dd>
+ <dt><code><var>index</var></code> {{optional_inline}}</dt>
+ <dd>配列内の <code><var>currentValue</var></code> の添字です。</dd>
+ <dt><code><var>array</var></code> {{optional_inline}}</dt>
+ <dd><code>forEach()</code> が呼び出されている配列です。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code> {{optional_inline}}</dt>
+ <dd><code><var>callback</var></code> 内で <code>this</code> として使用する値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>undefined</code> です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>forEach()</code> は、与えられた関数 <code><var>callback</var></code> を配列に含まれる各要素に対して一度ずつ、昇順で呼び出します。インデックスプロパティが削除されていたり、初期化されていなかったりした場合は呼び出されません。(疎らな配列については、<a href="#sparseArray">下記の例を参照</a>。)</p>
+
+<p><code><var>callback</var></code> は次の 3 つの引数で呼び出されます。</p>
+
+<ol>
+ <li>要素の値</li>
+ <li>要素のインデックス</li>
+ <li>走査されている配列</li>
+</ol>
+
+<p><code>forEach()</code> に <code><var>thisArg</var></code> 引数が与えられると、<code><var>callback</var></code> の呼び出し時にそのオブジェクトが <code><var>thisArg</var></code> として使用されます。<code><var>callback</var></code> によって究極に管理される <code>this</code> の値は、<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数から見える <code>this</code> を特定する一般規則</a>に従います。</p>
+
+<p><code>forEach()</code> によって処理される配列要素の範囲は、<code><var>callback</var></code> が最初に呼び出される前に設定されます。<code>forEach()</code> の呼び出しが開始された後に追加された配列要素に対しては、<code><var>callback</var></code> は実行されません。既存の配列要素が変更または削除された場合、<code><var>callback</var></code> に渡される値は <code>forEach()</code> がそれらを参照した時点での値になります。削除された配列要素を参照することはありません。既に参照された配列要素がイテレーションの間 (e.g. {{jsxref("Array.prototype.shift()", "shift()")}}を使用して) に削除された場合、後の要素は飛ばされます。(<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Modifying_the_array_during_iteration">下記の例を参照してください</a>。)</p>
+
+<p><code>forEach()</code> は配列の各要素に対して <code><var>callback</var></code> 関数を一度ずつ実行します。{{jsxref("Array.prototype.map()", "map()")}} や {{jsxref("Array.prototype.reduce()", "reduce()")}} と異なり、返値は常に {{jsxref("undefined")}} であり、チェーンできません。チェーンの最後に副作用を生じさせるのが典型的な使用法です。</p>
+
+<p><code>forEach()</code> は呼び出された配列を変化させません。(ただし <code><var>callback</var></code> が変化させる可能性があります)</p>
+
+<div class="note">
+<p>例外を発生する以外の方法で、<code>forEach()</code> ループを止めることはできません。ループ中に中断する必要がある場合、<code>forEach()</code> メソッドは適切な方法ではありません。</p>
+
+<p>早期終了を行うには下記のような手段が適しています。</p>
+
+<ul>
+ <li>単純な <a href="/ja/docs/Web/JavaScript/Reference/Statements/for">for</a> ループ</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a> / <a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a> ループ</li>
+ <li>{{jsxref("Array.prototype.every()")}}</li>
+ <li>{{jsxref("Array.prototype.some()")}}</li>
+ <li>{{jsxref("Array.prototype.find()")}}</li>
+ <li>{{jsxref("Array.prototype.findIndex()")}}</li>
+</ul>
+
+<p>他の Array のメソッドである {{jsxref("Array.prototype.every()", "every()")}}, {{jsxref("Array.prototype.some()", "some()")}}, {{jsxref("Array.prototype.find()", "find()")}}, {{jsxref("Array.prototype.findIndex()", "findIndex()")}} は、配列の要素を検査する際、truthy の値を返すことで以降の繰り返しが必要であるかどうかを決めます。</p>
+</div>
+
+<div class="note">
+<h4 id="forEach_expects_a_synchronous_function" name="forEach_expects_a_synchronous_function">forEach は同期関数を期待する</h4>
+<code>forEach</code> はプロミスを待ちません。<code>forEach</code> のコールバックとしてプロミス (または非同期関数) を使用する場合は、その意味合いを理解しておくようにしてください。
+
+<h5 id="Example_Code" name="Example_Code">コード例</h5>
+
+<pre class="brush: js notranslate">let ratings = [5, 4, 5];
+let sum = 0;
+
+let sumFunction = async function (a, b)
+{
+ return a + b
+}
+
+ratings.forEach(async function(rating) {
+ sum = await sumFunction(sum, rating)
+})
+
+console.log(sum)
+// 本来期待される出力: 14
+// 実際の出力: 0
+</pre>
+</div>
+
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>forEach()</code> は ECMA-262 規格の第 5 版で追加されたもので、この規格のすべての実装には存在しない可能性があります。これを回避するには、スクリプトの最初に以下のコードを挿入して、ネイティブにサポートされていない実装でも <code>forEach</code> を使用できるようにします。</p>
+
+<p>このアルゴリズムは、{{jsxref("Object")}} と {{jsxref("TypeError")}} が元の値を持ち、<code><var>fun</var>.call</code> が {{jsxref("Function.prototype.call()")}} の元の値に評価されると仮定すると、ECMA-262 規格の第 5 版で指定されているものと全く同じです。</p>
+
+<pre class="brush: js notranslate">// Production steps of ECMA-262, Edition 5, 15.4.4.18
+// Reference: http://es5.github.io/#x15.4.4.18
+
+if (!Array.prototype['forEach']) {
+
+ Array.prototype.forEach = function(callback, thisArg) {
+
+ if (this == null) { throw new TypeError('Array.prototype.forEach called on null or undefined'); }
+
+ var T, k;
+ // 1. Let O be the result of calling toObject() passing the
+ // |this| value as the argument.
+ var O = Object(this);
+
+ // 2. Let lenValue be the result of calling the Get() internal
+ // method of O with the argument "length".
+ // 3. Let len be toUint32(lenValue).
+ var len = O.length &gt;&gt;&gt; 0;
+
+ // 4. If isCallable(callback) is false, throw a TypeError exception.
+ // See: http://es5.github.com/#x9.11
+ if (typeof callback !== "function") { throw new TypeError(callback + ' is not a function'); }
+
+ // 5. If thisArg was supplied, let T be thisArg; else let
+ // T be undefined.
+ if (arguments.length &gt; 1) { T = thisArg; }
+
+ // 6. Let k be 0
+ k = 0;
+
+ // 7. Repeat, while k &lt; len
+ while (k &lt; len) {
+
+ var kValue;
+
+ // a. Let Pk be ToString(k).
+ // This is implicit for LHS operands of the in operator
+ // b. Let kPresent be the result of calling the HasProperty
+ // internal method of O with argument Pk.
+ // This step can be combined with c
+ // c. If kPresent is true, then
+ if (k in O) {
+
+ // i. Let kValue be the result of calling the Get internal
+ // method of O with argument Pk.
+ kValue = O[k];
+
+ // ii. Call the Call internal method of callback with T as
+ // the this value and argument list containing kValue, k, and O.
+ callback.call(T, kValue, k, O);
+ }
+ // d. Increase k by 1.
+ k++;
+ }
+ // 8. return undefined
+ };
+}</pre>
+
+
+
+
+
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="sparseArray" name="sparseArray">初期化されていない値については何もしない (疎らな配列)</h3>
+
+<pre class="brush: js notranslate">const arraySparse = [1,3,,7]
+let numCallbackRuns = 0
+
+arraySparse.forEach((element) =&gt; {
+ console.log(element)
+ numCallbackRuns++
+})
+
+console.log("numCallbackRuns: ", numCallbackRuns)
+
+// 1
+// 3
+// 7
+// numCallbackRuns: 3
+// 備考: 見ての通り、存在しない 3 から 7 までの値では、コールバック関数が呼び出されません。</pre>
+
+<h3 id="Converting_a_for_loop_to_forEach" name="Converting_a_for_loop_to_forEach">for ループから forEach への変換</h3>
+
+<pre class="brush:js notranslate">const items = ['item1', 'item2', 'item3']
+const copyItems = []
+
+// before
+for (let i = 0; i &lt; items.length; i++) {
+ copyItems.push(items[i])
+}
+
+// after
+items.forEach(function(item){
+ copyItems.push(item)
+})
+</pre>
+
+<h3 id="Printing_the_contents_of_an_array" name="Printing_the_contents_of_an_array">配列の内容の出力</h3>
+
+<div class="blockIndicator note">
+<p><strong>メモ:</strong> 配列の内容をコンソールに表示するために、配列の整形済みのバージョンを表示する {{domxref("Console/table", "console.table()")}} を使用することができます。</p>
+
+<p>以下の例では同じことを <code>forEach()</code> を使用して行う他の方法を説明しています。</p>
+</div>
+
+<p>次のコードは配列の要素ごとに、コンソールに 1 行ずつ要素の内容を出力します。</p>
+
+<pre class="brush:js notranslate">function logArrayElements(element, index, array) {
+ console.log('a[' + index + '] = ' + element)
+}
+
+// 添字が 2 のものは、配列内のその位置にアイテムが存在しない
+// ため、飛ばされていることに注意してください。
+[2, 5, , 9].forEach(logArrayElements)
+// logs:
+// a[0] = 2
+// a[1] = 5
+// a[3] = 9
+</pre>
+
+<h3 id="Using_thisArg" name="Using_thisArg">thisArg の使用</h3>
+
+<p>以下の (不自然な) 例は、配列の中の各項目からオブジェクトのプロパティを更新します。</p>
+
+<pre class="brush:js notranslate">function Counter() {
+ this.sum = 0
+ this.count = 0
+}
+Counter.prototype.add = function(array) {
+ array.forEach((entry) =&gt; {
+ this.sum += entry
+ ++this.count
+ }, this)
+ // ^---- Note
+}
+
+const obj = new Counter()
+obj.add([2, 5, 9])
+obj.count
+// 3
+obj.sum
+// 16
+</pre>
+
+<p><code><var>thisArg</var></code> 引数 (<code>this</code>) が <code>forEach()</code> に提供されているため、<code><var>callback</var></code> の呼び出しのたびにこれが渡されます。コールバックはこれを <code>this</code> の値として使用します。</p>
+
+<div class="note">
+<p><strong>注:</strong> コールバック関数の受け渡しに<a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数式</a>を使用した場合、<code><var>thisArg</var></code> 引数は、アロー関数が文法的に {{jsxref("Operators/this", "this")}} の値に結び付けられているため省略可能です。</p>
+</div>
+
+<h3 id="An_object_copy_function" name="An_object_copy_function">オブジェクトをコピーする関数</h3>
+
+<p>次のコードは与えられたオブジェクトのコピーを生成します。</p>
+
+<p>オブジェクトのコピーを生成するには他にもいくつか方法があります。次のものは一つの方法であり、<code>Array.prototype.forEach()</code> が ECMAScript 5 の <code>Object.*</code> メタプロパティ関数を使用することでどのように動作するかを説明するために示しているものです。</p>
+
+<pre class="brush: js notranslate">function copy(obj) {
+ const copy = Object.create(Object.getPrototypeOf(obj))
+ const propNames = Object.getOwnPropertyNames(obj)
+
+ propNames.forEach((name) =&gt; {
+ const desc = Object.getOwnPropertyDescriptor(obj, name)
+ Object.defineProperty(copy, name, desc)
+ })
+
+ return copy
+}
+
+const obj1 = { a: 1, b: 2 }
+const obj2 = copy(obj1) // obj2 looks like obj1 now
+</pre>
+
+<h3 id="If_the_array_is_modified_during_iteration_other_elements_might_be_skipped." name="If_the_array_is_modified_during_iteration_other_elements_might_be_skipped.">配列が繰り返しの間に変更され、他の要素が飛ばされる場合</h3>
+
+<p>次の例では <samp>one</samp>, <samp>two</samp>, <samp>four</samp> をログ出力します。</p>
+
+<p>値 <code>two</code> を持つ項目に達した時、配列全体の最初の項目はシフトして外れ、すべての残りの項目が 1 つ上の位置に繰り上がります。<code>four</code> が配列の以前の位置に来るため、<code>three</code> が飛ばされます。</p>
+
+<p><code>forEach()</code> は繰り返しの前に配列のコピーを生成しません。</p>
+
+<pre class="brush:js notranslate">let words = ['one', 'two', 'three', 'four']
+words.forEach((word) =&gt; {
+ console.log(word)
+ if (word === 'two') {
+ words.shift()
+ }
+})
+// one
+// two
+// four
+</pre>
+
+<h3 id="Flatten_an_array" name="Flatten_an_array">配列の平板化</h3>
+
+<p>次の例は学習目的だけのものです。内蔵メソッドを使用して配列を平板化したい場合は、{{jsxref("Array.prototype.flat()")}} を使用することができます (ES2019 の一部となる予定で、一部のブラウザーではすでに実装済み)。</p>
+
+<pre class="brush: js notranslate">function flatten(arr) {
+ const result = []
+
+ arr.forEach((i) =&gt; {
+ if (Array.isArray(i)) {
+ result.push(...flatten(i))
+ } else {
+ result.push(i)
+ }
+ })
+
+ return result
+}
+
+// Usage
+const nested = [1, 2, 3, [4, 5, [6, 7], 8, 9]]
+
+flatten(nested) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.forEach")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.find()")}}</li>
+ <li>{{jsxref("Array.prototype.findIndex()")}}</li>
+ <li>{{jsxref("Array.prototype.map()")}}</li>
+ <li>{{jsxref("Array.prototype.filter()")}}</li>
+ <li>{{jsxref("Array.prototype.every()")}}</li>
+ <li>{{jsxref("Array.prototype.some()")}}</li>
+ <li>{{jsxref("Map.prototype.forEach()")}}</li>
+ <li>{{jsxref("Set.prototype.forEach()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/from/index.html b/files/ja/web/javascript/reference/global_objects/array/from/index.html
new file mode 100644
index 0000000000..aab6b03cf7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/from/index.html
@@ -0,0 +1,307 @@
+---
+title: Array.from()
+slug: Web/JavaScript/Reference/Global_Objects/Array/from
+tags:
+ - Array
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/from
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Array.from()</strong></code> メソッドは、配列のようなオブジェクトや反復可能オブジェクトから、浅くコピーされた新しい <code>Array</code> インスタンスを生成します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-from.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Array.from(arrayLike[, mapFn[, thisArg]])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>arrayLike</code></dt>
+ <dd>配列に変換する配列のようなオブジェクトまたは反復可能オブジェクト</dd>
+ <dt><code>mapFn</code> {{Optional_inline}}</dt>
+ <dd>配列のすべての要素に対して呼び出される Map 関数。</dd>
+ <dt><code>thisArg</code> {{Optional_inline}}</dt>
+ <dd><code>mapFn</code> を実行する時に <code>this</code> として使用する値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい {{jsxref("Array")}} インスタンス。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Array.from()</code> は、以下のものから <code>Array</code> を生成します。</p>
+
+<ul>
+ <li>配列のようなオブジェクト (<code>length</code> プロパティおよびインデックス付けされた要素を持つオブジェクト) もしくは</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/iterable">反復可能オブジェクト</a> ({{jsxref("Map")}} や {{jsxref("Set")}} のような要素を取得するオブジェクト)</li>
+</ul>
+
+<p><code>Array.from()</code> は任意の引数 <code>mapFn</code> を持ちます。これは、作成した配列 (もしくは、サブクラスオブジェクト) のすべての要素に対して {{jsxref("Array.prototype.map", "map")}} 関数を実行できます。</p>
+
+<p>より明確に言うと、中間配列を生成しないことを除いて、<code>Array.from(obj, mapFn, thisArg)</code> は <code>Array.from(obj).map(mapFn, thisArg)</code> と同じ結果です。中間配列は、適切な型に合うように丸められた値を持つ必要があるため、<a href="/docs/Web/JavaScript/Typed_arrays">typed arrays</a> のような配列サブクラスにとっては特に重要です。</p>
+
+<div class="note">これは、<a href="/ja/docs/Web/JavaScript/Typed_arrays">型付き配列</a>のような特定の配列のサブクラスでは特に重要です。なぜなら、中間配列の値は適切な型に収まるように切り捨てられている必要があるからです。</div>
+
+<p><code>from()</code> メソッドの <code>length</code> プロパティは 1 です。</p>
+
+<p>ES2015 では、class 構文により定義済みクラスとユーザー定義クラスの両方をサブクラス化することができます。結果として、<code>Array.from</code> のような静的メソッドは <code>Array</code> のサブクラスに「継承」され、<code>Array</code> ではなくサブクラスのインスタンスを生成します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Array_from_a_String" name="Array_from_a_String"><code>String</code> からの配列の生成</h3>
+
+<pre class="brush: js notranslate">Array.from('foo');
+// [ "f", "o", "o" ]</pre>
+
+<h3 id="Array_from_a_Set" name="Array_from_a_Set"><code>Set</code> からの配列の生成</h3>
+
+<pre class="brush: js notranslate">const set = new Set(['foo', 'bar', 'baz', 'foo']);
+Array.from(set);
+// [ "foo", "bar", "baz" ]</pre>
+
+<h3 id="Array_from_a_Map" name="Array_from_a_Map"><code>Map</code> からの配列の生成</h3>
+
+<pre class="brush: js notranslate">const map = new Map([[1, 2], [2, 4], [4, 8]]);
+Array.from(map);
+// [[1, 2], [2, 4], [4, 8]]
+
+const mapper = new Map([['1', 'a'], ['2', 'b']]);
+Array.from(mapper.values());
+// ['a', 'b'];
+
+Array.from(mapper.keys());
+// ['1', '2'];
+</pre>
+
+<h3 id="Array_from_an_Array-like_object_arguments" name="Array_from_an_Array-like_object_(arguments)">配列のようなオブジェクト (引数) からの配列の生成</h3>
+
+<pre class="brush: js notranslate">function f() {
+ return Array.from(arguments);
+}
+
+f(1, 2, 3);
+
+// [ 1, 2, 3 ]</pre>
+
+<h3 id="Using_arrow_functions_and_Array.from" name="Using_arrow_functions_and_Array.from">アロー関数と <code>Array.from</code> の使用</h3>
+
+<pre class="brush: js notranslate">// 要素を操作するためのマップ関数として
+// アロー関数を使用
+Array.from([1, 2, 3], x =&gt; x + x);
+// [2, 4, 6]
+
+
+// 連番の生成
+// 配列はそれぞれの場所が `undefined` で初期化されるため、
+// 以下の `v` の値は `undefined` になる
+Array.from({length: 5}, (v, i) =&gt; i);
+// [0, 1, 2, 3, 4]
+</pre>
+
+<h3 id="Sequence_generator_range" name="Sequence_generator_(range)">連番の生成 (範囲指定)</h3>
+
+<pre class="brush: js notranslate">// 連番の生成関数 (Clojure や PHP などでよく "range" と呼ばれる)
+const range = (start, stop, step) =&gt; Array.from({ length: (stop - start) / step + 1}, (_, i) =&gt; start + (i * step));
+
+// 0..4 の範囲の数値を生成
+range(0, 4, 1);
+// [0, 1, 2, 3, 4]
+
+// 1..10 の範囲の数値を 2 ごとに生成
+range(1, 10, 2);
+// [1, 3, 5, 7, 9]
+
+// Array.from を使用して順番通りになるようアルファベットを生成
+range('A'.charCodeAt(0), 'Z'.charCodeAt(0), 1).map(x =&gt; String.fromCharCode(x));
+// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">Initial publication</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.from', 'Array.from')}}</td>
+ <td>ECMAScript 2015</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.Array.from")}}</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>Array.from</code> は ECMA-262 標準の第 6 版に追加されました。そのため他の標準の実装には存在しない可能性があります。</p>
+
+<p>次のコードをスクリプトの先頭に記述する事により、<code>Array.from</code> がネイティブでサポートされていない環境でもこれを使用できるようになります。</p>
+
+<div class="blockIndicator note">
+<p><strong>ポリフィルの注意:</strong> これは、ECMA-262 第 6 版で定められたアルゴリズムと全く同じです。<code>Object</code> と <code>TypeError</code> はそれぞれオリジナルの値を持ち、<code>callback.call</code> は {{jsxref("Function.prototype.call")}} のオリジナルの値として評価されます。</p>
+
+<p>また、真の iterables ポリフィルできないので、この実装は ECMA-262 第 6 版で定義されている一般的な iterables をサポートしません。</p>
+</div>
+
+<pre class="notranslate">// Production steps of ECMA-262, Edition 6, 22.1.2.1
+if (!Array.from) {
+ Array.from = (function () {
+ var symbolIterator;
+ try {
+ symbolIterator = Symbol.iterator
+ ? Symbol.iterator
+ : 'Symbol(Symbol.iterator)';
+ } catch (e) {
+ symbolIterator = 'Symbol(Symbol.iterator)';
+ }
+
+ var toStr = Object.prototype.toString;
+ var isCallable = function (fn) {
+ return (
+ typeof fn === 'function' ||
+ toStr.call(fn) === '[object Function]'
+ );
+ };
+ var toInteger = function (value) {
+ var number = Number(value);
+ if (isNaN(number)) return 0;
+ if (number === 0 || !isFinite(number)) return number;
+ return (number &gt; 0 ? 1 : -1) * Math.floor(Math.abs(number));
+ };
+ var maxSafeInteger = Math.pow(2, 53) - 1;
+ var toLength = function (value) {
+ var len = toInteger(value);
+ return Math.min(Math.max(len, 0), maxSafeInteger);
+ };
+
+ var setGetItemHandler = function setGetItemHandler(isIterator, items) {
+ var iterator = isIterator &amp;&amp; items[symbolIterator]();
+ return function getItem(k) {
+ return isIterator ? iterator.next() : items[k];
+ };
+ };
+
+ var getArray = function getArray(
+ T,
+ A,
+ len,
+ getItem,
+ isIterator,
+ mapFn
+ ) {
+ // 16. Let k be 0.
+ var k = 0;
+
+ // 17. Repeat, while k &lt; len… or while iterator is done (also steps a - h)
+ while (k &lt; len || isIterator) {
+ var item = getItem(k);
+ var kValue = isIterator ? item.value : item;
+
+ if (isIterator &amp;&amp; item.done) {
+ return A;
+ } else {
+ if (mapFn) {
+ A[k] =
+ typeof T === 'undefined'
+ ? mapFn(kValue, k)
+ : mapFn.call(T, kValue, k);
+ } else {
+ A[k] = kValue;
+ }
+ }
+ k += 1;
+ }
+
+ if (isIterator) {
+ throw new TypeError(
+ 'Array.from: provided arrayLike or iterator has length more then 2 ** 52 - 1'
+ );
+ } else {
+ A.length = len;
+ }
+
+ return A;
+ };
+
+ // The length property of the from method is 1.
+ return function from(arrayLikeOrIterator /*, mapFn, thisArg */) {
+ // 1. Let C be the this value.
+ var C = this;
+
+ // 2. Let items be ToObject(arrayLikeOrIterator).
+ var items = Object(arrayLikeOrIterator);
+ var isIterator = isCallable(items[symbolIterator]);
+
+ // 3. ReturnIfAbrupt(items).
+ if (arrayLikeOrIterator == null &amp;&amp; !isIterator) {
+ throw new TypeError(
+ 'Array.from requires an array-like object or iterator - not null or undefined'
+ );
+ }
+
+ // 4. If mapfn is undefined, then let mapping be false.
+ var mapFn = arguments.length &gt; 1 ? arguments[1] : void undefined;
+ var T;
+ if (typeof mapFn !== 'undefined') {
+ // 5. else
+ // 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
+ if (!isCallable(mapFn)) {
+ throw new TypeError(
+ 'Array.from: when provided, the second argument must be a function'
+ );
+ }
+
+ // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
+ if (arguments.length &gt; 2) {
+ T = arguments[2];
+ }
+ }
+
+ // 10. Let lenValue be Get(items, "length").
+ // 11. Let len be ToLength(lenValue).
+ var len = toLength(items.length);
+
+ // 13. If IsConstructor(C) is true, then
+ // 13. a. Let A be the result of calling the [[Construct]] internal method
+ // of C with an argument list containing the single item len.
+ // 14. a. Else, Let A be ArrayCreate(len).
+ var A = isCallable(C) ? Object(new C(len)) : new Array(len);
+
+ return getArray(
+ T,
+ A,
+ len,
+ setGetItemHandler(isIterator, items),
+ isIterator,
+ mapFn
+ );
+ };
+ })();
+}</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+ <li>{{jsxref("Array.prototype.map()")}}</li>
+ <li>{{jsxref("TypedArray.from()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/includes/index.html b/files/ja/web/javascript/reference/global_objects/array/includes/index.html
new file mode 100644
index 0000000000..1354404302
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/includes/index.html
@@ -0,0 +1,137 @@
+---
+title: Array.prototype.includes()
+slug: Web/JavaScript/Reference/Global_Objects/Array/includes
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - inArray
+ - in_array
+ - polyfill
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/includes
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>includes()</strong></code> メソッドは、特定の要素が配列に含まれているかどうかを <code>true</code> または <code>false</code> で返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-includes.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.includes(<var>valueToFind</var>[, <var>fromIndex</var>])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>valueToFind</var></code></dt>
+ <dd>
+ <p>検索する値です。</p>
+
+ <div class="blockIndicator note">
+ <p><strong>メモ:</strong> 文字列や文字を比較するとき、<code>includes()</code> は<em>大文字と小文字を区別します</em>。</p>
+ </div>
+ </dd>
+ <dt><code><var>fromIndex</var></code> {{optional_inline}}</dt>
+ <dd>この配列内で <code><var>valueToFind</var></code> を探し始める位置です。</dd>
+ <dd>検索される最初の文字は、<code><var>fromIndex</var></code> が正の値の場合は、<code><var>fromIndex</var></code> で見つかり、<code><var>fromIndex</var></code> が負の数の場合は (<code><var>fromIndex</var></code> の{{interwiki("wikipedia", "絶対値")}}だけ配列の末尾から文字数を戻った位置が検索開始地点となり)、<code><var>fromIndex</var></code> または <code><var>arr</var>.length + fromIndex</code> で見つかります。</dd>
+ <dd>既定値は 0 です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Boolean")}} で、<code>true</code> は <code><var>valueToFind</var></code> の値が配列内 (または、<code><var>fromIndex</var></code> が指定された場合はそれで示された配列の部分) から見つかった場合です。</p>
+
+<p>ゼロの値はすべて、符号にかかわらず等しいとみなされます (つまり、<code>-0</code> は <code>0</code> と <code>+0</code> の両方に等しいとみなされます) が、<code>false</code> は <code>0</code> と同じとはみなされ<em>ません</em>。</p>
+
+<div class="note">
+<p><strong>注:</strong> 技術的に言えば、<code>includes()</code> は <code><a href="/ja/docs/Web/JavaScript/Equality_comparisons_and_sameness#Same-value-zero_equality">sameValueZero</a></code> アルゴリズムを使用して、指定された要素が見つかったかどうかを確認しています。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js notranslate">[1, 2, 3].includes(2) // true
+[1, 2, 3].includes(4) // false
+[1, 2, 3].includes(3, 3) // false
+[1, 2, 3].includes(3, -1) // true
+[1, 2, NaN].includes(NaN) // true
+</pre>
+
+<h3 id="fromIndex_is_greater_than_or_equal_to_the_array_length" name="fromIndex_is_greater_than_or_equal_to_the_array_length"><code><var>fromIndex</var></code> が配列の長さと同じか大きい場合</h3>
+
+<p><code><var>fromIndex</var></code> が配列の長さと同じか大きい場合は配列を検索せずに <code>false</code> を返します。</p>
+
+<pre class="brush: js notranslate">let arr = ['a', 'b', 'c']
+
+arr.includes('c', 3) // false
+arr.includes('c', 100) // false
+</pre>
+
+<h3 id="Computed_index_is_less_than_0" name="Computed_index_is_less_than_0">計算値のインデックスが 0 より小さい場合</h3>
+
+<p><code><var>fromIndex</var></code> が負の値である場合、計算値のインデックスは配列内で <code><var>valueToFind</var></code> の円策を開始する位置として使用するよう計算されます。計算値のインデックスが <code>-1 * <var>arr</var>.length</code> 以下の場合は、配列全体が検索されます。</p>
+
+<pre class="brush: js notranslate">// 配列の長さは 3
+// fromIndex は -100
+// 補正されたインデックスは 3 + (-100) = -97
+
+let arr = ['a', 'b', 'c']
+
+arr.includes('a', -100) // true
+arr.includes('b', -100) // true
+arr.includes('c', -100) // true
+arr.includes('a', -2) // false
+</pre>
+
+<h3 id="includes_used_as_a_generic_method" name="includes_used_as_a_generic_method">ジェネリックメソッドとして使用される includes()</h3>
+
+<p><code>includes()</code> メソッドは意図的にジェネリックになっています。<code>this</code> が Array オブジェクトであることは必須ではないので、他の種類のオブジェクト (例えば配列風オブジェクト) にも適用することができます。</p>
+
+<p>以下の例は、<code>includes()</code> メソッドが関数の <a href="/ja/docs/Web/JavaScript/Reference/Functions/arguments">arguments</a> オブジェクトに対して使用される様子を示しています。</p>
+
+<pre class="brush: js notranslate">(function() {
+ console.log(Array.prototype.includes.call(arguments, 'a')) // true
+ console.log(Array.prototype.includes.call(arguments, 'd')) // false
+})('a','b','c') </pre>
+
+<div class="hidden">
+<p>参照記事にポリフィルを追加しないでください。詳細や議論については、<a href="https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500">https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500</a> を参照して下さい。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.includes', 'Array.prototype.includes')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.includes")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.includes()")}}</li>
+ <li>{{jsxref("String.prototype.includes()")}}</li>
+ <li>{{jsxref("Array.prototype.indexOf()")}}</li>
+ <li>{{jsxref("Array.prototype.find()")}}</li>
+ <li>{{jsxref("Array.prototype.findIndex()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/index.html b/files/ja/web/javascript/reference/global_objects/array/index.html
new file mode 100644
index 0000000000..61e36c1e94
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/index.html
@@ -0,0 +1,465 @@
+---
+title: Array
+slug: Web/JavaScript/Reference/Global_Objects/Array
+tags:
+ - Array
+ - Class
+ - Example
+ - Global Objects
+ - JavaScript
+ - Reference
+ - クラス
+ - グローバルオブジェクト
+ - 配列
+translation_of: Web/JavaScript/Reference/Global_Objects/Array
+---
+<div>{{JSRef}}</div>
+
+<p>JavaScript の <strong><code>Array</code></strong> クラスはグローバルオブジェクトで、高水準、リスト風のオブジェクトである配列の構築に使用されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>配列はリストのようなオブジェクトであり、そのプロトタイプは配列に対して横断的な操作や変更を行うメソッドを持っています。 JavaScript の配列は、要素数も要素の型も固定されていません。配列の長さは常に可変であり、データを連続しない位置に格納できるため、 JavaScript の配列は密であることが保証されていません。これはプログラマーの使い方次第です。一般に、これらは便利な特性です。しかし、もし特定の用途で望ましくないのであれば、型付き配列を使用したほうが良いかもしれません。</p>
+
+<p>配列は (<a href="https://ja.wikipedia.org/wiki/%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97">連想配列</a>のように) 要素の添字に文字列を使うことはできず、整数を使う必要があります。整数以外によって<a href="/ja/docs/Web/JavaScript/Guide/Working_with_Objects#Objects_and_properties">ブラケット構文</a> (または<a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">ドット構文</a>) を使用して設定やアクセスを行うと、配列のリスト自身の要素を設定したり取得したりすることはできませんが、その配列の<a href="/ja/docs/Web/JavaScript/Data_structures#Properties">オブジェクトプロパティ集合</a>に関連付けられた変数に設定またはアクセスすることになります。配列のオブジェクトプロパティと配列リストの要素は異なり、配列の<a href="/ja/docs/Web/JavaScript/Guide/Indexed_collections#Array_methods">走査や変更の操作</a>を名前付きプロパティに適用することはできません。</p>
+
+<h3 id="Common_operations" name="Common_operations">よくある操作</h3>
+
+<p><strong>配列を作成する</strong></p>
+
+<pre class="brush: js notranslate">let fruits = ['りんご', 'バナナ']
+
+console.log(fruits.length)
+// 2
+</pre>
+
+<p><strong>位置を使用して配列にアクセスする</strong></p>
+
+<pre class="brush: js notranslate">let first = fruits[0]
+// りんご
+
+let last = fruits[fruits.length - 1]
+// バナナ
+</pre>
+
+<p><strong>配列のループ処理</strong></p>
+
+<pre class="brush: js notranslate">fruits.forEach(function(item, index, array) {
+ console.log(item, index)
+})
+// りんご 0
+// バナナ 1
+</pre>
+
+<p><strong>配列の末尾に要素を追加する</strong></p>
+
+<pre class="brush: js notranslate">let newLength = fruits.push('みかん')
+// ["りんご", "バナナ", "みかん"]
+</pre>
+
+<p><strong>配列の末尾の要素を削除する</strong></p>
+
+<pre class="brush: js notranslate">let last = fruits.pop() // 配列の末尾の要素 "みかん" を削除
+// ["りんご", "バナナ"]
+</pre>
+
+<p><strong>配列の先頭の要素を削除する</strong></p>
+
+<pre class="brush: js notranslate">let first = fruits.shift() // 配列の先頭の要素"りんご" を削除
+// ["バナナ"]
+</pre>
+
+<p><strong>配列の先頭に要素を追加する</strong></p>
+
+<pre class="brush: js notranslate">let newLength = fruits.unshift('いちご') // 配列の先頭に追加
+// ["いちご", "バナナ"]
+</pre>
+
+<p><strong>要素の添字を取得する</strong></p>
+
+<pre class="brush: js notranslate">fruits.push('マンゴー')
+// ["いちご", "バナナ", "マンゴー"]
+
+let pos = fruits.indexOf('バナナ')
+// 1
+</pre>
+
+<p><strong>位置を指定して要素を削除する</strong></p>
+
+<pre class="brush: js notranslate">let removedItem = fruits.splice(pos, 1) // 要素を削除する方法
+
+// ["いちご", "マンゴー"]</pre>
+
+<p><strong>位置から複数の要素を削除する</strong></p>
+
+<pre class="brush: js notranslate">let vegetables = ['キャベツ', 'かぶ', '大根', 'にんじん']
+console.log(vegetables)
+// ["キャベツ", "かぶ", "大根", "にんじん"]
+
+let pos = 1
+let n = 2
+
+let removedItems = vegetables.splice(pos, n)
+// 複数の要素を削除するには、 <em>n</em> で削除する要素数を定義します
+// 指定位置(pos)以降から n 個分の要素が削除されます
+
+console.log(vegetables)
+// ["Cabbage", "Carrot"] (元の配列が変化)
+
+console.log(removedItems)
+// ["Turnip", "Radish"]
+</pre>
+
+<p><strong>配列をコピーする</strong></p>
+
+<pre class="brush: js notranslate">let shallowCopy = fruits.slice() // 配列のコピーを作成できます
+// ["いちご", "マンゴー"]
+</pre>
+
+<h3 id="Accessing_array_elements" name="Accessing_array_elements">配列要素へのアクセス</h3>
+
+<p>JavaScript の配列の添字は 0 から始まるので、配列の最初の要素は添字 <code>0</code> の位置にあります。そして、最後の要素のインデックスは {{jsxref("Array.length", "length")}} プロパティの値から 1 を引いた値になります。</p>
+
+<p>不正なインデックス番号を使った場合は <code>undefined</code> を返します。</p>
+
+<pre class="brush: js notranslate">let arr = ['最初の要素', '2 番目の要素', '最後の要素']
+console.log(arr[0]) // ログ : "最初の要素"
+console.log(arr[1]) // ログ : "2 番目の要素"
+console.log(arr[arr.length - 1]) // ログ : "最後の要素"
+</pre>
+
+<p><code>toString</code> が一つのプロパティであるのと同様に (ただし厳密には <code>toString()</code> はメソッドですが)、配列における配列要素はオブジェクトのプロパティです。しかし、次のように配列にアクセスしようとすると、プロパティ名が妥当でないため、構文エラーが発生します。</p>
+
+<pre class="brush: js notranslate">console.log(arr.0) // 構文エラー
+</pre>
+
+<p>これは、JavaScript の配列とそのプロパティに限った話ではありません。数字から始まるプロパティは、ドット演算子を用いて参照できないため、ブラケット記法を用いる必要があります。</p>
+
+<p>例えば <code>3d</code> というプロパティを持つオブジェクトがあった場合は、ドット記法ではなくブラケット記法を用いて参照しなければなりません。</p>
+
+<pre class="brush: js notranslate">let years = [1950, 1960, 1970, 1980, 1990, 2000, 2010]
+console.log(years.0) // 構文エラー
+console.log(years[0]) // 正しく動作
+</pre>
+
+<pre class="brush: js notranslate">renderer.3d.setTexture(model, 'character.png') // 構文エラー
+renderer['3d'].setTexture(model, 'character.png') // 正しく動作
+</pre>
+
+<p><code>3d</code> の例では、<code>'3d'</code> は引用符で括らなければならないことに注意してください。 JavaScript 配列の添字も同様に引用符でくくることができますが (例えば <code>years[2]</code> でなく <code>years['2']</code>)、そうする必要はないでしょう。</p>
+
+<p><code>years[2]</code> の 2 は最終的に、JavaScript エンジンが内部的に <code>toString</code> メソッドで型変換することで文字列にされます。これは '2' と '02' が <code>years</code> オブジェクトの異なる場所を指すようにするためでです。このため、以下の例は <code>true</code> がログ出力されます。</p>
+
+<pre class="brush: js notranslate">console.log(years['2'] != years['02'])
+</pre>
+
+<h3 id="Relationship_between_length_and_numerical_properties" name="Relationship_between_length_and_numerical_properties">length と数値プロパティとの関係</h3>
+
+<p>JavaScript の配列の {{jsxref("Array.length", "length")}} プロパティと数値プロパティは関連しています。</p>
+
+<p>配列の一部の組込みメソッド (例えば {{jsxref("Array.join", "join()")}}, {{jsxref("Array.slice", "slice()")}}, {{jsxref("Array.indexOf", "indexOf()")}}, など) は、配列の {{jsxref("Array.length", "length")}} プロパティの値はメソッドの呼び出し時の値を考慮します。</p>
+
+<p>他にも (例えば {{jsxref("Array.push", "push()")}}, {{jsxref("Array.splice", "splice()")}}, 等)、結果として配列の {{jsxref("Array.length", "length")}} プロパティを更新するメソッドがあります。</p>
+
+<pre class="brush: js notranslate">var fruits = []
+fruits.push('バナナ', 'りんご', 'もも')
+
+console.log(fruits.length) // 3
+</pre>
+
+<p>JavaScript の配列に、配列の添字として妥当なプロパティであり、かつ現在の配列の範囲の外にある添字を設定すると、エンジンは配列の {{jsxref("Array.length", "length")}} プロパティを更新します。</p>
+
+<pre class="brush: js notranslate">fruits[5] = 'マンゴー'
+console.log(fruits[5]) // 'マンゴー'
+console.log(Object.keys(fruits)) // ['0', '1', '2', '5']
+console.log(fruits.length) // 6
+</pre>
+
+<p>{{jsxref("Array.length", "length")}} を増加させてみます。</p>
+
+<pre class="brush: js notranslate">fruits.length = 10
+console.log(fruits) // ['バナナ', 'りんご', 'もも', undefined, 'マンゴー', &lt;5 empty items&gt;]
+console.log(Object.keys(fruits)) // ['0', '1', '2', '5']
+console.log(fruits.length) // 10
+console.log(fruits[8]) // undefined
+</pre>
+
+<p>一方、 {{jsxref("Array.length", "length")}} プロパティの数を減らすと、要素が削除されます。</p>
+
+<pre class="brush: js notranslate">fruits.length = 2
+console.log(Object.keys(fruits)) // ['0', '1']
+console.log(fruits.length) // 2
+</pre>
+
+<p>これらについては {{jsxref("Array.length")}} のページで詳しく解説します。</p>
+
+<h3 id="Creating_an_array_using_the_result_of_a_match" name="Creating_an_array_using_the_result_of_a_match">match の結果を利用して配列を作成</h3>
+
+<p>正規表現 ({{jsxref("RegExp")}}) と文字列の一致の結果から配列を生成することができます。この配列には、プロパティと、一致した者に関する情報を提供する要素を持ちます。このような配列は {{jsxref("RegExp.exec()")}}, {{jsxref("String.match()")}}, {{jsxref("String.replace()")}} から返されます。</p>
+
+<p>これらのプロパティと要素を理解しやすくするために、以下の例と表を参照してください。</p>
+
+<pre class="brush: js notranslate">/ 1文字の d と、続く1文字以上の b と、続く1文字の d に一致します
+// 一致した b およびそれに続く d を記憶します
+// 大文字小文字は区別しません
+
+const myRe = /d(b+)(d)/i
+const myArray = myRe.exec('cdbBdbsbz')
+</pre>
+
+<p>この一致から返されるプロパティと要素は次の通りです。</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th class="header" scope="col">プロパティまたは要素</th>
+ <th class="header" scope="col">説明</th>
+ <th class="header" scope="col">例</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>input</code><br>
+ {{ReadOnlyInline}}</td>
+ <td>正規表現が一致の文字列を反映する読み取り専用プロパティです。</td>
+ <td>"<code>cdbBdbsbz</code>"</td>
+ </tr>
+ <tr>
+ <td><code>index</code><br>
+ {{ReadOnlyInline}}</td>
+ <td>文字列中で一致場所を、0 から始まる位置で示します。</td>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <td><code>[0]</code><br>
+ {{ReadOnlyInline}}</td>
+ <td>最後にマッチした文字列です。</td>
+ <td>"<code>dbBd</code>"</td>
+ </tr>
+ <tr>
+ <td><code>[1], ...[n]</code><br>
+ {{ReadOnlyInline}}</td>
+ <td>正規表現に含まれる場合、括弧で囲まれた一致た部分文字列を指定する読み取り専用の要素です。括弧で囲まれた部分文字列の数は無制限です。</td>
+ <td><code>[1]: "bB"<br>
+ [2]: "d"</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Array/Array", "Array()")}}</dt>
+ <dd>新しい <code>Array</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Array/@@species", "get Array[@@species]")}}</dt>
+ <dd>コンストラクター関数。派生オブジェクトを生成する時に使われます。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Array.from()")}}</dt>
+ <dd>配列風 (array-like) または反復可能 (iterable) オブジェクトから新しい <code>Array</code> インスタンスを生成します。</dd>
+ <dt>{{jsxref("Array.isArray()")}}</dt>
+ <dd>配列であれば <code>true</code> を、配列でなければ <code>false</code> を返します。</dd>
+ <dt>{{jsxref("Array.of()")}}</dt>
+ <dd>可変個の引数から、引数の個数や型に関わらず、新しい <code>Array</code> インスタンスを生成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Array.prototype.length")}}</dt>
+ <dd>配列内の要素数を反映します。</dd>
+ <dt>{{jsxref("Array/@@unscopables", "Array.prototype[@@unscopables]")}}</dt>
+ <dd><a href="/ja/docs/Web/JavaScript/Reference/Statements/with"><code>with</code></a> バインディングのスコープから除外されるプロパティ名を保持するシンボル。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Array.prototype.concat()")}}</dt>
+ <dd>この配列に他の配列や値を結合して新しい配列を返します。</dd>
+ <dt>{{jsxref("Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内で配列内の連続した要素をコピーします。</dd>
+ <dt>{{jsxref("Array.prototype.entries()")}}</dt>
+ <dd>新しい <code>Array Iterator</code> オブジェクトを返します。このオブジェクトは、配列中の各インデックスに対する key/value ペアを保持しています。</dd>
+ <dt>{{jsxref("Array.prototype.every()")}}</dt>
+ <dd>指定したテスト関数を配列中のすべての要素が満たした場合に <code>true</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.fill()")}}</dt>
+ <dd>配列内の指定した開始位置から終了位置までの要素を固定値で埋めます。</dd>
+ <dt>{{jsxref("Array.prototype.filter()")}}</dt>
+ <dd>指定したフィルタリング関数が <code>true</code> を返す、配列中の要素を格納した新しい配列を生成します。</dd>
+ <dt>{{jsxref("Array.prototype.find()")}}</dt>
+ <dd>指定したテスト関数を満たす、配列中の要素の値を返します。1 個も見つからない場合は <code>undefined</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.findIndex()")}}</dt>
+ <dd>指定したテスト関数を満たす、配列中の要素のインデックスを返します。1 個も見つからない場合は <code>-1</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.forEach()")}}</dt>
+ <dd>配列中のそれぞれの要素について関数を呼び出します。</dd>
+ <dt>{{jsxref("Array.prototype.includes()")}}</dt>
+ <dd>この配列が特定の要素を含むかどうか判定し、その結果を <code>true</code> または <code>false</code> で返します。</dd>
+ <dt>{{jsxref("Array.prototype.indexOf()")}}</dt>
+ <dd>指定された値と等しい値を持つ最初の (添字の一番小さい) 要素の添字を返します。見つからない場合、<code>-1</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.join()")}}</dt>
+ <dd>配列のすべての要素を結合した文字列を返します。</dd>
+ <dt>{{jsxref("Array.prototype.keys()")}}</dt>
+ <dd>新しい <code>Array Iterator</code> を返します。このオブジェクトは配列中の各添字のキーを保持します。</dd>
+ <dt>{{jsxref("Array.prototype.lastIndexOf()")}}</dt>
+ <dd>指定された値と等しい値を持つ最後の (添字の一番大きい) 要素の添字を返します。見つからない場合、<code>-1</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.map()")}}</dt>
+ <dd>配列内のすべての要素に対して与えられた関数を呼び出し、その結果を格納した新しい配列を生成します。</dd>
+ <dt>{{jsxref("Array.prototype.pop()")}}</dt>
+ <dd>配列から最後の要素を取り除き、返値として返します。</dd>
+ <dt>{{jsxref("Array.prototype.push()")}}</dt>
+ <dd>配列の最後に 1 個以上の要素を追加し、新しい配列の <code>length</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.reduce()")}}</dt>
+ <dd>アキュムレーターと配列内のすべての要素に対して (左から右の順で) 関数を適用し、単一の値に還元します。</dd>
+ <dt>{{jsxref("Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュムレーターと配列内のすべての要素に対して (右から左の順で) 関数を適用し、単一の値に還元します。</dd>
+ <dt>{{jsxref("Array.prototype.reverse()")}}</dt>
+ <dd>配列の要素の順番を逆転させます (最初の要素は最後に、最後の要素は最初になります)。</dd>
+ <dt>{{jsxref("Array.prototype.shift()")}}</dt>
+ <dd>配列から最初の要素を取り除き、その要素を返します。</dd>
+ <dt>{{jsxref("Array.prototype.slice()")}}</dt>
+ <dd>配列の一部を取り出して新しい配列として返します。</dd>
+ <dt>{{jsxref("Array.prototype.some()")}}</dt>
+ <dd>指定したテスト関数を配列中の少なくとも 1 個の要素が満たした場合に <code>true</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.sort()")}}</dt>
+ <dd>配列内で要素を整列し、配列を返します。</dd>
+ <dt>{{jsxref("Array.prototype.splice()")}}</dt>
+ <dd>配列に対して複数の要素を追加したり取り除いたりします。</dd>
+ <dt>{{jsxref("Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列とその要素を表すロケールに従った文字列を返します。{{jsxref("Object.prototype.toLocaleString()")}} メソッドを上書きします。</dd>
+ <dt>{{jsxref("Array.prototype.toString()")}}</dt>
+ <dd>配列とその要素を表す文字列を返します。{{jsxref("Object.prototype.toString()")}} メソッドを上書きしています。</dd>
+ <dt>{{jsxref("Array.prototype.unshift()")}}</dt>
+ <dd>配列の最初に 1 個以上の要素を追加し、配列の変更後の <code>length</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.values()")}}</dt>
+ <dd>新しい <code>Array Iterator</code> オブジェクトを返します。このオブジェクトは、配列中の各添字の値を保持します。</dd>
+ <dt>{{jsxref("Array.prototype.@@iterator()", "Array.prototype[@@iterator]()")}}</dt>
+ <dd>新しい <code>Array Iterator</code> オブジェクトを返します。このオブジェクトは、配列中の各添字の値を保持します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_an_array" name="Creating_an_array">配列の生成</h3>
+
+<p>次の例では、 <code><var>msgArray</var></code> を長さ <code>0</code> で生成し、 <code>msgArray[0]</code> と <code>msgArray[99]</code> に値を設定、その後配列の <code>length</code> が <code>100</code> である事を確認しています。</p>
+
+<pre class="brush: js notranslate">let msgArray = []
+msgArray[0] = 'Hello'
+msgArray[99] = 'world'
+
+if (msgArray.length === 100) {
+ console.log("配列の length は 100 です。")
+}
+</pre>
+
+<h3 id="Creating_a_two-dimensional_array" name="Creating_a_two-dimensional_array">2 次元配列を生成する</h3>
+
+<p>以下では、文字列の 2 次元配列としてチェスボードを生成しています。最初の動きは <code>'p'</code> を <code>board[6][4]</code> から <code>board[4][4]</code> にコピーすることでなされます。古い位置 <code>[6][4]</code> は空白にされます。</p>
+
+<pre class="brush: js notranslate">let board = [
+ ['R','N','B','Q','K','B','N','R'],
+ ['P','P','P','P','P','P','P','P'],
+ [' ',' ',' ',' ',' ',' ',' ',' '],
+ [' ',' ',' ',' ',' ',' ',' ',' '],
+ [' ',' ',' ',' ',' ',' ',' ',' '],
+ [' ',' ',' ',' ',' ',' ',' ',' '],
+ ['p','p','p','p','p','p','p','p'],
+ ['r','n','b','q','k','b','n','r'] ]
+
+console.log(board.join('\n') + '\n\n')
+
+// キングの前のポーンを 2 つ前へ移動
+board[4][4] = board[6][4]
+board[6][4] = ' '
+console.log(board.join('\n'))
+</pre>
+
+<p>出力を以下に示します。</p>
+
+<pre class="eval notranslate">R,N,B,Q,K,B,N,R
+P,P,P,P,P,P,P,P
+ , , , , , , ,
+ , , , , , , ,
+ , , , , , , ,
+ , , , , , , ,
+p,p,p,p,p,p,p,p
+r,n,b,q,k,b,n,r
+
+R,N,B,Q,K,B,N,R
+P,P,P,P,P,P,P,P
+ , , , , , , ,
+ , , , , , , ,
+ , , , ,p, , ,
+ , , , , , , ,
+p,p,p,p, ,p,p,p
+r,n,b,q,k,b,n,r
+</pre>
+
+<h3 id="Using_an_array_to_tabulate_a_set_of_values" name="Using_an_array_to_tabulate_a_set_of_values">配列を使って値のセットを表にする</h3>
+
+<pre class="brush: js notranslate">values = []
+for (let x = 0; x &lt; 10; x++){
+ values.push([
+ 2 ** x,
+ 2 * x ** 2
+ ])
+}
+console.table(values)</pre>
+
+<p>結果は次のようになります。</p>
+
+<pre class="eval notranslate">0 1 0
+1 2 2
+2 4 8
+3 8 18
+4 16 32
+5 32 50
+6 64 72
+7 128 98
+8 256 128
+9 512 162</pre>
+
+<p>(最初の列は要素の添字です)</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">初回発行</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array-objects', 'Array')}}</td>
+ <td>ECMAScript 1</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>From the JavaScript Guide:
+ <ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Working_with_Objects#Indexing_object_properties">“Indexing object properties”</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Indexed_collections#Array_object">“Indexed collections: <code>Array</code> object”</a></li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/JavaScript_typed_arrays">型付き配列</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/index/index.html b/files/ja/web/javascript/reference/global_objects/array/index/index.html
new file mode 100644
index 0000000000..1d2e7a4797
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/index/index.html
@@ -0,0 +1,22 @@
+---
+title: index
+slug: Web/JavaScript/Reference/Global_Objects/Array/index
+---
+<h2 id="Summary" name="Summary">概要</h2>
+<p>正規表現マッチにより作成された配列において、文字列中での一致部分の、0 から始まるインデックス。</p>
+<table class="standard-table">
+ <thead>
+ <tr>
+ <td class="header" colspan="2"><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a> のプロパティ</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td colspan="2"><b>静的</b></td>
+ </tr>
+ <tr>
+ <td>実装されたバージョン</td>
+ <td>JavaScript 1.2</td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/web/javascript/reference/global_objects/array/indexof/index.html b/files/ja/web/javascript/reference/global_objects/array/indexof/index.html
new file mode 100644
index 0000000000..e2c0e4106a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/indexof/index.html
@@ -0,0 +1,215 @@
+---
+title: Array.prototype.indexOf()
+slug: Web/JavaScript/Reference/Global_Objects/Array/indexOf
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - indexof
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/indexOf
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>indexOf()</strong></code> メソッドは引数に与えられた内容と同じ内容を持つ最初の配列要素の添字を返します。存在しない場合は -1 を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-indexof.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.indexOf(<var>searchElement</var>[, <var>fromIndex</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>searchElement</var></code></dt>
+ <dd>検索する配列要素です。</dd>
+ <dt><code><var>fromIndex</var></code> {{optional_inline}}</dt>
+ <dd>検索を始める位置です。もしこの位置が配列の長さ以上の場合は、-1 が返され、配列は検索されません。負の数の場合、これは配列の末尾からのオフセットとみなされます。なお、この位置が負の数であっても、配列は前から後ろに検索されることに注意してください。指定された位置が 0 であれば、配列全体が検索されます。既定値は 0 (配列全体を検索) です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>見つかった最初の配列要素の添字です。見つからなかった場合は <strong>-1</strong> です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>indexOf()</code> は <code><var>searchElement</var></code> と配列の要素を <a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">厳密等価</a> (三重イコール演算子 <code>===</code> で使われるのと同じ方法) を使って比較します。</p>
+
+<div class="blockIndicator note">
+<p><strong>メモ:</strong> String メソッドについては、{{jsxref("String.prototype.indexOf()")}} を参照してください。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_indexOf" name="Using_indexOf">indexOf() の使用</h3>
+
+<p>以下の例は <code>indexOf()</code> を使って、配列中のある値の位置を探しています。</p>
+
+<pre class="brush: js notranslate">var array = [2, 9, 9];
+array.indexOf(2); // 0
+array.indexOf(7); // -1
+array.indexOf(9, 2); // 2
+array.indexOf(2, -1); // -1
+array.indexOf(2, -3); // 0
+</pre>
+
+<h3 id="Finding_all_the_occurrences_of_an_element" name="Finding_all_the_occurrences_of_an_element">ある要素の存在をすべて見つける</h3>
+
+<pre class="brush: js notranslate">var indices = [];
+var array = ['a', 'b', 'a', 'c', 'a', 'd'];
+var element = 'a';
+var idx = array.indexOf(element);
+while (idx != -1) {
+ indices.push(idx);
+ idx = array.indexOf(element, idx + 1);
+}
+console.log(indices);
+// [0, 2, 4]
+</pre>
+
+<h3 id="Finding_if_an_element_exists_in_the_array_or_not_and_updating_the_array" name="Finding_if_an_element_exists_in_the_array_or_not_and_updating_the_array">要素が配列内に存在するかどうかを調べ、配列を更新する</h3>
+
+<pre class="brush: js notranslate">function updateVegetablesCollection (veggies, veggie) {
+ if (veggies.indexOf(veggie) === -1) {
+ veggies.push(veggie);
+ console.log('New veggies collection is : ' + veggies);
+ } else if (veggies.indexOf(veggie) &gt; -1) {
+ console.log(veggie + ' already exists in the veggies collection.');
+ }
+}
+
+var veggies = ['potato', 'tomato', 'chillies', 'green-pepper'];
+
+updateVegetablesCollection(veggies, 'spinach');
+// New veggies collection is : potato,tomato,chillies,green-pepper,spinach
+updateVegetablesCollection(veggies, 'spinach');
+// spinach already exists in the veggies collection.
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>indexOf()</code> メソッドは ECMA-262 第 5 版で追加されたものであり、すべてのブラウザーで動作するわけではありません。次のコードをスクリプトの先頭に追加することにより、<code>indexOf()</code> がネイティブでサポートされていない環境でも、これが使用可能となります。これは ECMA-262 第 5 版で定められたアルゴリズムと完全に同じものです。{{jsxref("Global_Objects/TypeError", "TypeError")}} と {{jsxref("Math.abs()")}} がオリジナルの値を持つ事を仮定しています。</p>
+
+<pre class="brush: js notranslate">// This version tries to optimize by only checking for "in" when looking for undefined and
+// skipping the definitely fruitless NaN search. Other parts are merely cosmetic conciseness.
+// Whether it is actually faster remains to be seen.
+if (!Array.prototype.indexOf)
+ Array.prototype.indexOf = (function(Object, max, min) {
+ "use strict"
+ return function indexOf(member, fromIndex) {
+ if (this === null || this === undefined)
+ throw TypeError("Array.prototype.indexOf called on null or undefined")
+
+ var that = Object(this), Len = that.length &gt;&gt;&gt; 0, i = min(fromIndex | 0, Len)
+ if (i &lt; 0) i = max(0, Len + i)
+ else if (i &gt;= Len) return -1
+
+ if (member === void 0) { // undefined
+ for (; i !== Len; ++i) if (that[i] === void 0 &amp;&amp; i in that) return i
+ } else if (member !== member) { // NaN
+ return -1 // Since NaN !== NaN, it will never be found. Fast-path it.
+ } else // all else
+ for (; i !== Len; ++i) if (that[i] === member) return i
+
+ return -1 // if the value was not found, then return -1
+ }
+ })(Object, Math.max, Math.min)
+</pre>
+
+<p>ですが、ECMA 標準で定義された技術的な部分に興味があり、パフォーマンスや簡潔さを意識しない場合、以下のような、より説明的なポリフィルが役立つことがあるでしょう。</p>
+
+<pre class="brush: js notranslate">// Production steps of ECMA-262, Edition 5, 15.4.4.14
+// Reference: http://es5.github.io/#x15.4.4.14
+if (!Array.prototype.indexOf) {
+ Array.prototype.indexOf = function(searchElement, fromIndex) {
+ "use strict";
+ var k;
+
+ // 1. ToObject に this 値を引数として渡した結果を
+ // o とします。
+ if (this == null) {
+ throw new TypeError('"this" is null or not defined');
+ }
+
+ var o = Object(this);
+
+ // 2. "length" を引数として o の Get 内部メソッドを呼んだ結果を
+ // lenValue とします。
+ // 3. ToUint32(lenValue) を len とします。
+ var len = o.length &gt;&gt;&gt; 0;
+
+ // 4. len が 0 の場合、-1 を返します。
+ if (len === 0) {
+ return -1;
+ }
+
+ // 5. n を fromIndex 引数が存在する場合は
+ // ToInteger(fromIndex)、存在しない場合は 0 とします。
+ var n = fromIndex | 0;
+
+ // 6. n が len 以上の場合 -1 を返します。
+ if (n &gt;= len) {
+ return -1;
+ }
+
+ // 7. n が 0 以上の場合 k を n とします。
+ // 8. n が 0 未満の場合 k を len - abs(n) とします。
+ // k が 0 未満の場合 k を 0 とします。
+ k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
+
+ // 9. k が len 未満の間は以下を繰り返します。
+ for (; k &lt; len; k++) {
+ // a. Pk を ToString(k) とします。
+ // これは暗黙的に in 演算子の左辺値です。
+ // b. kPresent を Pk を引数として o の
+ // HasProperty 内部メソッドを呼んだ結果とします。
+ // このステップは c と組み合わせることができます。
+ // c. kPresent が真の場合
+ // i. elementK を ToString(k) を引数として
+ // o の [[Get]] 内部メソッドを呼んだ結果とします。
+ // ii. same を searchElement と elementK で
+ // 厳密な同一比較アルゴリズムを行った結果とします。
+ // iii. same が真の場合 k を返します。
+ if (k in o &amp;&amp; o[k] === searchElement)
+ return k;
+ }
+ return -1;
+ };
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.indexOf")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.lastIndexOf()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.indexOf()")}}</li>
+ <li>{{jsxref("String.prototype.indexOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/input/index.html b/files/ja/web/javascript/reference/global_objects/array/input/index.html
new file mode 100644
index 0000000000..166ed28656
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/input/index.html
@@ -0,0 +1,25 @@
+---
+title: input
+slug: Web/JavaScript/Reference/Global_Objects/Array/input
+---
+<p>
+</p><p>{{ 英語版章題("Summary") }}
+</p>
+<h3 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81"> 概要 </h3>
+<p>正規表現マッチにより作成された配列において、正規表現がマッチを行った元の文字列を反映します。
+</p>
+<table class="fullwidth-table">
+<tbody><tr>
+<td class="header" colspan="2"><a href="ja/Core_JavaScript_1.5_Reference/Global_Objects/Array">Array</a> のプロパティ</td>
+</tr>
+<tr>
+<td colspan="2"><b>静的</b></td>
+</tr>
+<tr>
+<td>実装されたバージョン:</td>
+<td>JavaScript 1.2, NES 3.0</td>
+</tr>
+</tbody></table>
+<div class="noinclude">
+</div>
+{{ languages( { "en": "en/Core_JavaScript_1.5_Reference/Global_Objects/Array/input", "fr": "fr/R\u00e9f\u00e9rence_de_JavaScript_1.5_Core/Objets_globaux/Array/input", "pl": "pl/Dokumentacja_j\u0119zyka_JavaScript_1.5/Obiekty/Array/input" } ) }}
diff --git a/files/ja/web/javascript/reference/global_objects/array/isarray/index.html b/files/ja/web/javascript/reference/global_objects/array/isarray/index.html
new file mode 100644
index 0000000000..baf6a3d87a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/isarray/index.html
@@ -0,0 +1,120 @@
+---
+title: Array.isArray()
+slug: Web/JavaScript/Reference/Global_Objects/Array/isArray
+tags:
+ - Array
+ - ECMAScript5
+ - JavaScript
+ - Method
+ - Reference
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/isArray
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Array.isArray()</strong></code> メソッドは、渡された値が {{jsxref("Array")}} かどうかを判断します。</p>
+
+<pre class="brush: js notranslate">Array.isArray([1, 2, 3]); // true
+Array.isArray({foo: 123}); // false
+Array.isArray('foobar'); // false
+Array.isArray(undefined); // false
+</pre>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Array.isArray(<var>value</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><var>value</var></dt>
+ <dd>チェックするオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>値が {{jsxref("Array")}} の場合は <code>true</code> です。そうでなければ  <code>false</code> を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>値が {{jsxref("Array")}} の場合は <code>true</code> が返ります。それ以外の場合は <code>false</code> が返ります。</p>
+
+<p>詳しくは、<a href="http://web.mit.edu/jwalden/www/isArray.html">“Determining with absolute accuracy whether or not a JavaScript object is an array”</a> を参照してください。{{jsxref("TypedArray")}} のインスタンスが与えられると、常に <code>false</code> が返されます。</p>
+
+
+<h2 id="Polyfill" name="Polyfill">Polyfill</h2>
+
+<p>次のコードを他のコードよりも前に記述する事により、ネイティブで実装されていなくても、<code>Array.isArray()</code> が使用可能になります。</p>
+
+<pre class="brush: js notranslate">if (!Array.isArray) {
+ Array.isArray = function(arg) {
+ return Object.prototype.toString.call(arg) === '[object Array]';
+ };
+}
+</pre>
+
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js notranslate">// 以下の呼び出しはすべて true を返します
+Array.isArray([]);
+Array.isArray([1]);
+Array.isArray(new Array());
+Array.isArray(new Array('a', 'b', 'c', 'd'));
+Array.isArray(new Array(3));
+// あまり知られていないものの Array.prototype は配列です
+Array.isArray(Array.prototype);
+
+// 以下の呼び出しはすべて false を返します
+Array.isArray();
+Array.isArray({});
+Array.isArray(null);
+Array.isArray(undefined);
+Array.isArray(17);
+Array.isArray('Array');
+Array.isArray(true);
+Array.isArray(false);
+Array.isArray({ __proto__: Array.prototype });
+</pre>
+
+<h3 id="instanceof_vs_isArray" name="instanceof_vs_isArray"><code>instanceof</code> と <code>isArray</code></h3>
+
+<p><code>Array</code> のインスタンスをチェックする際、<code>Array.isArray</code> は <code>iframes</code> で動作するので、<code>instanceof</code> よりも推奨されます。</p>
+
+<pre class="brush: js notranslate">var iframe = document.createElement('iframe');
+document.body.appendChild(iframe);
+xArray = window.frames[window.frames.length-1].Array;
+var arr = new xArray(1,2,3); // [1,2,3]
+
+// 配列を正しくチェックできます
+Array.isArray(arr); // true
+// iframe を介して配列を正しくチェックできません
+arr instanceof Array; // false
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.isarray', 'Array.isArray')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Array.isArray")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/join/index.html b/files/ja/web/javascript/reference/global_objects/array/join/index.html
new file mode 100644
index 0000000000..fc56325576
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/join/index.html
@@ -0,0 +1,96 @@
+---
+title: Array.prototype.join()
+slug: Web/JavaScript/Reference/Global_Objects/Array/join
+tags:
+ - Array
+ - JavaScript
+ - Join
+ - Method
+ - Prototype
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/join
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><code><strong>join()</strong></code> メソッドは、配列 (または<a href="/ja/docs/Web/JavaScript/Guide/Indexed_collections#Working_with_array-like_objects">配列風オブジェクト</a>) の全要素を順に連結した文字列を新たに作成して返します。区切り文字はカンマ、または指定された文字列です。配列にアイテムが一つしかない場合は、区切り文字を使用せずにアイテムが返されます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-join.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.join([<var>separator</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>separator</var></code> {{optional_inline}}</dt>
+ <dd>配列の各要素を区切る文字列を指定します。 separator は、必要であれば文字列に変換されます。省略した場合、配列の要素はカンマ (",") で区切られます。 <code>separator</code> に空文字列を渡した場合、すべての要素の間が区切り文字無しで繋がれます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列の全要素が連結された文字列です。 <code><em>arr</em>.length</code> が <code>0</code> だった場合、空の文字列が返されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>配列のすべての要素を文字列に変換したものが、1 個の文字列に繋がれます。</p>
+
+<div class="warning">
+<p>要素が <code>undefined</code> または <code>null</code> または空配列 <code>[]</code> であった場合は、空の文字列に変換されます。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Joining_an_array_three_different_ways" name="Joining_an_array_three_different_ways">3 通りの異なる形で配列をつなぐ</h3>
+
+<p>以下の例は、3 個の要素を持つ配列 <code>a</code> を作成し、デフォルト引数、カンマとスペース、そして「と」と空文字を使った 4 パターンの結合を行っています。</p>
+
+<pre class="brush: js notranslate">var a = ['風', '水', '火'];
+a.join(); // '風,水,火'
+a.join(', '); // '風, 水, 火'
+a.join(' + '); // '風 + 水 + 火'
+a.join(''); // '風水火'</pre>
+
+<h3 id="Joining_an_array-like_object" name="Joining_an_array-like_object">配列風オブジェクトを連結する</h3>
+
+<p>次の例は<font face="Arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">、</span></font>配列風オブジェクト ( <code><a href="/ja/docs/Web/JavaScript/Reference/Functions/arguments">arguments</a></code> )を連結するために、 <code>Array.prototype.join</code> を {{jsxref("Function.prototype.call")}} を使用して呼び出します。</p>
+
+<pre class="brush: js notranslate">function f(a, b, c) {
+ var s = Array.prototype.join.call(arguments);
+ console.log(s); // '<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="objectBox objectBox-string">1,a,true'</span></span></span></span>
+}
+f(1, 'a', true);
+//expected output: "1,a,true"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.join', 'Array.prototype.join')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.join")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.split()")}}</li>
+ <li>{{jsxref("Array.prototype.toString()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.join()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/keys/index.html b/files/ja/web/javascript/reference/global_objects/array/keys/index.html
new file mode 100644
index 0000000000..7125efbc1e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/keys/index.html
@@ -0,0 +1,70 @@
+---
+title: Array.prototype.keys()
+slug: Web/JavaScript/Reference/Global_Objects/Array/keys
+tags:
+ - Array
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/keys
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>keys()</code></strong> メソッドは、配列内の各インデックスのキーを含む、新しい <strong>Array Iterator</strong> オブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-keys.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.keys()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい {{jsxref("Array")}} のイテレーターオブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Key_iterator_doesnt_ignore_holes" name="Key_iterator_doesnt_ignore_holes">疎な配列を無視しないキーイテレーター</h3>
+
+<pre class="brush: js notranslate">var arr = ['a', , 'c'];
+var sparseKeys = Object.keys(arr);
+var denseKeys = [...arr.keys()];
+console.log(sparseKeys); // ['0', '2']
+console.log(denseKeys); // [0, 1, 2]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.keys', 'Array.prototype.keys')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.keys")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.values()")}}</li>
+ <li>{{jsxref("Array.prototype.entries()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復処理プロトコル </a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/lastindexof/index.html b/files/ja/web/javascript/reference/global_objects/array/lastindexof/index.html
new file mode 100644
index 0000000000..93281881bd
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/lastindexof/index.html
@@ -0,0 +1,148 @@
+---
+title: Array.prototype.lastIndexOf()
+slug: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf
+tags:
+ - Array
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Prototype
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>lastIndexOf()</code></strong> メソッドは、配列中で与えられた要素が見つかった最後の添字を返します。もし存在しなければ -1 を返します。配列は <code>fromIndex</code> から逆向きに検索されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-lastindexof.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.lastIndexOf(<var>searchElement</var>[, <var>fromIndex</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>searchElement</var></code></dt>
+ <dd>検索する配列要素です。</dd>
+ <dt><code><var>fromIndex</var></code> {{optional_inline}}</dt>
+ <dd>逆向きに検索し始める添字です。デフォルトは配列の長さ に 1 を引いた値( <code>arr.length - 1</code> )で、つまり配列全体が検索されます。もしこの添字が配列の長さ以上ならば、配列全体が検索されます。負の数の場合、これは配列の終わりからのオフセットとみなされます。この添字が負の数であってもなお、配列は後ろから前に検索されることに注意してください。負の添字の絶対値が配列の長さを超えた場合、-1 が返され、配列は検索されません。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列内の一致した要素の最後の位置です。見つからなかった場合は <strong>-1</strong> です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>lastIndexOf</code> は <code><var>searchElement</var></code> と配列の要素を <a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">厳密等価</a> (三重イコール演算子 <code>===</code> で使われるのと同じ方法) を使って比較します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_lastIndexOf" name="Using_lastIndexOf">lastIndexOf() の使用</h3>
+
+<p><code>lastIndexOf</code> を使って配列中のある値の位置を探す例を以下に示します。</p>
+
+<pre class="brush: js notranslate">var numbers = [2, 5, 9, 2];
+numbers.lastIndexOf(2); // 3
+numbers.lastIndexOf(7); // -1
+numbers.lastIndexOf(2, 3); // 3
+numbers.lastIndexOf(2, 2); // 0
+numbers.lastIndexOf(2, -2); // 0
+numbers.lastIndexOf(2, -1); // 3
+</pre>
+
+<h3 id="Finding_all_the_occurrences_of_an_element" name="Finding_all_the_occurrences_of_an_element">ある要素の存在をすべて見つける</h3>
+
+<p>以下の例は <code>lastIndexOf</code> を使って、与えられた配列中のある値の添字すべてを探しています。{{jsxref("Array.prototype.push", "push")}} を使って、値が見つかる度に別の配列にその添字を追加しています。</p>
+
+<pre class="brush: js notranslate">var indices = [];
+var array = ['a', 'b', 'a', 'c', 'a', 'd'];
+var element = 'a';
+var idx = array.lastIndexOf(element);
+while (idx != -1) {
+ indices.push(idx);
+ idx = (idx &gt; 0 ? array.lastIndexOf(element, idx - 1) : -1);
+}
+
+console.log(indices);
+// [4, 2, 0]
+</pre>
+
+<p>ここで <code>idx == 0</code> の場合を分けて扱わないといけないことに注意してください。なぜなら、もし検索する値が配列の最初の要素にあると、その値は <code>fromIndex</code> パラメータにかかわらずいつもヒットしてしまうのです。これは {{jsxref("Array.prototype.indexOf", "indexOf")}} メソッドとは異なります。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>lastIndexOf</code> は ECMA-262 第 5 版に追加されたメソッドであり、他のバージョンの標準実装には存在しない場合があります。次のコードをスクリプトの先頭に追加することにより、<code>lastIndexOf</code> がネイティブでサポートされていない環境でも、これを使用する事が可能となります。これは ECMA-262 第 5 版で定められたアルゴリズムと全く同じものです。 {{jsxref("Object")}}、{{jsxref("TypeError")}}、{{jsxref("Number")}}、{{jsxref("Math.floor")}}、{{jsxref("Math.abs")}}、{{jsxref("Math.min")}}  が、それぞれオリジナルの値を持つことを仮定しています。</p>
+
+<pre class="brush: js notranslate">// Production steps of ECMA-262, Edition 5, 15.4.4.15
+// Reference: http://es5.github.io/#x15.4.4.15
+if (!Array.prototype.lastIndexOf) {
+ Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) {
+ 'use strict';
+
+ if (this === void 0 || this === null) {
+ throw new TypeError();
+ }
+
+ var n, k,
+ t = Object(this),
+ len = t.length &gt;&gt;&gt; 0;
+ if (len === 0) {
+ return -1;
+ }
+
+ n = len - 1;
+ if (arguments.length &gt; 1) {
+ n = Number(arguments[1]);
+ if (n != n) {
+ n = 0;
+ }
+ else if (n != 0 &amp;&amp; n != (1 / 0) &amp;&amp; n != -(1 / 0)) {
+ n = (n &gt; 0 || -1) * Math.floor(Math.abs(n));
+ }
+ }
+
+ for (k = n &gt;= 0 ? Math.min(n, len - 1) : len - Math.abs(n); k &gt;= 0; k--) {
+ if (k in t &amp;&amp; t[k] === searchElement) {
+ return k;
+ }
+ }
+ return -1;
+ };
+}
+</pre>
+
+<p>上記コードのアルゴリズムは Firefox または SpiderMonky の JavaScript エンジンで実際に使用されているものと同じもので、これには間違いなくエッジケースも含まれています。実際にアプリケーションの中でこれを使用する場合、こうしたエッジケースを無視するならば、より複雑でないコードで <code>fromIndex</code> を計算可能であるかもしれません。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.lastIndexOf")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.indexOf()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.lastIndexOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/length/index.html b/files/ja/web/javascript/reference/global_objects/array/length/index.html
new file mode 100644
index 0000000000..efb6157569
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/length/index.html
@@ -0,0 +1,125 @@
+---
+title: Array.length
+slug: Web/JavaScript/Reference/Global_Objects/Array/length
+tags:
+ - Array
+ - JavaScript
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/length
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>length</strong></code> は <code>Array</code> 型のインスタンスであるオブジェクトのプロパティで、配列の要素の数を設定または取得します。値は符号なし 32 ビット整数で、常に配列の最も大きなインデックスよりも数値的に大きくなります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-length.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>length</code> プロパティの値は正符号を持つ整数で、2 の 32 乗 (2<sup>32</sup>) 未満の値です。</p>
+
+<pre class="brush: js notranslate">var namelistA = new Array(4294967296); //2 to the 32nd power<sup> = </sup>4294967296
+var namelistC = new Array(-100) //negative sign
+
+console.log(namelistA.length); //RangeError: Invalid array length
+console.log(namelistC.length); //RangeError: Invalid array length
+
+
+
+var namelistB = [];
+namelistB.length = Math.pow(2,32)-1; //set array length less than 2 to the 32nd power
+console.log(namelistB.length);
+
+//4294967295
+</pre>
+
+<p><code>length</code> プロパティに値をセットすることで、いつでも配列を短縮することができます。<code>length</code> プロパティの値を現在より大きな値に変更すると、配列内の要素数も増加します。例えば <code>length</code> が現在 2 のところに 3 をセットすると、配列内の要素数は 3 になり、3番目の要素は反復処理できない空のスロットになります。</p>
+
+<pre class="brush: js notranslate">const arr = [1, 2];
+console.log(arr);
+// [ 1, 2 ]
+
+arr.length = 5; // 現在 2 の配列の長さを 5 に設定
+console.log(arr);
+// [ 1, 2, &lt;3 の空アイテム&gt; ]
+
+arr.forEach(element =&gt; console.log(element));
+// 1
+// 2
+</pre>
+
+<p>ご覧の通り、<code>length</code> プロパティは必ずしも配列内で定義された値の数を示しているわけではありません。詳細は <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array#Relationship_between_length_and_numerical_properties" title="length と数値プロパティとの関係"><code>length</code> と数値プロパティとの関係</a> をご覧ください。</p>
+
+<p>{{js_property_attributes(1, 0, 0)}}</p>
+
+<div>
+<ul>
+ <li><code>Writable</code>: この属性が <code>false</code> に設定されている場合、プロパティの値を変更することはできません。</li>
+ <li><code>Configurable</code>: この属性が <code>false</code> に設定されている場合、プロパティの削除や属性 (<code>Writable</code>, <code>Configurable</code>, <code>Enumerable</code>) の変更の試みは失敗します。</li>
+ <li><code>Enumerable</code>: この属性が <code>true</code> に設定されている場合、プロパティは <a href="/ja/docs/Web/JavaScript/Reference/Statements/for">for</a> や <a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in">for..in</a> ループ中で反復処理の対象にされます。</li>
+</ul>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Iterating_over_an_array" name="Iterating_over_an_array">配列を反復処理する</h3>
+
+<p>以下の例では、配列 <code>numbers</code> がいくつの要素を持っているかを知るために <code>length</code> プロパティを見ることで、配列を反復処理します。その際それぞれの値は 2 倍されます。</p>
+
+<pre class="brush: js notranslate">var numbers = [1, 2, 3, 4, 5];
+var length = numbers.length;
+for (var i = 0; i &lt; length; i++) {
+ numbers[i] *= 2;
+}
+// numbers は [2, 4, 6, 8, 10] となった
+</pre>
+
+<h3 id="Shortening_an_array" name="Shortening_an_array">配列の短縮</h3>
+
+<p>以下の例は配列 <code>numbers</code> の要素数が 3 より大きいかどうかを調べて、大きいならその <code>length</code> を 3 としています。</p>
+
+<pre class="brush: js notranslate">var numbers = [1, 2, 3, 4, 5];
+
+if (numbers.length &gt; 3) {
+ numbers.length = 3;
+}
+
+console.log(numbers); // [1, 2, 3]
+console.log(numbers.length); // 3
+</pre>
+
+<h3 id="固定長の空の配列を作成">固定長の空の配列を作成</h3>
+
+<pre class="brush: js notranslate">var numbers = [];
+numbers.length = 3;
+console.log(numbers); // [undefined, undefined, undefined]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-properties-of-array-instances-length', 'Array.length')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div class="hidden">The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</div>
+
+<p>{{Compat("javascript.builtins.Array.length")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/map/index.html b/files/ja/web/javascript/reference/global_objects/array/map/index.html
new file mode 100644
index 0000000000..8d82a82e72
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/map/index.html
@@ -0,0 +1,366 @@
+---
+title: Array.prototype.map()
+slug: Web/JavaScript/Reference/Global_Objects/Array/map
+tags:
+ - Array
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/map
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><code><strong>map()</strong></code> メソッドは、与えられた関数を配列のすべての要素に対して呼び出し、その結果からなる<strong>新しい配列を生成します</strong>。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-map.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">let <var>new_array</var> = <var>arr</var>.map(function <var>callback</var>( <var>currentValue</var>[, <var>index</var>[, <var>array</var>]]) {
+ // 新しい配列の要素を返す
+}[, <var>thisArg</var>])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>
+ <p><code><var>arr</var></code> の要素ごとに呼び出される関数です。 <code><var>callback</var></code> が実行されるたびに、返された値が <code><var>new_array</var></code> に追加されます。</p>
+
+ <p><code><var>callback</var></code> 関数は以下の引数を受け付けます。</p>
+
+ <dl>
+ <dt><code><var>currentValue</var></code></dt>
+ <dd>現在処理中の要素の値です。</dd>
+ <dt><code><var>index</var></code>{{optional_inline}}</dt>
+ <dd>現在処理中の要素の配列内における添字です。</dd>
+ <dt><code><var>array</var></code>{{optional_inline}}</dt>
+ <dd><code>map</code> が実行されている配列です。</dd>
+ </dl>
+ </dd>
+ <dt><code>thisArg</code>{{optional_inline}}</dt>
+ <dd><code><var>callback</var></code> を実行するときに <code>this</code> として使う値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた関数を配列のすべての要素に対して呼び出し、その結果からなる新しい配列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>map</code> は、与えられた <code><var>callback</var></code> 関数を配列の順番通りに、<strong>各要素に対して一度ずつ呼び出し</strong>、その結果から新しい配列を生成します。 <code><var>callback</var></code> は、値が代入されている配列の要素に対してのみ呼び出されます ({{jsxref("undefined")}} が代入されているものも含みます)。</p>
+
+<p>これは配列の中で存在しない要素、すなわち以下の要素に対しては呼び出し<em>ません</em>。</p>
+
+<ul>
+ <li>設定されたことがない添字</li>
+ <li>削除された要素</li>
+ <li>値を割り当てられたことがない要素</li>
+</ul>
+
+<h3 id="When_not_to_use_map" name="When_not_to_use_map">map() を使用すべきではない場合</h3>
+
+<p><code>map</code> は新しい配列を作成するので、返された配列を使わない場合、map を使うのはパターンに合いません。代わりに {{jsxref("Array/forEach", "forEach")}} または {{jsxref("for...of", "for-of")}} を使用してください。</p>
+
+<p><code>map</code> を使用するべきでないのは以下の場合です。</p>
+
+<ul>
+ <li>返された配列を使用しない場合</li>
+ <li>コールバックから値を返さない場合</li>
+</ul>
+
+<h3 id="Parameters_in_Detail" name="Parameters_in_Detail">引数の詳細</h3>
+
+<p><code><var>callback</var></code> は、要素の値、要素の添字、走査されている Array オブジェクトという 3 つの引数をともなって呼び出されます。</p>
+
+<p><code>thisArg</code> 引数が与えられた場合は、それがコールバックの <code>this</code> として使用されます。引数が省略された場合は、 {{jsxref("undefined")}} が <code>this</code> の値として使用されます。 <code><var>callback</var></code> によって最終的に識別できる <code>this</code> の値は、<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数における通常の <code>this</code> を決定するルール</a>に従って決まります。</p>
+
+<p><code>map</code> は呼び出された配列を変化させません (ただし、呼び出された <code><var>callback</var></code> が配列を変更する可能性はあります)。</p>
+
+<p><code>map</code> によって処理される要素の範囲は、 <code><var>callback</var></code> が最初に呼び出される前に設定されます。 <code>map</code> の呼び出しが開始された後に追加された要素に対しては、 <code><var>callback</var></code> は実行されません。既存の配列要素が変更されたり、削除された場合、 <code><var>callback</var></code> に渡される値は <code>map</code> がそれらを訪れた時点での値になり、 <code>map</code> が削除された要素を訪問することはありません。</p>
+
+<p>仕様書で定義されているアルゴリズムによって、 <code>map</code> が呼び出された配列がまばらである場合、結果の配列もまばらとなり、要素を空欄のままにします。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>map</code> は ECMA-262 標準に最近追加されたものである為、標準準拠を謳う実装中に存在しない場合があります。</p>
+
+<p>次のコードをスクリプトの先頭に挿入すると、 <code>map</code> にネイティブで対応していない ECMA-262 実装でも <code>map</code> を使用できるようになります。このアルゴリズムは ECMA-262 第 5 版で指示されたアルゴリズムと全く同じものです。 {{jsxref("Object")}}、{{jsxref("TypeError")}}、{{jsxref("Array")}} はそれぞれオリジナルの値を持ち、またそれらの {{jsxref("Function.prototype.call")}} のオリジナルの値として評価されます。</p>
+
+<pre class="brush: js notranslate">// Production steps of ECMA-262, Edition 5, 15.4.4.19
+// Reference: http://es5.github.io/#x15.4.4.19
+if (!Array.prototype.map) {
+
+ Array.prototype.map = function(callback/*, thisArg*/) {
+
+ var T, A, k;
+
+ if (this == null) {
+ throw new TypeError('this is null or not defined');
+ }
+
+ // 1. Let O be the result of calling ToObject passing the |this|
+ // value as the argument.
+ var O = Object(this);
+
+ // 2. Let lenValue be the result of calling the Get internal
+ // method of O with the argument "length".
+ // 3. Let len be ToUint32(lenValue).
+ var len = O.length &gt;&gt;&gt; 0;
+
+ // 4. If IsCallable(callback) is false, throw a TypeError exception.
+ // See: http://es5.github.com/#x9.11
+ if (typeof callback !== 'function') {
+ throw new TypeError(callback + ' is not a function');
+ }
+
+ // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
+ if (arguments.length &gt; 1) {
+ T = arguments[1];
+ }
+
+ // 6. Let A be a new array created as if by the expression new Array(len)
+ // where Array is the standard built-in constructor with that name and
+ // len is the value of len.
+ A = new Array(len);
+
+ // 7. Let k be 0
+ k = 0;
+
+ // 8. Repeat, while k &lt; len
+ while (k &lt; len) {
+
+ var kValue, mappedValue;
+
+ // a. Let Pk be ToString(k).
+ // This is implicit for LHS operands of the in operator
+ // b. Let kPresent be the result of calling the HasProperty internal
+ // method of O with argument Pk.
+ // This step can be combined with c
+ // c. If kPresent is true, then
+ if (k in O) {
+
+ // i. Let kValue be the result of calling the Get internal
+ // method of O with argument Pk.
+ kValue = O[k];
+
+ // ii. Let mappedValue be the result of calling the Call internal
+ // method of callback with T as the this value and argument
+ // list containing kValue, k, and O.
+ mappedValue = callback.call(T, kValue, k, O);
+
+ // iii. Call the DefineOwnProperty internal method of A with arguments
+ // Pk, Property Descriptor
+ // { Value: mappedValue,
+ // Writable: true,
+ // Enumerable: true,
+ // Configurable: true },
+ // and false.
+
+ // In browsers that support Object.defineProperty, use the following:
+ // Object.defineProperty(A, k, {
+ // value: mappedValue,
+ // writable: true,
+ // enumerable: true,
+ // configurable: true
+ // });
+
+ // For best browser support, use the following:
+ A[k] = mappedValue;
+ }
+ // d. Increase k by 1.
+ k++;
+ }
+
+ // 9. return A
+ return A;
+ };
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Mapping_an_array_of_numbers_to_an_array_of_square_roots" name="Mapping_an_array_of_numbers_to_an_array_of_square_roots">数値の配列を平方根の配列にマッピング</h3>
+
+<p>次のコードは、数値からなる配列を取り、それらの数値の平方根からなる新しい配列を生成します。</p>
+
+<pre class="brush: js notranslate">let numbers = [1, 4, 9]
+let roots = numbers.map(function(num) {
+ return Math.sqrt(num)
+})
+// roots の内容は [1, 2, 3] となる
+// numbers の内容は [1, 4, 9] のまま
+</pre>
+
+<h3 id="Using_map_to_reformat_objects_in_an_array" name="Using_map_to_reformat_objects_in_an_array">map を使用して配列内のオブジェクトを再フォーマット</h3>
+
+<p>次のコードは、オブジェクトの配列を受け取り、新たにフォーマットされた新しい配列を生成しています。</p>
+
+<pre class="brush: js notranslate">let kvArray = [{key: 1, value: 10},
+ {key: 2, value: 20},
+ {key: 3, value: 30}]
+
+let reformattedArray = kvArray.map(obj =&gt; {
+ let rObj = {}
+ rObj[obj.key] = obj.value
+ return rObj
+})
+// フォーマットされた配列の内容は [{1: 10}, {2: 20}, {3: 30}]となる
+
+// kvArray は
+// [{key: 1, value: 10},
+// {key: 2, value: 20},
+// {key: 3, value: 30}]
+// のまま</pre>
+
+<h3 id="Mapping_an_array_of_numbers_using_a_function_containing_an_argument" name="Mapping_an_array_of_numbers_using_a_function_containing_an_argument">引数を含む関数を使用して数値配列をマッピングする</h3>
+
+<p>次のコードは、1 つの引数を必要とする関数を使用するときに <code>map</code> がどのように動作するかを示しています。引数は元の配列を通した <code>map</code> ループとして、配列の各要素に自動的に割り当てられます。</p>
+
+<pre class="brush: js notranslate">let numbers = [1, 4, 9]
+let doubles = numbers.map(function(num) {
+ return num * 2
+})
+
+// doubles is now [2, 8, 18]
+// numbers is still [1, 4, 9]
+</pre>
+
+<h3 id="Using_map_generically" name="Using_map_generically">汎用的な map の使用</h3>
+
+<p>以下の例は、各文字を表す ASCII エンコードのバイトの配列を得るために {{jsxref("String")}} に map を使う方法を示しています。:</p>
+
+<pre class="brush: js notranslate">let map = Array.prototype.map
+let a = map.call('Hello World', function(x) {
+ return x.charCodeAt(0)
+})
+// a の内容は [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100] となる
+</pre>
+
+<h3 id="Mapping_an_array_of_numbers_using_a_function_containing_an_argument" name="Mapping_an_array_of_numbers_using_a_function_containing_an_argument">汎用的な map の使用: querySelectorAll</h3>
+
+<p>この例では、<code>querySelectorAll</code> によって収集されたオブジェクトのコレクションを反復処理する方法を示します。これは <code>querySelectorAll</code> が <code>NodeList</code> (オブジェクトの集合) を返すためです。</p>
+
+<p>この場合、画面に選択されているすべての <code>option</code> の値を返します。</p>
+
+<pre class="brush: js notranslate">let elems = document.querySelectorAll('select option:checked')
+let values = Array.prototype.map.call(elems, function(obj) {
+ return obj.value
+})
+</pre>
+
+<p>もっと簡単な方法は {{jsxref("Array.from()")}} メソッドを使用することです。</p>
+
+<h3 id="Tricky_use_case" name="Tricky_use_case">トリッキーな使用例</h3>
+
+<p>(<a href="http://www.wirfs-brock.com/allen/posts/166">このブログの記事に創発されました</a>)</p>
+
+<p>コールバック関数は第一引数 (変換するべき要素) だけを意識して指定するケースがほとんどだと思います。しかし一般的に第一引数しか使わないような関数でも、実は追加のオプション引数を受け取っている場合があります。これは混乱につながる可能性があります。</p>
+
+<p>まずこの例をご覧ください。</p>
+
+<pre class="brush: js notranslate">["1", "2", "3"].map(parseInt)</pre>
+
+<p>返値は <code>[1, 2, 3]</code> となりそうですが、実際には <code>[1, NaN, NaN]</code> となります。</p>
+
+<p>{{jsxref("parseInt")}} は大抵一つの引数のみで使われますが、実際には二つの引数を取っています。一つ目は数値文字列、二つ目は基数です。 <code>Array.prototype.map</code> はコールバックに次の 3 つの引数を与えています。</p>
+
+<ul>
+ <li>その要素</li>
+ <li>その添字</li>
+ <li>その配列</li>
+</ul>
+
+<p>{{jsxref("parseInt")}} は三つ目の引数を無視しますが、二つ目の引数は無視<em>しません</em>。これは混乱を起こす可能性があるソースです。</p>
+
+<p>繰り返し手順の正確な例は以下の通りです。</p>
+
+<pre class="brush: js notranslate">// parseInt(string, radix) -&gt; map(parseInt(value, index))
+/* first iteration (index is 0): */ parseInt("1", 0) // 1
+/* second iteration (index is 1): */ parseInt("2", 1) // NaN
+/* third iteration (index is 2): */ parseInt("3", 2) // NaN
+</pre>
+
+<p>解決策を考えてみましょう。</p>
+
+<pre class="brush: js notranslate">function returnInt(element) {
+ return parseInt(element, 10)
+}
+
+['1', '2', '3'].map(returnInt); // [1, 2, 3]
+// 期待した通り、数値の配列が返る。
+
+// アロー関数構文を使って、より簡潔に上記と同じ結果を得ることが出来ます。
+['1', '2', '3'].map( str =&gt; parseInt(str) )
+
+// ちなみにこの命題ではもっと簡単に同じ結果を得る方法があります。
+['1', '2', '3'].map(Number) // [1, 2, 3]
+
+// parseInt() とは違って、 Number() は float または (解決した) 指数表現を返します。
+['1.1', '2.2e2', '3e300'].map(Number) // [1.1, 220, 3e+300]
+
+// 比較のために、上記の配列に parseInt() を用いると次のようになります。
+['1.1', '2.2e2', '3e300'].map( str =&gt; parseInt(str) ) // [1, 2, 3]
+</pre>
+
+<p>{{jsxref("parseInt")}} を引数として呼び出された map メソッドの代替出力の 1 つは、次のように実行されます。</p>
+
+<pre class="brush: js notranslate">let xs = ['10', '10', '10']
+
+xs = xs.map(parseInt)
+
+console.log(xs)
+// 実際の結果 10,NaN,2 は上記の説明からすると意外なものかもしれません。</pre>
+
+<h3 id="undefined_を持つマップされた配列">undefined を持つマップされた配列</h3>
+
+<p>{{jsxref("undefined")}} または nothing を返すと、以下のものを返します。</p>
+
+<pre class="brush: js notranslate">let numbers = [1, 2, 3, 4]
+let filteredNumbers = numbers.map(function(num, index) {
+ if (index &lt; 3) {
+ return num
+ }
+})
+// index は 0 から始まるので、 filterNumbers は 1,2,3 および undefined になります。
+// filteredNumbers は [1, 2, undefined, undefined]
+// numbers は [1, 2, 3, 4] のまま
+
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.map', 'Array.prototype.map')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.map")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Map")}} object</li>
+ <li>{{jsxref("Array.from()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/observe/index.html b/files/ja/web/javascript/reference/global_objects/array/observe/index.html
new file mode 100644
index 0000000000..e480baf2e3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/observe/index.html
@@ -0,0 +1,89 @@
+---
+title: Array.observe()
+slug: Web/JavaScript/Reference/Global_Objects/Array/observe
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Obsolete
+translation_of: Archive/Web/JavaScript/Array.observe
+---
+<div>{{JSRef}} {{obsolete_header}}</div>
+
+<p><strong><code>Array.observe()</code></strong> メソッドは、配列への変更を非同期で監視するために使用されました。オブジェクト用の {{jsxref("Object.observe()")}} と似ています。変更内容は、発生した順番に時系列で提供されます。accept type list <code>["add", "update", "delete", "splice"]</code> で呼び出された <code>Object.observe()</code> と同等です。しかしながら、この API の使用は非推奨となり、ブラウザから削除されています。代わりに、一般的な {{jsxref("Proxy")}} オブジェクトを使用してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Array.observe(<var>arr</var>, <var>callback</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>arr</code></dt>
+ <dd>監視される配列。</dd>
+ <dt><code>callback</code></dt>
+ <dd>変更されるたびに毎回呼び出される関数。次の引数を持ちます:
+ <dl>
+ <dt><code>changes</code></dt>
+ <dd>変更されたオブジェクトの配列。変更オブジェクトのプロパティは次の通り:
+ <ul>
+ <li><strong><code>name</code></strong>: 変更されたプロパティの名前。</li>
+ <li><strong><code>object</code></strong>: 変更後の配列。</li>
+ <li><strong><code>type</code></strong>: 変更の種類を示す文字列。 <code>"add"</code>, <code>"update"</code>, <code>"delete"</code>, <code>"splice"</code> のいずれか一つ。</li>
+ <li><strong><code>oldValue</code></strong>: <code>"update"</code>, <code>"delete"</code> の場合のみ、変更前の値。</li>
+ <li><strong><code>index</code></strong>: <code>"splice"</code> の場合のみ。変更が発生したインデックス。</li>
+ <li><strong><code>removed</code></strong>: <code>"splice"</code> の場合のみ。取り除かれた要素の配列。</li>
+ <li><strong><code>addedCount</code></strong>: <code>"splice"</code> の場合のみ。追加された要素の数。</li>
+ </ul>
+ </dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>callback</code> 関数は、<code>arr</code> に変更が発生する度に呼ばれます。すべての変更が発生した順に配列として渡されます。</p>
+
+<div class="note">
+<p><a href="/docs/Web/JavaScript/Reference/Global_Objects/Array/pop"><code>Array.prototype.pop()</code></a> など、Array メソッド経由の変更は、<code>"splice"</code> 変更として報告されます。配列の長さが変更されないインデックスの割り当て変更は、<code>"update"</code> 変更として報告されます。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id='="Logging_different_change_types"' name='="Logging_different_change_types"'>異なる変更のログを取る</h3>
+
+<pre class="brush: js">var arr = ['a', 'b', 'c'];
+
+Array.observe(arr, function(changes) {
+ console.log(changes);
+});
+
+arr[1] = 'B';
+// [{type: 'update', object: , name: '1', oldValue: 'b'}]
+
+arr[3] = 'd';
+// [{type: 'splice', object: , index: 3, removed: [], addedCount: 1}]
+
+arr.splice(1, 2, 'beta', 'gamma', 'delta');
+// [{type: 'splice', object: , index: 1, removed: ['B', 'c', 'd'], addedCount: 3}]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<p><a href="https://github.com/arv/ecmascript-object-observe">Strawman proposal specification</a>.</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>
+<p>{{Compat("javascript.builtins.Array.observe")}}</p>
+</div>
+
+<p> </p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="//stackoverflow.com/q/29269057/778272">Under what condition would Array.observe's “add” event trigger?</a></li>
+ <li>{{jsxref("Array.unobserve()")}} {{obsolete_inline}}</li>
+ <li>{{jsxref("Object.observe()")}} {{obsolete_inline}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/of/index.html b/files/ja/web/javascript/reference/global_objects/array/of/index.html
new file mode 100644
index 0000000000..d6ce7c06df
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/of/index.html
@@ -0,0 +1,107 @@
+---
+title: Array.of()
+slug: Web/JavaScript/Reference/Global_Objects/Array/of
+tags:
+ - Array
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/of
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Array.of()</strong></code> メソッドは、引数の数や型にかかわらず、可変長引数から、新しい <code>Array</code> インスタンスを生成します。</p>
+
+<p><code><strong>Array.of()</strong></code> と <code>Array</code> コンストラクタの違いは整数引数の扱いにあります。<code><strong>Array.of(7)</strong></code> は単一の要素、<code>7</code> を持つ配列を作成しますが、<code><strong>Array(7)</strong></code> は <code>length</code> プロパティが 7 の空の配列を作成します(<strong>注:</strong> これは実際の <code>undefined</code> の値を持つスロットではなく、7 つの空のスロットの配列を意味します)。</p>
+
+<pre class="brush: js notranslate">Array.of(7); // [7]
+Array.of(1, 2, 3); // [1, 2, 3]
+
+Array(7); // 7 つの空のスロットの配列
+Array(1, 2, 3); // [1, 2, 3]
+</pre>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Array.of(<var>element0</var>[, <var>element1</var>[, ...[, <var>elementN</var>]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>element<em>N</em></var></code></dt>
+ <dd>生成する配列の要素。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい {{jsxref("Array")}} インスタンス。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>この関数は、ECMAScript 標準の第 6 版の一部です。詳しい情報は、<a href="https://gist.github.com/rwaldron/1074126"><code>Array.of</code> と <code>Array.from</code> 提案</a>、<a href="https://gist.github.com/rwaldron/3186576"><code>Array.of</code> 互換コード</a> をご覧ください。</p>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+ <li>{{jsxref("Array.from()")}}</li>
+ <li>{{jsxref("TypedArray.of()")}}</li>
+</ul>
+
+
+<h2 id="ポリフィル">ポリフィル</h2>
+
+<p>以下のコードを他のコードよりも前に記述する事により、ネイティブで実装されていなくても、<code>Array.of()</code> が使用可能になります。</p>
+
+<pre class="brush: js notranslate">if (!Array.of) {
+ Array.of = function() {
+ return Array.prototype.slice.call(arguments);
+  // Or
+ let vals = [];
+  for(let prop in arguments){
+ vals.push(arguments[prop]);
+  }
+ return vals;
+ }
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Array.of_の使用">Array.of の使用</h3>
+
+<pre class="brush: js notranslate">Array.of(1); // [1]
+Array.of(1, 2, 3); // [1, 2, 3]
+Array.of(undefined); // [undefined]
+</pre>
+
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.of', 'Array.of')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Array.of")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+ <li>{{jsxref("Array.from()")}}</li>
+ <li>{{jsxref("TypedArray.of()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/pop/index.html b/files/ja/web/javascript/reference/global_objects/array/pop/index.html
new file mode 100644
index 0000000000..5c4aef66da
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/pop/index.html
@@ -0,0 +1,95 @@
+---
+title: Array.prototype.pop()
+slug: Web/JavaScript/Reference/Global_Objects/Array/pop
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/pop
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>pop()</code></strong> メソッドは、配列から<strong>最後</strong>の要素を取り除き、その要素を返します。このメソッドは配列の長さを変化させます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-pop.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arrName</var>.pop()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列の最後の要素。配列が空だった場合は、{{jsxref("undefined")}}。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>pop</code> メソッドは配列の最後の要素を取り除き、呼び出し元にその値を返します。</p>
+
+<p><code>pop</code> は意図的に汎用性を持たせています。つまり、このメソッドは配列に類似したオブジェクトに対して{{jsxref("Function.call", "呼び出し", "", 1)}}たり、{{jsxref("Function.apply", "適用し", "", 1)}}たりすることもできます。ゼロから始まる数値プロパティであり、連続した連なりの最後を反映している <code>length</code> プロパティを含まないオブジェクトでは効果がないかもしれません。</p>
+
+<p>空の配列に対して <code>pop()</code> を実行した場合は、{{jsxref("undefined")}} を返します。</p>
+
+<p>{{jsxref("Array.prototype.shift()")}} は <code>pop</code> と同様の動作をしますが、配列の最初の要素に適用されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Removing_the_last_element_of_an_array" name="Removing_the_last_element_of_an_array">配列の最後の要素を取り除く</h3>
+
+<p>以下のコードは、4 つの要素を含んだ配列 <code>myFish</code> を生成し、その後その最後の要素を取り除き、変数に代入しています。</p>
+
+<pre class="brush: js notranslate">var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
+
+var popped = myFish.pop();
+
+console.log(myFish); // ['angel', 'clown', 'mandarin' ]
+
+console.log(popped); // 'sturgeon'</pre>
+
+<h3 id="Using_apply_or_call_on_array-like_objects" name="Using_apply_or_call_on_array-like_objects">配列風のオブジェクトでの apply( ) や call ( ) の使用</h3>
+
+<p>以下のコードは、4 つの要素と長さのパラメータを含む配列のような <code>myFish</code> オブジェクトを作成し、最後の要素を削除して長さのパラメータをデクリメントします。</p>
+
+<pre class="brush: js notranslate">var myFish = {0:'angel', 1:'clown', 2:'mandarin', 3:'sturgeon', length: 4};
+
+var popped = Array.prototype.pop.call(myFish); //same syntax for using apply( )
+
+console.log(myFish); // {0:'angel', 1:'clown', 2:'mandarin', length: 3}
+
+console.log(popped); // 'sturgeon'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.pop', 'Array.prototype.pop')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.pop")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.push()")}}</li>
+ <li>{{jsxref("Array.prototype.shift()")}}</li>
+ <li>{{jsxref("Array.prototype.unshift()")}}</li>
+ <li>{{jsxref("Array.prototype.concat()")}}</li>
+ <li>{{jsxref("Array.prototype.splice()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/prototype/index.html b/files/ja/web/javascript/reference/global_objects/array/prototype/index.html
new file mode 100644
index 0000000000..dc20c31a41
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/prototype/index.html
@@ -0,0 +1,176 @@
+---
+title: Array.prototype
+slug: Web/JavaScript/Reference/Global_Objects/Array/prototype
+tags:
+ - Array
+ - JavaScript
+ - Junk
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/prototype
+---
+<div>{{JSRef}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Array")}} インスタンスは、 <code>Array.prototype</code> を継承しています。すべてのコンストラクターと同様に、コンストラクターの prototype オブジェクトを変更して、すべての {{jsxref("Array")}} インスタンスを変更することができます。例えば、新しいメソッドやプロパティを追加して、すべての <code>Array</code> オブジェクトを拡張することができます。例えば、これは{{Glossary("Polyfill", "ポリフィル")}}に使用されます。</p>
+
+<p>ただし、配列オブジェクトに標準外メソッドを追加すると、後で独自のコードに問題が発生したり、 <a href="https://developers.google.com/web/updates/2018/03/smooshgate">JavaScript への機能の追加</a>の際に問題が発生することがあります。</p>
+
+<p>豆知識: <code>Array.prototype</code> はそれ自体が {{jsxref("Array")}} です。</p>
+
+<pre class="brush: js notranslate">Array.isArray(Array.prototype); // true
+</pre>
+
+<p>{{js_property_attributes(0, 0, 0)}}</p>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt><code>Array.prototype.constructor</code></dt>
+ <dd>オブジェクトの prototype を生成する関数を指定します。</dd>
+ <dt>{{jsxref("Array.prototype.length")}}</dt>
+ <dd>配列内の要素数を反映します。</dd>
+ <dt>{{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}}</dt>
+ <dd><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/with">with</a></code> バインディングのスコープから除外されるプロパティ名を保持するシンボル。</dd>
+</dl>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<h3 id="Mutator_methods" name="Mutator_methods">Mutator メソッド</h3>
+
+<p>これらのメソッドは、配列を書き換えます。</p>
+
+<dl>
+ <dt>{{jsxref("Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内で配列内の連続した要素をコピーします。</dd>
+ <dt>{{jsxref("Array.prototype.fill()")}}</dt>
+ <dd>配列内の指定した開始位置から終了位置までの要素を固定値で埋めます。</dd>
+ <dt>{{jsxref("Array.prototype.pop()")}}</dt>
+ <dd>配列から最後の要素を取り除き、戻り値として返します。</dd>
+ <dt>{{jsxref("Array.prototype.push()")}}</dt>
+ <dd>配列の最後に 1 個以上の要素を追加し、新しい配列の長さを返します。</dd>
+ <dt>{{jsxref("Array.prototype.reverse()")}}</dt>
+ <dd>配列の要素の順番を逆転させます (最初の要素は最後に、最後の要素は最初になります)。</dd>
+ <dt>{{jsxref("Array.prototype.shift()")}}</dt>
+ <dd>配列から最初の要素を取り除き、その要素を返します。</dd>
+ <dt>{{jsxref("Array.prototype.sort()")}}</dt>
+ <dd>配列内で要素を整列し、配列を返します。</dd>
+ <dt>{{jsxref("Array.prototype.splice()")}}</dt>
+ <dd>配列に対して複数の要素を追加したり取り除いたりします。</dd>
+ <dt>{{jsxref("Array.prototype.unshift()")}}</dt>
+ <dd>配列の最初に 1 個以上の要素を追加し、配列の変更後の長さを返します。</dd>
+</dl>
+
+<h3 id="Accessor_methods" name="Accessor_methods">アクセサーメソッド</h3>
+
+<p>これらのメソッドは呼び出し対象の配列を書き換えず、配列を何らかの形で表したものを返します。</p>
+
+<dl>
+ <dt>{{jsxref("Array.prototype.concat()")}}</dt>
+ <dd>この配列に他の配列や値を結合して新しい配列を返します。</dd>
+ <dt>{{jsxref("Array.prototype.includes()")}}</dt>
+ <dd>この配列が特定の要素を含むかどうか判定し、その結果を <code>true</code> または <code>false</code> で返します。</dd>
+ <dt>{{jsxref("Array.prototype.indexOf()")}}</dt>
+ <dd>指定された値と等しい値を持つ最初の (添字の一番小さい) 要素の添字を返します。見つからない場合、-1 を返します。</dd>
+ <dt>{{jsxref("Array.prototype.join()")}}</dt>
+ <dd>配列のすべての要素を結合した文字列を返します。</dd>
+ <dt>{{jsxref("Array.prototype.lastIndexOf()")}}</dt>
+ <dd>指定された値と等しい値を持つ最後の (添字の一番大きい) 要素の添字を返します。見つからない場合、-1 を返します。</dd>
+ <dt>{{jsxref("Array.prototype.slice()")}}</dt>
+ <dd>配列の一部を取り出して新しい配列として返します。</dd>
+ <dt>{{jsxref("Array.prototype.toSource()")}} {{non-standard_inline}}</dt>
+ <dd>指定された配列を表す配列リテラルを返します。この値を使って新しい配列を作れます。{{jsxref("Object.prototype.toSource()")}} メソッドを上書きしています。</dd>
+ <dt>{{jsxref("Array.prototype.toString()")}}</dt>
+ <dd>配列とその要素を表す文字列を返します。{{jsxref("Object.prototype.toString()")}} メソッドを上書きしています。</dd>
+ <dt>{{jsxref("Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列とその要素を表すロケールに従った文字列を返します。{{jsxref("Object.prototype.toLocaleString()")}} メソッドを上書きしています。</dd>
+</dl>
+
+<h3 id="Iteration_methods" name="Iteration_methods">反復メソッド</h3>
+
+<p>いくつかのメソッドは、配列を処理する際にコールバックされる関数を引数に取ります。これらのメソッドが呼ばれる時、配列の <code>length</code> 値を一時記憶するため、コールバック中にこの長さを超えて追加された要素にはアクセスしません。配列に対するその他の変更 (要素の値の書き換えや削除) は、変更された要素にメソッドが後でアクセスした場合の操作結果に影響を及ぼす可能性があります。そのような場合におけるこれらのメソッドの振る舞いは正確に定義されていますが、コードの読者を混乱させないよう、その振る舞いに依存すべきではありません。配列を変化させなければならない場合は、代わりに新しい配列にコピーしてください。</p>
+
+<dl>
+ <dt>{{jsxref("Array.prototype.entries()")}}</dt>
+ <dd>新しい <code>Array Iterator</code> オブジェクトを返します。このオブジェクトは、配列中の各インデックスに対する key/value ペアを保持しています。</dd>
+ <dt>{{jsxref("Array.prototype.every()")}}</dt>
+ <dd>指定したテスト関数を配列中のすべての要素が満たした場合に <code>true</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.filter()")}}</dt>
+ <dd>指定したフィルタリング関数が <code>true</code> を返す、配列中の要素を格納した新しい配列を生成します。</dd>
+ <dt>{{jsxref("Array.prototype.find()")}}</dt>
+ <dd>指定したテスト関数を満たす、配列中の要素の値を返します。1 個も見つからない場合は <code>undefined</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.findIndex()")}}</dt>
+ <dd>指定したテスト関数を満たす、配列中の要素のインデックスを返します。1 個も見つからない場合は <code>-1</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.forEach()")}}</dt>
+ <dd>配列中のそれぞれの要素について関数を呼び出します。</dd>
+ <dt>{{jsxref("Array.prototype.keys()")}}</dt>
+ <dd>新しい <code>Array Iterator</code> を返します。このオブジェクトは配列中の各インデックスのキーを保持します。</dd>
+ <dt>{{jsxref("Array.prototype.map()")}}</dt>
+ <dd>配列内のすべての要素に対して与えられた関数を呼び出し、その結果を格納した新しい配列を生成します。</dd>
+ <dt>{{jsxref("Array.prototype.reduce()")}}</dt>
+ <dd>アキュムレータと配列内のすべての要素に対して (左から右の順で) 関数を適用し、単一の値に還元します。</dd>
+ <dt>{{jsxref("Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュムレータと配列内のすべての要素に対して (右から左の順で) 関数を適用し、単一の値に還元します。</dd>
+ <dt>{{jsxref("Array.prototype.some()")}}</dt>
+ <dd>指定したテスト関数を配列中の少なくとも 1 個の要素が満たした場合に <code>true</code> を返します。</dd>
+ <dt>{{jsxref("Array.prototype.values()")}}</dt>
+ <dd>新しい <code>Array Iterator</code> オブジェクトを返します。このオブジェクトは、配列中の各インデックスの値を保持します。</dd>
+ <dt>{{jsxref("Array.prototype.@@iterator()", "Array.prototype[@@iterator]()")}}</dt>
+ <dd>新しい <code>Array Iterator</code> オブジェクトを返します。このオブジェクトは、配列中の各インデックスの値を保持します。</dd>
+</dl>
+
+<h3 id="Generic_methods_non-standard" name="Generic_methods_(non-standard)">ジェネリックメソッド (非標準)</h3>
+
+<p>JavaScript の <code>Array</code> オブジェクト上の多くのメソッドは、配列型 (array-like) のあらゆるオブジェクトに対し広く適用されるよう設計されています。すなわち、どんなオブジェクトでも <code>length</code> プロパティを持ち、数値プロパティ名を使う (<code>array[5]</code> のような) アクセスが有効なら、それらを適用できます。{{jsxref("Array.join", "join")}} のような一部のメソッドは、呼び出し対象オブジェクトの <code>length</code> や数値プロパティを読み取るだけです。 一方、{{jsxref("Array.reverse", "reverse")}} のようなメソッドは、対象オブジェクトの数値プロパティや <code>length</code> が変更可能であることを要求するため、<code>length</code> プロパティや設定される合成数値プロパティの変更を許さない {{jsxref("String")}} のようなオブジェクトに対して呼び出すことができません。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状態</th>
+ <th scope="col">備考</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES1')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>初回定義</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-15.4.3.1', 'Array.prototype')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-array.prototype', 'Array.prototype')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td><code>copyWithin()</code>, <code>fill()</code>, <code>entries()</code>, <code>keys()</code>, <code>values()</code>, <code>find()</code>, <code>findIndex()</code> メソッドを追加</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES7', '#sec-array.prototype', 'Array.prototype')}}</td>
+ <td>{{Spec2('ES7')}}</td>
+ <td><code>includes()</code> メソッドを追加</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype', 'Array.prototype')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの対応</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.prototype")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+ <li>{{jsxref("Function.prototype")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/push/index.html b/files/ja/web/javascript/reference/global_objects/array/push/index.html
new file mode 100644
index 0000000000..935dcfe945
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/push/index.html
@@ -0,0 +1,126 @@
+---
+title: Array.prototype.push()
+slug: Web/JavaScript/Reference/Global_Objects/Array/push
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/push
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>push()</strong></code> メソッドは、配列の末尾に 1 つ以上の要素を追加することができます。また戻り値として新しい配列の要素数を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-push.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.push([<var>element1</var>[, ...[, <var>elementN</var>]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>element<em>N</em></code></dt>
+ <dd>配列の末尾に追加する要素。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>メソッドが呼び出されたオブジェクトの新しい {{jsxref("Array.length", "length")}} プロパティ。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>push</code> メソッドは配列の末尾に要素を追加します。</p>
+
+<p><code>push</code> は意図的に汎用性を持たせています。つまり、このメソッドは配列に類似したオブジェクトに対して{{jsxref("Function.call", "呼び出し", "", 1)}}たり、{{jsxref("Function.apply", "適用し", "", 1)}}たりすることもできます。なお、<code>push</code> は配列の末尾から要素を挿入する必要性があるため、 <code>length</code> プロパティに依存しています。<code>length</code> が数値に変換できない場合、0 が用いられます。また、 <code>length</code> が存在しない場合は <code>length</code> も作成されることになります。</p>
+
+<p>ネイティブのみで、配列のようなオブジェクトは {{jsxref("Global_Objects/String", "strings", "", 1)}} ですが、文字列は変化しないので、このメソッドの効果を受けるには相応しくありません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Adding_elements_to_an_array" name="Adding_elements_to_an_array">配列に要素を追加する</h3>
+
+<p>以下のコードは 2 つの要素を持つ配列 <code>sports</code> を生成し、それに 2 つの要素を追加します。コードの実行後、変数 <code>total</code> には 4 が入ります。</p>
+
+<pre class="brush: js notranslate">let sports = ['soccer', 'baseball']
+let total = sports.push('football', 'swimming')
+
+console.log(sports) // ['soccer', 'baseball', 'football', 'swimming']
+console.log(total) // 4
+</pre>
+
+<h3 id="Merging_two_arrays" name="Merging_two_arrays">2つの配列をマージする</h3>
+
+<p>この例では {{jsxref("Function.apply", "apply()")}} を利用することで 2 つ目の配列の全ての要素を 1 つ目の要素にマージさせています。</p>
+
+<p>2 番目の配列 (例では <code>moreVegs</code>) が非常に大きい場合はこのメソッドを<em>使用しない</em>でください。なぜなら、1 つの関数が取ることのできるパラメータの最大数は実際には制限されているからです。詳細は {{jsxref("Function.apply", "apply()")}} を参照してください。</p>
+
+<pre class="brush: js notranslate">let vegetables = ['parsnip', 'potato']
+let moreVegs = ['celery', 'beetroot']
+
+// 1 つ目の配列に 2 つ目の配列をマージさせます
+// vegetables.push('celery', 'beetroot'); と同じ結果になります
+Array.prototype.push.apply(vegetables, moreVegs)
+
+console.log(vegetables) // ['parsnip', 'potato', 'celery', 'beetroot']
+</pre>
+
+<h3 id="Using_an_object_in_an_array-like_fashion" name="Using_an_object_in_an_array-like_fashion">オブジェクトを配列のように使用する</h3>
+
+<p>上述したように、<code>push</code> は内部的には汎用的なので、その利点を活かすことができます。この例が示しているように、オブジェクト上で <code>Array.prototype.push</code> は正しく動作します。</p>
+
+<p>オブジェクトのコレクションを保存するために、配列を生成していないことに注意してください。代わりに、コレクションをオブジェクト自体に保存して、配列を扱っているかのように見せかけるために <code>Array.prototype.push</code> 上で <code>call</code> を使用しています。そして、JavaScript は実行コンテキストの確立を許可しているおかげで、これは動作します。</p>
+
+<pre class="brush: js notranslate">let obj = {
+ length: 0,
+
+ addElem: function addElem(elem) {
+ // obj.length は、要素が追加されるたびに自動的に増分する。
+ [].push.call(this, elem)
+ }
+}
+
+// 例示のために空のオブジェクトを追加する。
+obj.addElem({})
+obj.addElem({})
+console.log(obj.length)
+// → 2
+</pre>
+
+<p><code>obj</code> は配列ではありませんが、本当の配列を扱っているかのように <code>push</code> メソッドは <code>obj</code> の <code>length</code> プロパティを増加させできていることに注意してください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.push', 'Array.prototype.push')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.push")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.pop()")}}</li>
+ <li>{{jsxref("Array.prototype.shift()")}}</li>
+ <li>{{jsxref("Array.prototype.unshift()")}}</li>
+ <li>{{jsxref("Array.prototype.concat()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/reduce/index.html b/files/ja/web/javascript/reference/global_objects/array/reduce/index.html
new file mode 100644
index 0000000000..a6a874f2e6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/reduce/index.html
@@ -0,0 +1,592 @@
+---
+title: Array.prototype.reduce()
+slug: Web/JavaScript/Reference/Global_Objects/Array/reduce
+tags:
+ - Array
+ - Array method
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Prototype
+ - Reduce
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/Reduce
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>reduce()</strong></code> メソッドは、配列の各要素に対して (引数で与えられた) <strong>reducer</strong> 関数を実行して、単一の出力値を生成します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-reduce.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<p><strong>reducer</strong> 関数は 4 つの引数を取ります。</p>
+
+<ol>
+ <li>アキュムレーター (<code><var>acc</var></code>)</li>
+ <li>現在値 (<code><var>cur</var></code>)</li>
+ <li>現在の添字 (<code><var>idx</var></code>)</li>
+ <li>元の配列 (<code><var>src</var></code>)</li>
+</ol>
+
+<p><strong>reducer</strong> 関数の返値はアキュムレーターに代入され、配列内の各反復に対してこの値を記憶します。最終的に単一の結果値になります。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.reduce(<var>callback</var>( <var>accumulator</var>, <var>currentValue</var>[, <var>index</var>[, <var>array</var>]] ) {
+ // return result from executing something for <var>accumulator</var> or <var>currentValue</var>
+}[, <var>initialValue</var>]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>
+ <p>配列のすべての要素 (<code><var>initialValue</var></code> が提供されなかった場合は、最初を除く) に対して実行される関数です。</p>
+
+ <p>これは 4 つの引数を取ります。</p>
+
+ <dl>
+ <dt><code><var>accumulator</var></code></dt>
+ <dd><var>callback</var> の返値を蓄積するアキュームレーターです。これは、コールバックの前回の呼び出しで返された値、あるいは <code><var>initialValue</var></code> が指定されている場合はその値となります (以下を参照ください)。</dd>
+ <dt><code><var>currentValue</var></code></dt>
+ <dd>現在処理されている配列の要素です。</dd>
+ <dt><code><var>index</var></code> {{optional_inline}}</dt>
+ <dd>現在処理されている配列要素のインデックスです。<code>initialValue</code> が指定された場合はインデックス <code>0</code> から、そうでない場合はインデックス <code>1</code> から開始します。</dd>
+ <dt><code><var>array</var></code> {{optional_inline}}</dt>
+ <dd><code>reduce()</code> が呼び出された配列です。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>initialValue</var></code> {{optional_inline}}</dt>
+ <dd><code><var>callback</var></code> の最初の呼び出しの最初の引数として使用する値。<code><var>initialValue</var></code> が与えられなかった場合、配列の最初の要素がアキュムレーターの初期値として使用され、<code><var>currentValue</var></code> としてスキップされます。空の配列に対して <code>reduce()</code> を呼び出した際、<code><var>initialValue</var></code> が指定されていないと {{jsxref("TypeError")}} が発生します。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>畳み込みによって得られた 1 つの値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>reduce()</code> メソッドは、配列に存在する各要素ごとに対して、<code>callback</code> 関数を次の 4 つの引数を渡しながら一度だけ実行します。</p>
+
+<ol>
+ <li><code><var>accumulator</var></code></li>
+ <li><code><var>currentValue</var></code></li>
+ <li><code><var>currentIndex</var></code></li>
+ <li><code><var>array</var></code></li>
+</ol>
+
+<p>コールバックが最初に呼び出されたとき、<code><var>accumulator</var></code> と <code><var>currentValue</var></code> が 2 つの値になります。<code><var>initialValue</var></code> が <code>reduce()</code> の呼び出しで提供されていた場合、<code><var>accumulator</var></code> は <code><var>initialValue</var></code> と等しくなり、<code><var>currentValue</var></code> は配列の最初の値と等しくなります。<code><var>initialValue</var></code> が提供されなかった場合は、<code><var>accumulator</var></code> は配列の最初の値と等しくなり、<code><var>currentValue</var></code> は 2番目の値と等しくなります。</p>
+
+<div class="note">
+<p><strong>注:</strong> <code><var>initialValue</var></code> が指定されなかった場合は、<code>reduce()</code> は最初の要素を飛ばしてインデックス <code>1</code> から実行されます。<code><var>initialValue</var></code> が指定されていたらインデックス <code>0</code> から開始します。</p>
+</div>
+
+<p>配列が空で <code><var>initialValue</var></code> が指定されなかった場合は {{jsxref("TypeError")}} が発生します。</p>
+
+<p>配列が (位置に関わらず) 1 つの要素しか持たず、<code><var>initialValue</var></code> が指定されなかった場合、または <code><var>initialValue</var></code> が指定されていても配列が空だった場合、<em><code>callback</code> が実行されずに</em>要素が返却されます。</p>
+
+<p><code><var>initialValue</var></code> を指定しなかった場合、下記の例のような 4 種類の結果が発生しうるため、<code><var>initialValue</var></code> を指定する方が通常は安全です。</p>
+
+<pre class="brush: js notranslate">let maxCallback = ( acc, cur ) =&gt; Math.max( acc.x, cur.x );
+let maxCallback2 = ( max, cur ) =&gt; Math.max( max, cur );
+
+// reduce without initialValue
+[ { x: 2 }, { x: 22 }, { x: 42 } ].reduce( maxCallback ); // NaN
+[ { x: 2 }, { x: 22 } ].reduce( maxCallback ); // 22
+[ { x: 2 } ].reduce( maxCallback ); // { x: 2 }
+[ ].reduce( maxCallback ); // TypeError
+
+// map &amp; reduce with initialValue; better solution, also works for empty or larger arrays
+[ { x: 22 }, { x: 42 } ].map( el =&gt; el.x )
+ .reduce( maxCallback2, -Infinity );
+</pre>
+
+<h3 id="How_reduce_works" name="How_reduce_works">reduce() はどう動くか</h3>
+
+<p>次のコードのように <code>reduce()</code> を使用した場合について見てみましょう。</p>
+
+<pre class="brush: js notranslate">[0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array) {
+ return accumulator + currentValue
+})
+</pre>
+
+<p>コールバック関数は 4 回呼び出され、各回の引数の内容は以下のようになっています。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col"><code><var>callback</var></code> の反復</th>
+ <th scope="col"><code><var>accumulator</var></code></th>
+ <th scope="col"><code><var>currentValue</var></code></th>
+ <th scope="col"><code><var>currentIndex</var></code></th>
+ <th scope="col"><code><var>array</var></code></th>
+ <th scope="col">返値</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">初回の呼出し</th>
+ <td><code>0</code></td>
+ <td><code>1</code></td>
+ <td><code>1</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th scope="row">2 回目の呼出し</th>
+ <td><code>1</code></td>
+ <td><code>2</code></td>
+ <td><code>2</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th scope="row">3 回目の呼出し</th>
+ <td><code>3</code></td>
+ <td><code>3</code></td>
+ <td><code>3</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>6</code></td>
+ </tr>
+ <tr>
+ <th scope="row">4 回目の呼出し</th>
+ <td><code>6</code></td>
+ <td><code>4</code></td>
+ <td><code>4</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>10</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code>reduce()</code> の返値は、コールバック呼び出しの最後の返値である (<code>10</code>) となるでしょう。</p>
+
+<p>通常の関数の代わりに{{jsxref("Functions/Arrow_functions", "アロー関数","",1)}}を指定することができます。下記のコードは上述のコードと同じ結果を返します。</p>
+
+<pre class="brush: js notranslate">[0, 1, 2, 3, 4].reduce( (accumulator, currentValue, currentIndex, array) =&gt; accumulator + currentValue )
+</pre>
+
+<p><code>reduce()</code> の 2 つ目の引数に初期値を設定した場合は、コールバック各回の内部的な動作はこのようになります。</p>
+
+<pre class="brush: js notranslate">[0, 1, 2, 3, 4].reduce((accumulator, currentValue, currentIndex, array) =&gt; {
+ return accumulator + currentValue
+}, 10)
+</pre>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col"><code><var>callback</var></code> の反復</th>
+ <th scope="col"><code><var>accumulator</var></code></th>
+ <th scope="col"><code><var>currentValue</var></code></th>
+ <th scope="col"><code><var>currentIndex</var></code></th>
+ <th scope="col"><code><var>array</var></code></th>
+ <th scope="col">返値</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">初回の呼出し</th>
+ <td><code>10</code></td>
+ <td><code>0</code></td>
+ <td><code>0</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>10</code></td>
+ </tr>
+ <tr>
+ <th scope="row">2 回目の呼出し</th>
+ <td><code>10</code></td>
+ <td><code>1</code></td>
+ <td><code>1</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>11</code></td>
+ </tr>
+ <tr>
+ <th scope="row">3 回目の呼出し</th>
+ <td><code>11</code></td>
+ <td><code>2</code></td>
+ <td><code>2</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>13</code></td>
+ </tr>
+ <tr>
+ <th scope="row">4 回目の呼出し</th>
+ <td><code>13</code></td>
+ <td><code>3</code></td>
+ <td><code>3</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>16</code></td>
+ </tr>
+ <tr>
+ <th scope="row">5 回目の呼出し</th>
+ <td><code>16</code></td>
+ <td><code>4</code></td>
+ <td><code>4</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>20</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>この場合の <code>reduce()</code> の返値は <code>20</code> となります。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">// Production steps of ECMA-262, Edition 5, 15.4.4.21
+// Reference: http://es5.github.io/#x15.4.4.21
+// https://tc39.github.io/ecma262/#sec-array.prototype.reduce
+if (!Array.prototype.reduce) {
+ Object.defineProperty(Array.prototype, 'reduce', {
+ value: function(callback /*, initialValue*/) {
+ if (this === null) {
+ throw new TypeError( 'Array.prototype.reduce ' +
+ 'called on null or undefined' );
+ }
+ if (typeof callback !== 'function') {
+ throw new TypeError( callback +
+ ' is not a function');
+ }
+
+ // 1. Let O be ? ToObject(this value).
+ var o = Object(this);
+
+ // 2. Let len be ? ToLength(? Get(O, "length")).
+ var len = o.length &gt;&gt;&gt; 0;
+
+ // Steps 3, 4, 5, 6, 7
+ var k = 0;
+ var value;
+
+ if (arguments.length &gt;= 2) {
+ value = arguments[1];
+ } else {
+ while (k &lt; len &amp;&amp; !(k in o)) {
+ k++;
+ }
+
+ // 3. If len is 0 and initialValue is not present,
+ // throw a TypeError exception.
+ if (k &gt;= len) {
+ throw new TypeError( 'Reduce of empty array ' +
+ 'with no initial value' );
+ }
+ value = o[k++];
+ }
+
+ // 8. Repeat, while k &lt; len
+ while (k &lt; len) {
+ // a. Let Pk be ! ToString(k).
+ // b. Let kPresent be ? HasProperty(O, Pk).
+ // c. If kPresent is true, then
+ // i. Let kValue be ? Get(O, Pk).
+ // ii. Let accumulator be ? Call(
+ // callbackfn, undefined,
+ // « accumulator, kValue, k, O »).
+ if (k in o) {
+ value = callback(value, o[k], k, o);
+ }
+
+ // d. Increase k by 1.
+ k++;
+ }
+
+ // 9. Return accumulator.
+ return value;
+ }
+ });
+}
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>警告:</strong> {{jsxref("Object.defineProperty()")}} に対応していない本当に時代遅れの JavaScript エンジンに対応する必要がある場合、<code>Array.prototype</code> を<strong>列挙不可能</strong>にすることはできないので、メソッドのポリフィルを使わない方が良いでしょう。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Sum_all_the_values_of_an_array" name="Sum_all_the_values_of_an_array">配列内の値の合計値を出す</h3>
+
+<pre class="brush: js notranslate">let sum = [0, 1, 2, 3].reduce(function (accumulator, currentValue) {
+ return accumulator + currentValue
+}, 0)
+// sum is 6
+
+</pre>
+
+<p>また、アロー関数を用いて書くことも出来ます。</p>
+
+<pre class="brush: js notranslate">let total = [ 0, 1, 2, 3 ].reduce(
+ ( accumulator, currentValue ) =&gt; accumulator + currentValue,
+ 0
+)</pre>
+
+<h3 id="Sum_of_values_in_an_object_array" name="Sum_of_values_in_an_object_array">オブジェクトの配列の値の合計値を出す</h3>
+
+<p>オブジェクトの配列に含まれた値の合計値を出すには、すべての項目を関数内で取得できるようにするために <code><var>initialValue</var></code> を指定する<strong>必要があります</strong>。</p>
+
+<pre class="brush: js notranslate">let initialValue = 0
+let sum = [{x: 1}, {x: 2}, {x: 3}].reduce(function (accumulator, currentValue) {
+ return accumulator + currentValue.x
+}, initialValue)
+
+console.log(sum) // logs 6
+</pre>
+
+<p>また、アロー関数を用いて書くことも出来ます。</p>
+
+<pre class="brush: js notranslate">let initialValue = 0
+let sum = [{x: 1}, {x: 2}, {x: 3}].reduce(
+ (accumulator, currentValue) =&gt; accumulator + currentValue.x
+ , initialValue
+)
+
+console.log(sum) // logs 6</pre>
+
+<h3 id="Flatten_an_array_of_arrays" name="Flatten_an_array_of_arrays">二次元配列を一次元配列にする</h3>
+
+<pre class="brush: js notranslate">let flattened = [[0, 1], [2, 3], [4, 5]].reduce(
+ function(accumulator, currentValue) {
+ return accumulator.concat(currentValue)
+ },
+ []
+)
+// flattened is [0, 1, 2, 3, 4, 5]
+</pre>
+
+<p>また、アロー関数を用いて書くことも出来ます。</p>
+
+<pre class="brush: js notranslate">let flattened = [[0, 1], [2, 3], [4, 5]].reduce(
+ ( accumulator, currentValue ) =&gt; accumulator.concat(currentValue),
+ []
+)
+</pre>
+
+<h3 id="Counting_instances_of_values_in_an_object" name="Counting_instances_of_values_in_an_object">オブジェクトの値のインスタンスを数える</h3>
+
+<pre class="brush: js notranslate">let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']
+
+let countedNames = names.reduce(function (allNames, name) {
+ if (name in allNames) {
+ allNames[name]++
+ }
+ else {
+ allNames[name] = 1
+ }
+ return allNames
+}, {})
+// countedNames is:
+// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }
+</pre>
+
+<h3 id="Grouping_objects_by_a_property" name="Grouping_objects_by_a_property">プロパティによってオブジェクトをグループ化する</h3>
+
+<pre class="brush: js notranslate">let people = [
+ { name: 'Alice', age: 21 },
+ { name: 'Max', age: 20 },
+ { name: 'Jane', age: 20 }
+];
+
+function groupBy(objectArray, property) {
+ return objectArray.reduce(function (acc, obj) {
+ let key = obj[property]
+ if (!acc[key]) {
+ acc[key] = []
+ }
+ acc[key].push(obj)
+ return acc
+ }, {})
+}
+
+let groupedPeople = groupBy(people, 'age')
+// groupedPeople is:
+// {
+// 20: [
+// { name: 'Max', age: 20 },
+// { name: 'Jane', age: 20 }
+// ],
+// 21: [{ name: 'Alice', age: 21 }]
+// }
+</pre>
+
+<h3 id="Bonding_arrays_contained_in_an_array_of_objects_using_the_spread_operator_and_initialValue" name="Bonding_arrays_contained_in_an_array_of_objects_using_the_spread_operator_and_initialValue">スプレッド演算子と initialValue を使ってオブジェクトの配列に含まれる配列を結合させる</h3>
+
+<pre class="brush: js notranslate">// friends - an array of objects
+// where object field "books" is a list of favorite books
+let friends = [{
+ name: 'Anna',
+ books: ['Bible', 'Harry Potter'],
+ age: 21
+}, {
+ name: 'Bob',
+ books: ['War and peace', 'Romeo and Juliet'],
+ age: 26
+}, {
+ name: 'Alice',
+ books: ['The Lord of the Rings', 'The Shining'],
+ age: 18
+}]
+
+// allbooks - list which will contain all friends' books +
+// additional list contained in initialValue
+let allbooks = friends.reduce(function(accumulator, currentValue) {
+ return [...accumulator, ...currentValue.books]
+}, ['Alphabet'])
+
+// allbooks = [
+// 'Alphabet', 'Bible', 'Harry Potter', 'War and peace',
+// 'Romeo and Juliet', 'The Lord of the Rings',
+// 'The Shining'
+// ]</pre>
+
+<h3 id="Remove_duplicate_items_in_array" name="Remove_duplicate_items_in_array">配列内の重複要素を除去する</h3>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> {{jsxref("Set")}} と {{jsxref("Array.from()")}} に対応している環境を使っている場合、<code>let orderedArray = Array.from(new Set(myArray))</code> を使うことで重複要素を除去された配列を取得することができます。</p>
+</div>
+
+<pre class="brush: js notranslate">let myArray = ['a', 'b', 'a', 'b', 'c', 'e', 'e', 'c', 'd', 'd', 'd', 'd']
+let myOrderedArray = myArray.reduce(function (accumulator, currentValue) {
+ if (accumulator.indexOf(currentValue) === -1) {
+ accumulator.push(currentValue)
+ }
+ return accumulator
+}, [])
+
+console.log(myOrderedArray)</pre>
+
+<h3 id="Replace_.filter.map_with_.reduce" name="Replace_.filter.map_with_.reduce">.filter().map() を .reduce() で置き換える</h3>
+
+<p>{{jsxref("Array.filter()")}} を使用した後で {{jsxref("Array.map()")}} を使用すると配列を二度走査しますが、{{jsxref("Array.reduce()")}} では同じ効果を一度の操作で実現することができ、もっと効率的です。(for ループが好きなのであれば、{{jsxref("Array.forEach()")}} で一度の操作で filter と map を行うことができます)。</p>
+
+<pre class="brush: js notranslate">const numbers = [-5, 6, 2, 0,];
+
+const doubledPositiveNumbers = numbers.reduce((accumulator, currentValue) =&gt; {
+ if (currentValue &gt; 0) {
+ const doubled = currentValue * 2;
+ accumulator.push(doubled);
+ }
+ return accumulator;
+}, []);
+
+console.log(doubledPositiveNumbers); // [12, 4]</pre>
+
+<h3 id="Running_Promises_in_Sequence" name="Running_Promises_in_Sequence">シーケンス上の Promise を動かす</h3>
+
+<pre class="brush: js notranslate">/**
+ * Runs promises from array of functions that can return promises
+ * in chained manner
+ *
+ * @param {array} arr - promise arr
+ * @return {Object} promise object
+ */
+function runPromiseInSequence(arr, input) {
+ return arr.reduce(
+ (promiseChain, currentFunction) =&gt; promiseChain.then(currentFunction),
+ Promise.resolve(input)
+ )
+}
+
+// promise function 1
+function p1(a) {
+ return new Promise((resolve, reject) =&gt; {
+ resolve(a * 5)
+ })
+}
+
+// promise function 2
+function p2(a) {
+ return new Promise((resolve, reject) =&gt; {
+ resolve(a * 2)
+ })
+}
+
+// function 3 - will be wrapped in a resolved promise by .then()
+function f3(a) {
+ return a * 3
+}
+
+// promise function 4
+function p4(a) {
+ return new Promise((resolve, reject) =&gt; {
+ resolve(a * 4)
+ })
+}
+
+const promiseArr = [p1, p2, f3, p4]
+runPromiseInSequence(promiseArr, 10)
+ .then(console.log) // 1200
+</pre>
+
+<h3 id="Function_composition_enabling_piping" name="Function_composition_enabling_piping">パイプによって関数を合成する</h3>
+
+<pre class="brush: js notranslate">// Building-blocks to use for composition
+const double = x =&gt; x + x
+const triple = x =&gt; 3 * x
+const quadruple = x =&gt; 4 * x
+
+// Function composition enabling pipe functionality
+const pipe = (...functions) =&gt; input =&gt; functions.reduce(
+ (acc, fn) =&gt; fn(acc),
+ input
+)
+
+// Composed functions for multiplication of specific values
+const multiply6 = pipe(double, triple)
+const multiply9 = pipe(triple, triple)
+const multiply16 = pipe(quadruple, quadruple)
+const multiply24 = pipe(double, triple, quadruple)
+
+// Usage
+multiply6(6) // 36
+multiply9(9) // 81
+multiply16(16) // 256
+multiply24(10) // 240
+
+</pre>
+
+<h3 id="write_map_using_reduce" name="write_map_using_reduce">reduce を使って map メソッドを書く</h3>
+
+<pre class="brush: js notranslate">if (!Array.prototype.mapUsingReduce) {
+ Array.prototype.mapUsingReduce = function(callback, thisArg) {
+ return this.reduce(function(mappedArray, currentValue, index, array) {
+ mappedArray[index] = callback.call(thisArg, currentValue, index, array)
+ return mappedArray
+ }, [])
+ }
+}
+
+[1, 2, , 3].mapUsingReduce(
+ (currentValue, index, array) =&gt; currentValue + index + array.length
+) // [5, 7, , 10]
+
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.reduce")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.reduceRight()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/reduceright/index.html b/files/ja/web/javascript/reference/global_objects/array/reduceright/index.html
new file mode 100644
index 0000000000..3854e0e330
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/reduceright/index.html
@@ -0,0 +1,353 @@
+---
+title: Array.prototype.reduceRight()
+slug: Web/JavaScript/Reference/Global_Objects/Array/reduceRight
+tags:
+ - Array
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Prototype
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/ReduceRight
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>reduceRight()</strong></code> メソッドは、隣り合う 2 つの配列要素に対して (右から左へ) 関数を適用して、単一の値にします。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-reduce-right.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<p>左から右へ適用する際は {{jsxref("Array.prototype.reduce()")}} を参照してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.reduceRight(<var>callback</var>(<var>accumulator</var>, <var>currentValue</var>[, <var>index</var>[, <var>array</var>]])[, <var>initialValue</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>4 つの引数を取って、配列内の各値に対し実行するコールバック関数
+ <dl>
+ <dt><code><var>accumulator</var></code></dt>
+ <dd>現在処理されている配列要素の 1 つ前の要素。もしくは、指定されていれば <code><var>initialValue</var></code>。(下記参照)</dd>
+ <dt><code><var>currentValue</var></code></dt>
+ <dd>現在処理されている配列要素</dd>
+ <dt><code><var>index</var></code>{{optional_inline}}</dt>
+ <dd>現在処理されている配列要素のインデックス</dd>
+ <dt><code><var>array</var></code>{{optional_inline}}</dt>
+ <dd><code>reduceRight()</code> によって呼ばれる配列</dd>
+ </dl>
+ </dd>
+ <dt><code><var>initialValue</var></code> {{optional_inline}}</dt>
+ <dd><code><var>callback</var></code> の最初の呼び出しのときに、最初の実引数として用いるためのオブジェクト。initialValue が渡されなかった際は、配列の最後の要素が適用されます。また、空の配列に対して、初期値なしで呼び出すと <code>TypeError</code> になります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>畳み込みによって得られた 1 つの値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>reduceRight</code> は、配列に存在する各要素に対して、<code>callback</code> 関数を一度だけ実行します。配列における穴は対象からはずされ、初期値(あるいは、直前の <code>callback</code> 呼び出し)、現在の要素の値、現在のインデックス、繰り返しが行われる配列の 4 つの引数を受け取ります。</p>
+
+<p>reduceRight の <code><var>callback</var></code> の呼び出しは、以下のように見えるでしょう。</p>
+
+<pre class="brush: js notranslate">array.reduceRight(function(accumulator, currentValue, index, array) {
+ // ...
+});
+</pre>
+
+<p>関数が初めて呼び出されたとき、<code><var>accumulator</var></code> と <code><var>currentValue</var></code> は、2 つの値のいずれかになります。<code>reduceRight</code> の呼び出しで <code><var>initialValue</var></code> が指定された場合、<code><var>accumulator</var></code> は <code><var>initialValue</var></code> と等しくなり、<code><var>currentValue</var></code> は配列の最後の値と等しくなります。<code><var>initialValue</var></code> が指定されなかった場合、<code><var>accumulator</var></code> は配列の最後の値に等しく、<code><var>currentValue</var></code> は最後から 2 番目の値に等しくなります。</p>
+
+<p>配列が空で、<code><var>initialValue</var></code> が指定されていない場合、{{jsxref("TypeError")}} が投げられます。配列に要素が 1 つしかなく(位置に関係なく)、<code><var>initialValue</var></code> が指定されていない場合、または <code><var>initialValue</var></code> が指定されているが配列が空の場合、<code><var>callback</var></code> を呼び出さずに単独の値が返されます。</p>
+
+<p>この関数を使用した場合について見てみましょう。</p>
+
+<pre class="brush: js notranslate">[0, 1, 2, 3, 4].reduceRight(function(accumulator, currentValue, index, array) {
+ return accumulator + currentValue;
+});
+</pre>
+
+<p>コールバックは 4 回呼び出され、各コールの引数と戻り値は以下のようになります。</p>
+
+<table>
+ <thead>
+ <tr>
+ <th scope="col"><code><var>callback</var></code></th>
+ <th scope="col"><code><var>accumulator</var></code></th>
+ <th scope="col"><code><var>currentValue</var></code></th>
+ <th scope="col"><code><var>index</var></code></th>
+ <th scope="col"><code><var>array</var></code></th>
+ <th scope="col">return value</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">初回の呼出し</th>
+ <td><code>4</code></td>
+ <td><code>3</code></td>
+ <td><code>3</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>7</code></td>
+ </tr>
+ <tr>
+ <th scope="row">2 回目の呼出し</th>
+ <td><code>7</code></td>
+ <td><code>2</code></td>
+ <td><code>2</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>9</code></td>
+ </tr>
+ <tr>
+ <th scope="row">3 回目の呼出し</th>
+ <td><code>9</code></td>
+ <td><code>1</code></td>
+ <td><code>1</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>10</code></td>
+ </tr>
+ <tr>
+ <th scope="row">4 回目の呼出し</th>
+ <td><code>10</code></td>
+ <td><code>0</code></td>
+ <td><code>0</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>10</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code>reduceRight</code> の返値は、コールバック呼び出しの最後の返値である (<code>10</code>) になります。</p>
+
+<p><code>initialValue</code> を与えた場合、その結果は以下のようになります。</p>
+
+<pre class="brush: js notranslate">[0, 1, 2, 3, 4].reduceRight(function(accumulator, currentValue, index, array) {
+ return accumulator + currentValue;
+}, 10);
+</pre>
+
+<table>
+ <thead>
+ <tr>
+ <th scope="col"><code><var>callback</var></code></th>
+ <th scope="col"><code><var>accumulator</var></code></th>
+ <th scope="col"><code><var>currentValue</var></code></th>
+ <th scope="col"><code><var>index</var></code></th>
+ <th scope="col"><code><var>array</var></code></th>
+ <th scope="col">return value</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">初回の呼出し</th>
+ <td><code>10</code></td>
+ <td><code>4</code></td>
+ <td><code>4</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>14</code></td>
+ </tr>
+ <tr>
+ <th scope="row">2 回目の呼出し</th>
+ <td><code>14</code></td>
+ <td><code>3</code></td>
+ <td><code>3</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>17</code></td>
+ </tr>
+ <tr>
+ <th scope="row">3 回目の呼出し</th>
+ <td><code>17</code></td>
+ <td><code>2</code></td>
+ <td><code>2</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>19</code></td>
+ </tr>
+ <tr>
+ <th scope="row">4 回目の呼出し</th>
+ <td><code>19</code></td>
+ <td><code>1</code></td>
+ <td><code>1</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>20</code></td>
+ </tr>
+ <tr>
+ <th scope="row">5 回目の呼出し</th>
+ <td><code>20</code></td>
+ <td><code>0</code></td>
+ <td><code>0</code></td>
+ <td><code>[0, 1, 2, 3, 4]</code></td>
+ <td><code>20</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>この場合の <code>reduceRight</code> の返値は <code>20</code> になります。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>reduceRight</code> は ECMA-262 の第5版に追加されたもので、すべての実装には存在しない可能性があります。これを回避するには、スクリプトの最初に次のコードを挿入して、ネイティブにはサポートされていない実装でも <code>reduceRight</code> を使用できるようにします。</p>
+
+<pre class="brush: js notranslate">// Production steps of ECMA-262, Edition 5, 15.4.4.22
+// Reference: http://es5.github.io/#x15.4.4.22
+if ('function' !== typeof Array.prototype.reduceRight) {
+ Array.prototype.reduceRight = function(callback /*, initialValue*/) {
+ 'use strict';
+ if (null === this || 'undefined' === typeof this) {
+ throw new TypeError('Array.prototype.reduce called on null or undefined');
+ }
+ if ('function' !== typeof callback) {
+ throw new TypeError(callback + ' is not a function');
+ }
+ var t = Object(this), len = t.length &gt;&gt;&gt; 0, k = len - 1, value;
+ if (arguments.length &gt;= 2) {
+ value = arguments[1];
+ } else {
+ while (k &gt;= 0 &amp;&amp; !(k in t)) {
+ k--;
+ }
+ if (k &lt; 0) {
+ throw new TypeError('Reduce of empty array with no initial value');
+ }
+ value = t[k--];
+ }
+ for (; k &gt;= 0; k--) {
+ if (k in t) {
+ value = callback(value, t[k], k, t);
+ }
+ }
+ return value;
+ };
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Sum_up_all_values_within_an_array" name="Sum_up_all_values_within_an_array">配列内のすべての値を合計する</h3>
+
+<pre class="brush: js notranslate">var sum = [0, 1, 2, 3].reduceRight(function(a, b) {
+ return a + b;
+});
+// sum is 6
+</pre>
+
+<h3 id="Flatten_an_array_of_arrays" name="Flatten_an_array_of_arrays">配列中の配列を平坦化する</h3>
+
+<pre class="brush: js notranslate">var flattened = [[0, 1], [2, 3], [4, 5]].reduceRight(function(a, b) {
+ return a.concat(b);
+}, []);
+// flattened is [4, 5, 2, 3, 0, 1]
+
+</pre>
+
+<h3 id="Run_a_list_of_asynchronous_functions_with_callbacks_in_series_each_passing_their_results_to_the_next" name="Run_a_list_of_asynchronous_functions_with_callbacks_in_series_each_passing_their_results_to_the_next">一連のコールバックを使用して非同期関数のリストを実行し、それぞれの結果を次のコールバックに渡す</h3>
+
+<pre class="brush: js notranslate">const waterfall = (...functions) =&gt; (callback, ...args) =&gt;
+ functions.reduceRight(
+ (composition, fn) =&gt; (...results) =&gt; fn(composition, ...results),
+ callback
+ )(...args);
+
+const randInt = max =&gt; Math.floor(Math.random() * max)
+
+const add5 = (callback, x) =&gt; {
+ setTimeout(callback, randInt(1000), x + 5);
+};
+const mult3 = (callback, x) =&gt; {
+ setTimeout(callback, randInt(1000), x * 3);
+};
+const sub2 = (callback, x) =&gt; {
+ setTimeout(callback, randInt(1000), x - 2);
+};
+const split = (callback, x) =&gt; {
+ setTimeout(callback, randInt(1000), x, x);
+};
+const add = (callback, x, y) =&gt; {
+ setTimeout(callback, randInt(1000), x + y);
+};
+const div4 = (callback, x) =&gt; {
+ setTimeout(callback, randInt(1000), x / 4);
+};
+
+const computation = waterfall(add5, mult3, sub2, split, add, div4);
+computation(console.log, 5) // -&gt; 14
+
+// same as:
+
+const computation2 = (input, callback) =&gt; {
+ const f6 = x=&gt; div4(callback, x);
+ const f5 = (x, y) =&gt; add(f6, x, y);
+ const f4 = x =&gt; split(f5, x);
+ const f3 = x =&gt; sub2(f4, x);
+ const f2 = x =&gt; mult3(f3, x);
+ add5(f2, input);
+}</pre>
+
+<h3 id="Difference_between_reduce_and_reduceRight" name="Difference_between_reduce_and_reduceRight"><code>reduce</code> と <code>reduceRight</code> の違い</h3>
+
+<pre class="brush: js notranslate">var a = ['1', '2', '3', '4', '5'];
+var left = a.reduce(function(prev, cur) { return prev + cur; });
+var right = a.reduceRight(function(prev, cur) { return prev + cur; });
+
+console.log(left); // "12345"
+console.log(right); // "54321"</pre>
+
+<h3 id="Defining_Composible_Function" name="Defining_Composible_Function">関数合計の定義</h3>
+
+<p>関数合成のコンセプトはシンプルで、n個の関数を組み合わせたものです。これは右から左へと流れ、最後の関数の出力を使用して各関数を呼び出します。</p>
+
+<pre class="brush: js notranslate">/**
+ * Function Composition is way in which result of one function can
+ * be passed to another and so on.
+ *
+ * h(x) = f(g(x))
+ *
+ * Function execution happens right to left
+ *
+ * https://en.wikipedia.org/wiki/Function_composition
+ */
+
+const compose = (...args) =&gt; (value) =&gt; args.reduceRight((acc, fn) =&gt; fn(acc), value)
+
+// Increment passed number
+const inc = (n) =&gt; n + 1
+
+// Doubles the passed value
+const double = (n) =&gt; n * 2
+
+// using composition function
+console.log(compose(double, inc)(2)); // 6
+
+// using composition function
+console.log(compose(inc, double)(2)); // 5
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.reduceright', 'Array.prototype.reduceRight')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.reduceRight")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.reduce()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/reverse/index.html b/files/ja/web/javascript/reference/global_objects/array/reverse/index.html
new file mode 100644
index 0000000000..4ff1fd367c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/reverse/index.html
@@ -0,0 +1,91 @@
+---
+title: Array.prototype.reverse()
+slug: Web/JavaScript/Reference/Global_Objects/Array/reverse
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/reverse
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>reverse()</code></strong> メソッドは、配列の要素を <em><a href="https://ja.wikipedia.org/wiki/In-place%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0">In-place アルゴリズム</a></em>で反転させます。最初の要素が最後の要素に、最後の要素が最初の要素になります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-reverse.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>a</var>.reverse()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>反転した配列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>reverse</code> メソッドは、呼び出した配列オブジェクトの要素を反転し、書き換えられた配列の参照を返します。</p>
+
+<p><code>reverse</code> は意図的に汎用性を持たせています。つまり、このメソッドは配列に類似したオブジェクトに対して{{jsxref("Function.call", "呼び出し", "", 1)}}たり、{{jsxref("Function.apply", "適用し", "", 1)}}たりすることもできます。ゼロから始まる数値プロパティであり、連続した連なりの最後を反映している <code>length</code> プロパティを含まないオブジェクトでは効果がないかもしれません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Reversing_the_elements_in_an_array" name="Reversing_the_elements_in_an_array">配列の要素を反転させる</h3>
+
+<p>次の例は、3 つの要素を含む配列 <code>a</code> を作成し、その配列を反転させます。<code>reverse()</code> の呼び出しは、反転した配列 <code>a</code> への参照を返します。</p>
+
+<pre class="brush: js notranslate">const a = [1, 2, 3];
+
+console.log(a); // [1, 2, 3]
+
+a.reverse();
+
+console.log(a); // [3, 2, 1]
+
+</pre>
+
+<h3 id="Reversing_the_elements_in_an_array-like_object" name="Reversing_the_elements_in_an_array-like_object">配列状オブジェクトの要素を反転させる</h3>
+
+<p>次の例は、3 つの要素と length プロパティを含む配列状オブジェクト <code>a</code> を作成し、その配列状オブジェクトを反転させます。<code>reverse()</code> の呼び出しは、反転した配列状オブジェクト <code>a</code> への参照を返します。</p>
+
+<pre class="brush: js notranslate">const a = {0: 1, 1: 2, 2: 3, length: 3};
+
+console.log(a); // {0: 1, 1: 2, 2: 3, length: 3}
+
+Array.prototype.reverse.call(a); //apply() を使用するのと同じ構文
+
+console.log(a); // {0: 3, 1: 2, 2: 1, length: 3}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.reverse")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.join()")}}</li>
+ <li>{{jsxref("Array.prototype.sort()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.reverse()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/shift/index.html b/files/ja/web/javascript/reference/global_objects/array/shift/index.html
new file mode 100644
index 0000000000..5dff35d03f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/shift/index.html
@@ -0,0 +1,98 @@
+---
+title: Array.prototype.shift()
+slug: Web/JavaScript/Reference/Global_Objects/Array/shift
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/shift
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>shift()</code></strong> メソッドは、配列から<strong>最初</strong>の要素を取り除き、その要素を返します。このメソッドは配列の長さを変えます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-shift.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.shift()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列から取り除かれた要素を返します。配列が空の場合は、{{jsxref("undefined")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>shift</code> メソッドは 0 番目の添え字の要素を取り除き、続く添え字の値を小さい方向にずらします。そして、削除された値を返します。{{jsxref("Array.length", "length")}} プロパティが 0 の場合、{{jsxref("undefined")}} を返します。</p>
+
+<p><code>shift</code> は意図的に汎用性を持たせています。つまり、このメソッドは配列に類似したオブジェクトに対して{{jsxref("Function.call", "呼び出し", "", 1)}}たり、{{jsxref("Function.apply", "適用し", "", 1)}}たりすることもできます。ゼロから始まる数値プロパティであり、連続した連なりの最後を反映している <code>length</code> プロパティを含まないオブジェクトでは効果がないかもしれません。</p>
+
+<p>{{jsxref("Array.prototype.pop()")}} は <code>shift</code> と似た動作をしますが、配列の最後の要素に適用されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Removing_an_element_from_an_array" name="Removing_an_element_from_an_array">配列から要素を除去</h3>
+
+<p>以下のコードは <code>myFish</code> 配列を、その最初の要素を取り除く前後で表示します。また、取り除いた要素も表示します。</p>
+
+<pre class="brush: js notranslate">var myFish = ['angel', 'clown', 'mandarin', 'surgeon'];
+
+console.log('myFish before:', JSON.stringify(myFish));
+// myFish 処理前: ['angel', 'clown', 'mandarin', 'surgeon']
+
+var shifted = myFish.shift();
+
+console.log('myFish 処理後:', myFish);
+// myFish 処理後: ['clown', 'mandarin', 'surgeon']
+
+console.log('取り除いた要素:', shifted);
+// 取り除いた要素: angel
+</pre>
+
+<h3 id="shift_メソッドの_while_ループ内での使用する">shift() メソッドの while ループ内での使用する</h3>
+
+<p>shift() メソッドは時に、 while 文の条件内において用いられます。以下のコードでは、要素がすべて無くなるまで、各くり返し内でその配列内の次の要素を取り除きます。</p>
+
+<pre class="brush: js notranslate">var names = ["Andrew", "Edward", "Paul", "Chris" ,"John"];
+
+while( (i = names.shift()) !== undefined ) {
+    console.log(i);
+}
+// Andrew, Edward, Paul, Chris, John
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.shift', 'Array.prototype.shift')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.shift")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.push()")}}</li>
+ <li>{{jsxref("Array.prototype.pop()")}}</li>
+ <li>{{jsxref("Array.prototype.unshift()")}}</li>
+ <li>{{jsxref("Array.prototype.concat()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/slice/index.html b/files/ja/web/javascript/reference/global_objects/array/slice/index.html
new file mode 100644
index 0000000000..285e3593e8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/slice/index.html
@@ -0,0 +1,154 @@
+---
+title: Array.prototype.slice()
+slug: Web/JavaScript/Reference/Global_Objects/Array/slice
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/slice
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>slice()</code></strong> メソッドは、<code>start</code> と <code>end</code> が配列の中の項目のインデックスを表している場合、<code>start</code> から <code>end</code> まで (<code>end</code> は含まれない) で選択された配列の一部の浅いコピーを新しい配列オブジェクトに作成して返します。元の配列は変更されません。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-slice.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.slice([<var>start</var>[, <var>end</var>]])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>start</var></code> {{optional_inline}}</dt>
+ <dd>取り出しの開始位置を示す 0 から始まるインデックスです。</dd>
+ <dd>負のインデックスを使って、列の終わりからのオフセットを指定することができます。<code>slice(-2)</code> は列の最後の 2 つの要素を取り出します。</dd>
+ <dd><code><var>start</var></code> が指定されなかった場合、<code>slice</code> はインデックス <code>0</code> から開始します。</dd>
+ <dd><code><var>start</var></code> が列のインデックスの範囲よりも大きい場合は、空の配列が返されます。</dd>
+ <dt><code><var>end</var></code> {{optional_inline}}</dt>
+ <dd>取り出しを終える直前の位置を示す 0 から始まるインデックスです。<code>slice</code> は <code><var>end</var></code> 自体は含めず、その直前まで取り出します。例えば、<code>slice(1,4)</code> は 2 番目から 4 番目までの要素 (インデックスがそれぞれ 1, 2, 3 番目の要素) を取り出します。</dd>
+ <dd>負のインデックスを使って、列の終わりからのオフセットとして指定することができます。<code>slice(2,-1)</code> は列の 3 番目から、最後から 2 番目までの要素を取り出します。</dd>
+ <dd><code><var>end</var></code> が省略された場合、<code>slice</code> は列の最後 (<code><var>arr</var>.length</code>) までを取り出します。</dd>
+ <dd><code><var>end</var></code> がシーケンスの長さを超えた場合も、<code>slice</code> はシーケンスの最後 (<code><var>arr</var>.length</code>) までを取り出します。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>取り出された要素を含む新しい配列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>slice</code> は元の配列を変更せず、元の配列から要素をシャローコピー (1 段階の深さのコピー) した新しい配列を返します。元の配列の要素は以下のように返される配列にコピーされます。</p>
+
+<ul>
+ <li>(実際のオブジェクトではない) オブジェクトの参照については、<code>slice</code> はオブジェクトの参照を新しい配列にコピーします。元の配列も新しい配列も同じオブジェクトを参照します。参照されたオブジェクトが修正された場合、その変更は新しい配列と元の配列の両方に現れます。</li>
+ <li>({{jsxref("String")}}, {{jsxref("Number")}}, {{jsxref("Boolean")}} オブジェクトではなく) 文字列、数値、真偽値では、<code>slice</code> は値を新しい配列にコピーします。一方の配列の文字列や数値に変更を加えても、他の配列に影響はしません。</li>
+</ul>
+
+<p>一方の配列に新しい要素が追加されても、他方の配列に影響はしません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Return_a_portion_of_an_existing_array" name="Return_a_portion_of_an_existing_array">既存の配列の一部を返す</h3>
+
+<pre class="brush: js notranslate">let fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
+var citrus = fruits.slice(1, 3);
+
+// fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
+// citrus contains ['Orange','Lemon']
+</pre>
+
+<h3 id="Using_slice" name="Using_slice">slice の使用</h3>
+
+<p>以下の例で、<code>slice</code> は新しい配列 <code>newCar</code> を <code>myCar</code> から生成します。両者ともオブジェクト <code>myHonda</code> への参照を含んでいます。<code>myHonda</code> の色が purple に変更されると、両方の要素がその変更を反映します。</p>
+
+<pre class="brush: js notranslate">// slice を使って、myCar から newCar を生成する。
+let myHonda = { color: 'red', wheels: 4, engine: { cylinders: 4, size: 2.2 } }
+let myCar = [myHonda, 2, 'cherry condition', 'purchased 1997']
+let newCar = myCar.slice(0, 2)
+
+// myCar, newCar と両方の要素から参照されている myHonda の color の
+// 値を書きだす。
+console.log('myCar = ' + JSON.stringify(myCar))
+console.log('newCar = ' + JSON.stringify(newCar))
+console.log('myCar[0].color = ' + myCar[0].color)
+console.log('newCar[0].color = ' + newCar[0].color)
+
+// myHonda の色を変える。
+myHonda.color = 'purple'
+console.log('The new color of my Honda is ' + myHonda.color)
+
+// 両方の要素から参照されている myHonda の color を書き出す。
+console.log('myCar[0].color = ' + myCar[0].color)
+console.log('newCar[0].color = ' + newCar[0].color)
+</pre>
+
+<p>このスクリプトの出力は次の様になります。</p>
+
+<pre class="notranslate">myCar = [{color: 'red', wheels: 4, engine: {cylinders: 4, size: 2.2}}, 2,
+ 'cherry condition', 'purchased 1997']
+newCar = [{color: 'red', wheels: 4, engine: {cylinders: 4, size: 2.2}}, 2]
+myCar[0].color = red
+newCar[0].color = red
+The new color of my Honda is purple
+myCar[0].color = purple
+newCar[0].color = purple
+</pre>
+
+<h3 id="Array-like_objects" name="Array-like_objects">配列状オブジェクト</h3>
+
+<p><code>slice</code> メソッドを呼び出すことで、配列状オブジェクトやコレクションを新しい配列に変換することができます。メソッドをオブジェクトに {{jsxref("Function.prototype.bind", "bind")}} するだけです。配列状オブジェクトの一例として、{{jsxref("Functions/arguments", "arguments")}} が挙げられます。以下に例を示します。</p>
+
+<pre class="brush: js notranslate">function list() {
+ return Array.prototype.slice.call(arguments)
+}
+
+let list1 = list(1, 2, 3) // [1, 2, 3]
+</pre>
+
+<p><ruby>結合<rp> (</rp><rt>Binding</rt><rp>) </rp></ruby>は {{jsxref("Function.prototype")}} の {{jsxref("Function.prototype.call", "call()")}} メソッドを用いて行うことができますし、<code>[].slice.call(arguments)</code> を <code>Array.prototype.slice.call</code> の代わりに使って減らすこともできます。</p>
+
+<p>いずれにせよ、{{jsxref("Function.prototype.bind", "bind")}} を使用することで簡略化することができます。</p>
+
+<pre class="brush: js notranslate">let unboundSlice = Array.prototype.slice
+let slice = Function.prototype.call.bind(unboundSlice)
+
+function list() {
+ return slice(arguments)
+}
+
+let list1 = list(1, 2, 3) // [1, 2, 3]</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.slice', 'Array.prototype.slice')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.slice")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.splice()")}}</li>
+ <li>{{jsxref("Function.prototype.call()")}}</li>
+ <li>{{jsxref("Function.prototype.bind()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/some/index.html b/files/ja/web/javascript/reference/global_objects/array/some/index.html
new file mode 100644
index 0000000000..9899199ae8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/some/index.html
@@ -0,0 +1,197 @@
+---
+title: Array.prototype.some()
+slug: Web/JavaScript/Reference/Global_Objects/Array/some
+tags:
+ - Array
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/some
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>some()</code></strong> メソッドは、配列の少なくとも一つの要素が、指定された関数で実装されたテストに合格するかどうかをテストします。これはブール値を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-some.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.some(<var>callback</var>(<var>element</var>[, <var>index</var>[, <var>array</var>]])[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>
+ <p>各要素に対してテストを実行する関数です。次の 3 つの引数を取ります。</p>
+
+ <dl>
+ <dt><code><var>element</var></code></dt>
+ <dd>現在処理されている要素です。</dd>
+ <dt><code><var>index</var></code>{{optional_inline}}</dt>
+ <dd>現在処理されている要素のインデックスです。</dd>
+ <dt><code><var>array</var></code>{{optional_inline}}</dt>
+ <dd><code>some()</code> が実行されている配列です。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code>{{optional_inline}}</dt>
+ <dd><code><var>callback</var></code> を実行するときに <code>this</code> として使用するオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列内の少なくとも1つの要素でコールバック関数が{{Glossary("truthy", "真と解釈される")}}値を返した場合は <strong><code>true</code></strong> です。それ以外は <strong><code>false</code></strong> です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>some()</code> は、与えられた <code><var>callback</var></code> 関数を、配列に含まれる各要素に対して一度ずつ、<code><var>callback</var></code> が<em>真と解釈される</em>値 (論理型に変換した際に真となる値) を返す要素が見つかるまで呼び出します。そのような要素が見つかると、<code>some()</code> はただちに <code>true</code> を返します。見つからなかった場合、<code>some()</code> は <code>false</code> を返します。<code><var>callback</var></code> は値が代入されている配列の要素に対してのみ呼び出されます。つまり、すでに削除された要素や、まだ値が代入されていない要素に対しては呼び出されません。</p>
+
+<p><code><var>callback</var></code> は、要素の値、要素のインデックス、走査されている Array オブジェクトという 3 つの引数を伴って呼び出されます。</p>
+
+<p><code><var>thisArg</var></code> 引数が <code>some()</code> に与えられると、それがコールバックのの <code>this</code> として使用されます。それ以外は、{{jsxref("undefined")}} 値が <code>this</code> として使用されるでしょう。 <code><var>callback</var></code> が最終的に見ることができる <code>this</code> の値は、<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数から見た <code>this</code> の決定に関する一般的なルール</a>によって決定されます。</p>
+
+<p><code>some()</code> は呼び出された配列を変化させません。</p>
+
+<p><code>some()</code> によって処理される要素の範囲は、<code><var>callback</var></code> が最初に呼び出される前に設定されます。<code>some()</code> の呼び出しが開始された後に追加された要素に対しては、<code><var>callback</var></code> は実行されません。既存の配列要素が変更されたり、削除されたりした場合、<code><var>callback</var></code> に渡される値は <code>some()</code> がそれらを訪れた時点での値になり、削除された要素を訪問することはありません。</p>
+
+<div class="note">
+<p><strong>注</strong>: このメソッドは空の配列ではあらゆる条件式に対して <code>false</code> を返します。</p>
+</div>
+
+<h2 id="Polyfill" name="Polyfill">Polyfill</h2>
+
+<p><code>some()</code> は ECMA-262 標準の第 5 版に追加されたメソッドなので、この標準に準拠したすべての実装に存在するわけではありません。次のコードをスクリプトの先頭に追加することにより <code>some()</code> にネイティブで対応していない実装上でも使用可能になります。</p>
+
+<p>このアルゴリズムは ECMA-262 第 5 版で指示されたアルゴリズムとまったく同じものです。 {{jsxref("Object")}}、{{jsxref("TypeError")}} はそれぞれオリジナルの値を持ち、またそれらの <code>fun.call</code> {{jsxref("Function.prototype.call()")}} のオリジナルの値として評価されます。</p>
+
+<pre class="brush: js notranslate">// Production steps of ECMA-262, Edition 5, 15.4.4.17
+// Reference: http://es5.github.io/#x15.4.4.17
+if (!Array.prototype.some) {
+ Array.prototype.some = function(fun, thisArg) {
+ 'use strict';
+
+ if (this == null) {
+ throw new TypeError('Array.prototype.some called on null or undefined');
+ }
+
+ if (typeof fun !== 'function') {
+ throw new TypeError();
+ }
+
+ var t = Object(this);
+ var len = t.length &gt;&gt;&gt; 0;
+
+ for (var i = 0; i &lt; len; i++) {
+ if (i in t &amp;&amp; fun.call(thisArg, t[i], i, t)) {
+ return true;
+ }
+ }
+
+ return false;
+ };
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Testing_value_of_array_elements" name="Testing_value_of_array_elements">配列要素の値のテスト</h3>
+
+<p>次の例は、配列のいずれかの要素が 10 よりも大きいかどうかをテストします。</p>
+
+<pre class="brush: js notranslate">function isBiggerThan10(element, index, array) {
+ return element &gt; 10;
+}
+
+[2, 5, 8, 1, 4].some(isBiggerThan10); // false
+[12, 5, 8, 1, 4].some(isBiggerThan10); // true</pre>
+
+<h3 id="Testing_array_elements_using_arrow_functions" name="Testing_array_elements_using_arrow_functions">アロー関数を使った配列要素のテスト</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a> はより短い構文で同じテストを提供します。</p>
+
+<pre class="brush: js notranslate">[2, 5, 8, 1, 4].some(x =&gt; x &gt; 10); // false
+[12, 5, 8, 1, 4].some(x =&gt; x &gt; 10); // true</pre>
+
+<h3 id="Checking_whether_a_value_exists_in_an_array" name="Checking_whether_a_value_exists_in_an_array">ある値が配列に存在するかどうかのチェック</h3>
+
+<p><code>includes()</code> メソッドを真似て、このカスタム関数は配列にその要素が存在する場合に <code>true</code> を返します。</p>
+
+<pre class="brush: js notranslate">const fruits = ['apple', 'banana', 'mango', 'guava'];
+
+function checkAvailability(arr, val) {
+ return arr.some(function(arrVal) {
+ return val === arrVal;
+ });
+}
+
+checkAvailability(fruits, 'kela'); // false
+checkAvailability(fruits, 'banana'); // true</pre>
+
+<h3 id="Checking_whether_a_value_exists_using_an_arrow_function" name="Checking_whether_a_value_exists_using_an_arrow_function">アロー関数を使ったある値が存在するかどうかのチェック</h3>
+
+<pre class="brush: js notranslate">const fruits = ['apple', 'banana', 'mango', 'guava'];
+
+function checkAvailability(arr, val) {
+ return arr.some(arrVal =&gt; val === arrVal);
+}
+
+checkAvailability(fruits, 'kela'); // false
+checkAvailability(fruits, 'banana'); // true</pre>
+
+<h3 id="Converting_any_value_to_Boolean" name="Converting_any_value_to_Boolean">任意の値の Boolean への変換</h3>
+
+<pre class="brush: js notranslate">const TRUTHY_VALUES = [true, 'true', 1];
+
+function getBoolean(value) {
+ 'use strict';
+
+ if (typeof value === 'string') {
+ value = value.toLowerCase().trim();
+ }
+
+ return TRUTHY_VALUES.some(function(t) {
+ return t === value;
+ });
+}
+
+getBoolean(false); // false
+getBoolean('false'); // false
+getBoolean(1); // true
+getBoolean('true'); // true</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-array.prototype.some", "Array.prototype.some")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.some")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.every()")}}</li>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Array.prototype.find()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.some()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/sort/index.html b/files/ja/web/javascript/reference/global_objects/array/sort/index.html
new file mode 100644
index 0000000000..6719c55cd4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/sort/index.html
@@ -0,0 +1,256 @@
+---
+title: Array.prototype.sort()
+slug: Web/JavaScript/Reference/Global_Objects/Array/sort
+tags:
+ - Array
+ - Array method
+ - JavaScript
+ - Method
+ - Prototype
+ - Sorting
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/sort
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>sort()</strong></code> メソッドは、配列の要素を <em><a href="https://ja.wikipedia.org/wiki/In-place アルゴリズム">in place</a></em> でソートします。既定のソート順は昇順で、要素を文字列に変換してから、UTF-16 コード単位の値の並びとして比較します。</p>
+
+<p>このソートで消費される CPU時間やメモリースペースは実装に依存するので、ここで言及することは出来ません。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-sort.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.sort(<var>[compareFunction]</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>compareFunction</code> {{optional_inline}}</dt>
+ <dd>ソート順を定義する関数を指定します。省略された場合、配列の各要素は文字列に変換され、各文字の <a href="/ja/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Unicode">Unicode</a> のコードポイント順に従ってソートされます。</dd>
+ <dl>
+ <dt><code>firstEl</code></dt>
+ <dd>比較対象の一つ目の要素を指定します。</dd>
+ <dt><code>secondEl</code></dt>
+ <dd>比較対象の二つ目の要素を指定します。</dd>
+ </dl>
+
+</dl>
+
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>ソートされた結果の配列。ソートは対象配列上で <em><a href="https://en.wikipedia.org/wiki/In-place_algorithm">in place</a></em> に行われることに注意して下さい。コピーされた別の配列が準備されることはありません。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>compareFunction</code> (比較関数) が与えられなかった場合、<code>undefined</code> 以外のすべての配列要素は文字列に変換され、文字列が UTF-16 コード単位順でソートされます。例えば、"banana" は "cherry" の前に来ます。数値のソートでは、9 が 80 の前に来ますが、数値は文字列に変換されるため、Unicode 順で "80" が "9" の前に来ます。<code>undefined</code> の要素はすべて、配列の末尾に並べられます。</p>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> UTF-16 では、<code>\uFFFF</code> を超える Unicode 文字は 2 つのサロゲートコード単位にエンコードされ、<code>\uD800</code>-<code>\uDFFF</code> の範囲になります。それぞれのコード単位の値は比較では別々に扱われます。したがって、<code>\uD655\uDE55</code> というサロゲートペアで形成される文字は、<code>\uFF3A</code> の文字よりも前に並べられます。</p>
+</div>
+
+<p><code>compareFunction</code> が与えられた場合、<code>undefined</code> 以外のすべての配列要素は比較関数の返値に基づきソートされます (<code>undefined</code> の要素はすべて、<code>compareFunction</code> を呼び出すことなく配列の末尾へ並べられます)。もし <code>a</code> と <code>b</code> を比較しようとする場合は、次のようになります。</p>
+
+<ul>
+ <li><code>compareFunction(a, b)</code> が 0 未満の場合、<code>a</code> を <code>b</code> より小さいインデックスにソートします。(つまり、<code>a</code> が先に来るようにします)</li>
+ <li><code>compareFunction(a, b)</code> が 0 を返した場合、<code>a</code> と <code>b</code> は互いに変更せず、他のすべての要素に対してソートします。注意: ECMAScript 標準はこの振る舞いを保証していないため、一部のブラウザー (例えば、遅くとも 2003 年以前のバージョンの Mozilla) はこれを遵守していません。</li>
+ <li><code>compareFunction(a, b)</code> が 0 より大きい場合、<code>b</code> を <code>a</code> より小さいインデックスにソートします。(つまり、<code>b</code> が先に来るようにします)</li>
+ <li><code>compareFunction(a, b)</code> に与えられた引数が同じなら返値も同じでなければなりません。もし一貫性のない値を返した場合の挙動は未定義となります。</li>
+</ul>
+
+<p>よって、比較関数は以下のような形式をもちます。</p>
+
+<pre class="brush: js notranslate">function compare(a, b) {
+ if (ある順序の基準において a が b より小) {
+ return -1;
+ }
+ if (その順序の基準において a が b より大) {
+ return 1;
+ }
+ // a は b と等しいはず
+ return 0;
+}
+</pre>
+
+<p>文字列の代わりに数字を比較する場合、比較関数は単純に <code>a</code> から <code>b</code> を引けばよいでしょう。次のように比較関数を定義すれば昇順に並べることができます (<code>Infinity</code> や <code>NaN</code> がなければですが)。</p>
+
+<pre class="brush: js notranslate">function compareNumbers(a, b) {
+ return a - b;
+}
+</pre>
+
+<p>比較関数には{{jsxref("Operators/function", "関数式", "", 1)}}を使うと便利です。</p>
+
+<pre class="brush: js notranslate">var numbers = [4, 2, 5, 1, 3];
+numbers.sort(function(a, b) {
+ return a - b;
+});
+console.log(numbers);
+
+// [1, 2, 3, 4, 5]
+</pre>
+
+<p>ES2015 では{{jsxref("Functions/Arrow_functions", "アロー関数式", "", 1)}}によるより短い構文も利用できます。</p>
+
+<pre class="brush: js notranslate">let numbers = [4, 2, 5, 1, 3];
+numbers.sort((a, b) =&gt; a - b);
+console.log(numbers);
+
+// [1, 2, 3, 4, 5]</pre>
+
+<p>オブジェクトはプロパティの値の 1 つを指定して並べ替えることができます。</p>
+
+<pre class="brush: js notranslate">var items = [
+ { name: 'Edward', value: 21 },
+ { name: 'Sharpe', value: 37 },
+ { name: 'And', value: 45 },
+ { name: 'The', value: -12 },
+ { name: 'Magnetic', value: 13 },
+ { name: 'Zeros', value: 37 }
+];
+
+// 値順にソート
+items.sort(function (a, b) {
+ return a.value - b.value;
+});
+
+// 名前順にソート
+items.sort(function(a, b) {
+ var nameA = a.name.toUpperCase(); // 大文字と小文字を無視する
+ var nameB = b.name.toUpperCase(); // 大文字と小文字を無視する
+ if (nameA &lt; nameB) {
+ return -1;
+ }
+ if (nameA &gt; nameB) {
+ return 1;
+ }
+
+ // names must be equal
+ return 0;
+});</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_displaying_and_sorting_an_array" name="Creating_displaying_and_sorting_an_array">配列の生成、表示、ソート</h3>
+
+<p>以下の例は 4 つの配列を生成し、元の配列を表示したのちに、ソートした配列を表示します。数値の配列は比較関数なしでソートされたのち、比較関数ありでソートされます。</p>
+
+<pre class="brush: js notranslate">var stringArray = ['Blue', 'Humpback', 'Beluga'];
+var numericStringArray = ['80', '9', '700'];
+var numberArray = [40, 1, 5, 200];
+var mixedNumericArray = ['80', '9', '700', 40, 1, 5, 200];
+
+function compareNumbers(a, b) {
+ return a - b;
+}
+
+console.log('stringArray:', stringArray.join());
+console.log('ソート結果:', stringArray.sort());
+
+console.log('numberArray:', numberArray.join());
+console.log('比較関数なしのソート結果:', numberArray.sort());
+console.log('compareNumbers でのソート結果:', numberArray.sort(compareNumbers));
+
+console.log('numericStringArray:', numericStringArray.join());
+console.log('比較関数なしのソート結果:', numericStringArray.sort());
+console.log('compareNumbers でのソート結果:', numericStringArray.sort(compareNumbers));
+
+console.log('mixedNumericArray:', mixedNumericArray.join());
+console.log('比較関数なしのソート結果:', mixedNumericArray.sort());
+console.log('compareNumbers でのソート結果:', mixedNumericArray.sort(compareNumbers));
+</pre>
+
+<p>この例は以下のような出力をもたらします。出力結果が示すように、比較関数が使われた場合、数値はそれが数値か数字の文字列かにかかわらず正しくソートされます。</p>
+
+<pre class="notranslate">stringArray: Blue,Humpback,Beluga
+ソート結果: Beluga,Blue,Humpback
+
+numberArray: 40,1,5,200
+比較関数なしのソート結果: 1,200,40,5
+compareNumbers でのソート結果: 1,5,40,200
+
+numericStringArray: 80,9,700
+比較関数なしのソート結果: 700,80,9
+compareNumbers でのソート結果: 9,80,700
+
+mixedNumericArray: 80,9,700,40,1,5,200
+比較関数なしのソート結果: 1,200,40,5,700,80,9
+compareNumbers でのソート結果: 1,5,9,40,80,200,700
+</pre>
+
+<h3 id="Sorting_non-ASCII_characters" name="Sorting_non-ASCII_characters">非ASCII文字のソート</h3>
+
+<p>非 ASCII 文字、つまりアクセント記号付き文字 (e, é, è, a, ä など) を含む文字列をソートする場合、英語以外の文字列は {{jsxref("String.localeCompare")}} を使用してください。この関数は、それらの文字を比較して正しい順序で表示することができます。</p>
+
+<pre class="brush: js notranslate">var items = ['réservé', 'premier', 'communiqué', 'café', 'adieu', 'éclair'];
+items.sort(function (a, b) {
+ return a.localeCompare(b);
+});
+
+// items は ['adieu', 'café', 'communiqué', 'éclair', 'premier', 'réservé']
+</pre>
+
+<h3 id="Sorting_with_map" name="Sorting_with_map">map を利用したソート</h3>
+
+<p><code>compareFunction</code> (比較関数) は、配列内の要素毎に複数回呼び出すことができます。ただ <code>compareFunction</code> の性質によっては、これが多大なオーバーヘッドをもたらす可能性もあります。<code>compareFunction</code> がたくさんの処理を行えば行うほど、そしてソート対象の要素数が多ければ多いほど、ソートに <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a> を利用すると効率が上がるでしょう。すなわち、対象の配列を一度だけ走査してソート対象の実際の値を取り出し、一時的な配列に格納した上でソートを行い、その上で一時的な配列を走査して正しい並び順を実現するやりかたです。</p>
+
+<pre class="brush: js notranslate">// ソートする配列
+var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
+
+// temporary array holds objects with position and sort-value
+var mapped = list.map(function(el, i) {
+ return { index: i, value: el.toLowerCase() };
+})
+
+// sorting the mapped array containing the reduced values
+mapped.sort(function(a, b) {
+ if (a.value &gt; b.value) {
+ return 1;
+ }
+ if (a.value &lt; b.value) {
+ return -1;
+ }
+ return 0;
+});
+
+// container for the resulting order
+var result = mapped.map(function(el){
+ return list[el.index];
+});
+</pre>
+
+<p>There is an open source library available called <a href="https://null.house/open-source/mapsort">mapsort</a> which applies this approach.</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.sort', 'Array.prototype.sort')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.sort")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.reverse()")}}</li>
+ <li>{{jsxref("String.prototype.localeCompare()")}}</li>
+ <li><a href="https://v8.dev/blog/array-sort">About the stability of the algorithm used by V8 engine</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/splice/index.html b/files/ja/web/javascript/reference/global_objects/array/splice/index.html
new file mode 100644
index 0000000000..3f30251a3e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/splice/index.html
@@ -0,0 +1,160 @@
+---
+title: Array.prototype.splice()
+slug: Web/JavaScript/Reference/Global_Objects/Array/splice
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - remove
+ - replace
+ - splice
+ - プロトタイプ
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/splice
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>splice()</code></strong> メソッドは、<a href="https://ja.wikipedia.org/wiki/In-place%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0">in place</a> で既存の要素を取り除いたり、置き換えたり、新しい要素を追加したりすることで、配列の内容を変更します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-splice.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">let <var>arrDeletedItems</var> = <var>array</var>.splice(<var>start</var>[, <var>deleteCount</var>[, <var>item1</var>[, <var>item2</var>[, ...]]]])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>start</var></code></dt>
+ <dd>配列を変更する開始位置を表すインデックスです。</dd>
+ <dd>値が配列の長さより大きい場合は、<code><var>start</var></code> は配列の長さに設定されます。この場合、削除される要素はありませんが、このメソッドは追加関数として動作し、提供された item[n*] の数だけ要素を追加します。</dd>
+ <dd>値が負数の場合は、配列の末尾から要素数を戻ったところから始まります (<code>-1</code> が原点で、<code>-<var>n</var></code> は最後の要素から <code><var>n</var></code> 番目であることを意味し、したがってインデックスが <code><var>array</var>.length - <var>n</var></code> であるのと同等です)。</dd>
+ <dd><code><var>start</var></code> の絶対値が配列の長さよりも大きい場合は、インデックス <code>0</code> から始まります。</dd>
+ <dt><code><var>deleteCount</var></code> {{optional_inline}}</dt>
+ <dd>配列の <code><var>start</var></code> から取り除く古い要素の数を示す整数です。</dd>
+ <dd><code><var>deleteCount</var></code> 引数が省略された場合、または <code>array.length - start</code> 以上 (つまり、<code><var>start</var></code> から始まり、配列に残る要素の数以上の場合) の場合、<code><var>start</var></code> 以降のすべての要素が取り除かれます。</dd>
+ <dd>
+ <div class="blockIndicator note">
+ <p><strong>メモ:</strong> IE8 では、<code><var>deleteCount</var></code> が省略された場合はすべての要素を削除しません。</p>
+ </div>
+ </dd>
+ <dd><code><var>deleteCount</var></code> が <code>0</code> か負数の場合、どの要素も取り除かれません。この場合、少なくとも 1 つの新しい要素を指定する必要があります (以下参照)。</dd>
+ <dt><code><var>item1</var>, <var>item2</var>, ...</code> {{optional_inline}}</dt>
+ <dd>配列に追加する要素で、<code><var>start</var></code> から始まります。要素を指定しなかった場合、<code>splice()</code> は単に配列から要素を取り除きます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>取り除かれた要素を含む配列です。</p>
+
+<p>要素が 1 つのみ削除された場合は、要素数 1 の配列が返されます。</p>
+
+<p>要素が削除されなかった場合、空の配列が返されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>取り除こうとする要素数と異なる数の要素を挿入するように指定した場合、関数呼び出しが終わったとき配列は初めと異なる長さになります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Remove_0_zero_elements_before_index_2_and_insert_drum" name="Remove_0_zero_elements_before_index_2_and_insert_drum">index 2 の位置 (3番目の要素の前) から 0 個の要素を削除して "drum" を挿入する</h3>
+
+<pre class="brush: js notranslate">let myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
+let removed = myFish.splice(2, 0, 'drum')
+
+// myFish は ["angel", "clown", "drum", "mandarin", "sturgeon"]
+// removed は [], どの要素も取り除かれていない (空配列) </pre>
+
+<h3 id="Remove_0_zero_elements_before_index_2_and_insert_drum_and_guitar" name="Remove_0_zero_elements_before_index_2_and_insert_drum_and_guitar">index 2 の位置 (3 番目の要素の前) から 0 個の要素を削除して、"drum" と "guitar" を挿入する</h3>
+
+<pre class="brush: js notranslate">let myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
+let removed = myFish.splice(2, 0, 'drum', 'guitar')
+
+// myFish is ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
+// removed is [], no elements removed
+</pre>
+
+<h3 id="Remove_1_element_at_index_3" name="Remove_1_element_at_index_3">index 3 の位置 (4番目の要素) から一つ取り除く</h3>
+
+<pre class="brush: js notranslate">let myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon']
+let removed = myFish.splice(3, 1)
+
+// removed は ["mandarin"]
+// myFish は ["angel", "clown", "drum", "sturgeon"]
+</pre>
+
+<h3 id="Remove_1_element_at_index_2_and_insert_trumpet" name="Remove_1_element_at_index_2_and_insert_trumpet">index 2 の位置 (3 番目の要素) から 1 つ取り除いて "trumpet" を挿入する</h3>
+
+<pre class="brush: js notranslate">let myFish = ['angel', 'clown', 'drum', 'sturgeon']
+let removed = myFish.splice(2, 1, 'trumpet')
+
+// myFish は ["angel", "clown", "trumpet", "sturgeon"]
+// removed は ["drum"]</pre>
+
+<h3 id="Remove_2_elements_from_index_0_and_insert_parrot_anemone_and_blue" name="Remove_2_elements_from_index_0_and_insert_parrot_anemone_and_blue">index 0 の位置 (先頭の要素) から二つ取り除き、そこへ "parrot" と "anemore" と "blue" を挿入する</h3>
+
+<pre class="brush: js notranslate">let myFish = ['angel', 'clown', 'trumpet', 'sturgeon']
+let removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue')
+
+// myFish は ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
+// removed は ["angel", "clown"]</pre>
+
+<h3 id="Remove_2_elements_from_index_2" name="Remove_2_elements_from_index_2">配列長 - 3 の位置 (後ろから 3番目) から 2 つ取り除く</h3>
+
+<pre class="brush: js notranslate">let myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon']
+let removed = myFish.splice(-3, 2)
+
+// myFish は ["parrot", "anemone", "sturgeon"]
+// removed は ["blue", "trumpet"]</pre>
+
+<h3 id="Remove_1_element_from_index_-2" name="Remove_1_element_from_index_-2">index -2 の位置 (後ろから 2番目) から 1 つ取り除く</h3>
+
+<pre class="brush: js notranslate">let myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
+let removed = myFish.splice(-2, 1)
+
+// myFish は ["angel", "clown", "sturgeon"]
+// removed は ["mandarin"]</pre>
+
+<h3 id="Remove_all_elements_after_index_2_incl." name="Remove_all_elements_after_index_2_incl.">index 2 の位置 (3番目の要素) から末端までを取り除く</h3>
+
+<pre class="brush: js notranslate">let myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
+let removed = myFish.splice(2)
+
+// myFish は ["angel", "clown"]
+// removed は ["mandarin", "sturgeon"]</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.splice', 'Array.prototype.splice')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.splice")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.push()", "push()")}} / {{jsxref("Array.prototype.pop()", "pop()")}} - 配列末尾の要素の追加 / 削除</li>
+ <li>{{jsxref("Array.prototype.unshift()", "unshift()")}} / {{jsxref("Array.prototype.shift()", "shift()")}} - 配列先頭の要素の追加 / 削除</li>
+ <li>{{jsxref("Array.prototype.concat()", "concat()")}} - 配列に他の配列や値をつないでできた新しい配列を返す</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/tolocalestring/index.html b/files/ja/web/javascript/reference/global_objects/array/tolocalestring/index.html
new file mode 100644
index 0000000000..b539cfa293
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/tolocalestring/index.html
@@ -0,0 +1,179 @@
+---
+title: Array.prototype.toLocaleString()
+slug: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString
+tags:
+ - Array
+ - Internationalization
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toLocaleString()</code></strong> メソッドは、配列の要素を表す文字列を返します。配列の要素は、それぞれの <code>toLocaleString</code> メソッドを使い、ロケール固有の文字列に変換されます (例えばカンマ “,”など)。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-tolocalestring.html","shorter")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.toLocaleString([<var>locales[</var>, <var>options]]</var>);
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>locales</code> {{optional_inline}}</dt>
+ <dd>BCP 47 言語タグの文字列か、その配列です。<code>locales</code> 引数の一般的な形式と解釈については {{jsxref("Intl")}} ページを参照してください。</dd>
+ <dt><code>options</code> {{optional_inline}}</dt>
+ <dd>設定プロパティのオブジェクトです。数値に関しては {{jsxref("Number.prototype.toLocaleString()")}} を、日付に関しては {{jsxref("Date.prototype.toLocaleString()")}} を見てください。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列の要素を表す文字列です。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">// https://tc39.github.io/ecma402/#sup-array.prototype.tolocalestring
+if (!Array.prototype.toLocaleString) {
+ Object.defineProperty(Array.prototype, 'toLocaleString', {
+ value: function(locales, options) {
+ // 1. Let O be ? ToObject(this value).
+ if (this == null) {
+ throw new TypeError('"this" is null or not defined');
+ }
+
+ var a = Object(this);
+
+ // 2. Let len be ? ToLength(? Get(A, "length")).
+ var len = a.length &gt;&gt;&gt; 0;
+
+ // 3. Let separator be the String value for the
+ // list-separator String appropriate for the
+ // host environment's current locale (this is
+ // derived in an implementation-defined way).
+ // NOTE: In this case, we will use a comma
+ var separator = ',';
+
+ // 4. If len is zero, return the empty String.
+ if (len === 0) {
+ return '';
+ }
+
+ // 5. Let firstElement be ? Get(A, "0").
+ var firstElement = a[0];
+ // 6. If firstElement is undefined or null, then
+ // a.Let R be the empty String.
+ // 7. Else,
+ // a. Let R be ?
+ // ToString(?
+ // Invoke(
+ // firstElement,
+ // "toLocaleString",
+ // « locales, options »
+ // )
+ // )
+ var r = firstElement == null ?
+ '' : firstElement.toLocaleString(locales, options);
+
+ // 8. Let k be 1.
+ var k = 1;
+
+ // 9. Repeat, while k &lt; len
+ while (k &lt; len) {
+ // a. Let S be a String value produced by
+ // concatenating R and separator.
+ var s = r + separator;
+
+ // b. Let nextElement be ? Get(A, ToString(k)).
+ var nextElement = a[k];
+
+ // c. If nextElement is undefined or null, then
+ // i. Let R be the empty String.
+ // d. Else,
+ // i. Let R be ?
+ // ToString(?
+ // Invoke(
+ // nextElement,
+ // "toLocaleString",
+ // « locales, options »
+ // )
+ // )
+ r = nextElement == null ?
+ '' : nextElement.toLocaleString(locales, options);
+
+ // e. Let R be a String value produced by
+ // concatenating S and R.
+ r = s + r;
+
+ // f. Increase k by 1.
+ k++;
+ }
+
+ // 10. Return R.
+ return r;
+ }
+ });
+}
+</pre>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a></code> が利用できないとても古い JavaScript エンジンをサポートする必要がある場合、<code>Array.prototype</code> のメソッドを polyfill するのは避けたほうがよいでしょう。それらを列挙不可にすることができないからです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_locales_and_options" name="Using_locales_and_options">locales と options の使用</h3>
+
+<p>配列の要素は、その <code>toLocaleString</code> メソッドを使用して文字列に変換されます。</p>
+
+<ul>
+ <li><code>Object</code>: {{jsxref("Object.prototype.toLocaleString()")}}</li>
+ <li><code>Number</code>: {{jsxref("Number.prototype.toLocaleString()")}}</li>
+ <li><code>Date</code>: {{jsxref("Date.prototype.toLocaleString()")}}</li>
+</ul>
+
+<p><code>prices</code> 配列内の文字列と数値の通貨を常に表示します。</p>
+
+<pre class="brush: js notranslate">var prices = ['¥7', 500, 8123, 12];
+prices.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' });
+
+// "¥7,¥500,¥8,123,¥12"
+</pre>
+
+<p>さらに多くの例を知りたいなら、 {{jsxref("Intl")}} や {{jsxref("NumberFormat")}}、{{jsxref("DateTimeFormat")}} ページを見てください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sup-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.toLocaleString")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.toString()")}}</li>
+ <li>{{jsxref("Intl")}}</li>
+ <li>{{jsxref("Object.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Number.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/tosource/index.html b/files/ja/web/javascript/reference/global_objects/array/tosource/index.html
new file mode 100644
index 0000000000..d9feb311b9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/tosource/index.html
@@ -0,0 +1,69 @@
+---
+title: Array.prototype.toSource()
+slug: Web/JavaScript/Reference/Global_Objects/Array/toSource
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Non-standard
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/toSource
+---
+<div>{{JSRef}} {{obsolete_header}}</div>
+
+<p><code><strong>toSource()</strong></code> メソッドは、配列のソースコードを表す文字列を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.toSource()</pre>
+
+<h3 id="Return_value" name="Return_value">返り値</h3>
+
+<p>配列のソースコードを表す文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>toSource</code> メソッドは以下の値を返します。</p>
+
+<ul>
+ <li>組み込みの {{jsxref("Array")}} オブジェクトにおいては、<code>toSource</code> はソースコードが利用不可能なことを示す以下の文字列を返します。
+
+ <pre class="brush: js notranslate">function Array() {
+ [native code]
+}
+</pre>
+ </li>
+ <li>{{jsxref("Array")}} のインスタンスにおいては、<code>toSource</code> はソースコードを表す文字列を返します。</li>
+</ul>
+
+<p>このメソッドはたいてい JavaScript によって内部的に呼び出され、コードで明示的に呼び出されることはありません。デバッグ中に <code>toSource</code> を呼び出すことで、あなたは配列の内容を調べることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Examining_the_source_code_of_an_array" name="Examining_the_source_code_of_an_array">配列のソースコードを調べる</h3>
+
+<p>配列のソースコードを調べるには以下のようにします。</p>
+
+<pre class="brush: js notranslate">var alpha = new Array('a', 'b', 'c');
+
+alpha.toSource();
+// ['a', 'b', 'c'] が返る
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>あらゆる標準仕様に組み込まれていません。JavaScript 1.3 で実装されました。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.toSource")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toSource()")}}</li>
+ <li>{{jsxref("Array.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/tostring/index.html b/files/ja/web/javascript/reference/global_objects/array/tostring/index.html
new file mode 100644
index 0000000000..70dd6b5ece
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/tostring/index.html
@@ -0,0 +1,73 @@
+---
+title: Array.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/Array/toString
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/toString
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>toString()</strong></code> メソッドは、指定された配列とその要素を表す文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-tostring.html","shorter")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.toString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列の要素を表す文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Array")}} オブジェクトは {{jsxref("Object")}} の <code>toString</code> メソッドを上書きしています。Array オブジェクトでは、<code>toString</code> メソッドは配列をつないで、配列のそれぞれの要素がカンマで区切られた 1 つの文字列を返します。</p>
+
+<p>配列が文字列値として表される必要がある場合や、配列が文字列の結合として参照される時、JavaScript は <code>toString</code> メソッドを自動的に呼び出します。</p>
+
+<h3 id="ECMAScript_5_semantics" name="ECMAScript_5_semantics">ECMAScript 5 でのセマンティック</h3>
+
+<p>JavaScript 1.8.5 (Firefox 4)以降、および ECMAScript 第 5 版では、<code>toString()</code> メソッドは一般化されており、すべてのオブジェクトで使用可能となっています。{{jsxref("Object.prototype.toString()")}} が呼び出され、その結果の値が返されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toString" name="Using_toString">toString を使用する</h3>
+
+<pre class="brush: js notranslate">const array1 = [1, 2, 'a', '1a'];
+
+console.log(array1.toString());
+// expected output: "1,2,a,1a"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.tostring', 'Array.prototype.toString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.toString")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.join()")}}</li>
+ <li>{{jsxref("Object.prototype.toSource()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/unobserve/index.html b/files/ja/web/javascript/reference/global_objects/array/unobserve/index.html
new file mode 100644
index 0000000000..1eafff5efa
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/unobserve/index.html
@@ -0,0 +1,134 @@
+---
+title: Array.unobserve
+slug: Web/JavaScript/Reference/Global_Objects/Array/unobserve
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Obsolete
+translation_of: Archive/Web/JavaScript/Array.unobserve
+---
+<div>{{JSRef}} {{obsolete_header}}</div>
+
+<p>Array<strong>.unobserve()</strong>メソッドは、{{jsxref("Array.observe()")}} で設定された監視を削除するために使われていましたが、非推奨となりブラウザから削除されました。代わりに、一般的な {{jsxref("Proxy")}} オブジェクトを使用してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Array.unobserve(<var>arr</var>, <var>callback</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>arr</code></dt>
+ <dd>監視を停止する配列。</dd>
+ <dt><code>callback</code></dt>
+ <dd><strong>arr</strong> 配列の変更時に毎回呼び出されるのを停止するための、オブザーバへの参照。</dd>
+</dl>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>配列からオブザーバを削除するため、<code>Array.unobserve()</code> は {{jsxref("Array.observe()")}} の後に呼び出される必要があります。</p>
+
+<p>callback は関数への参照とすべきであり、匿名関数ではいけません。なぜなら、この参照は以前のオブザーバを解除するために使用されるからです。callback として匿名関数を使った <strong>Array.unobserve()</strong> の呼び出しは、オブザーバを削除できないので無意味です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Unobserving_an_array" name="Unobserving_an_array">配列の監視を削除</h3>
+
+<pre class="brush: js">var arr = [1, 2, 3];
+
+var observer = function(changes) {
+ console.log(changes);
+}
+
+Array.observe(arr, observer);
+​
+arr.push(4);
+// [{type: "splice", object: &lt;arr&gt;, index: 3, removed:[], addedCount: 1}]
+
+Array.unobserve(arr, observer);
+
+arr.pop();
+// callback は呼び出されなかった。</pre>
+
+<h3 id="Using_an_anonymous_function" name="Using_an_anonymous_function">匿名関数の使用</h3>
+
+<pre class="brush: js">var persons = ['Khalid', 'Ahmed', 'Mohammed'];
+
+Array.observe(persons, function (changes) {
+ console.log(changes);
+});
+
+persons.shift();
+// [{type: "splice", object: &lt;arr&gt;, index: 0, removed: [ "Khalid" ], addedCount: 0 }]
+
+Array.unobserve(persons, function (changes) {
+ console.log(changes);
+});
+
+persons.push('Abdullah');
+// [{type: "splice", object: &lt;arr&gt;, index: 2, removed: [], addedCount: 1 }]
+// callback は常に呼び出される。
+</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{CompatibilityTable}}</div>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatChrome("36")}} [1]</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatOpera("23")}}</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Android</th>
+ <th>Chrome for Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatChrome("36")}} [1]</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatOpera("23")}}</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>[1] Chrome 49 で非推奨になりました。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.observe()")}} {{obsolete_inline}}</li>
+ <li>{{jsxref("Object.observe()")}} {{obsolete_inline}}</li>
+ <li>{{jsxref("Object.unobserve()")}} {{obsolete_inline}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/unshift/index.html b/files/ja/web/javascript/reference/global_objects/array/unshift/index.html
new file mode 100644
index 0000000000..cd4c85714a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/unshift/index.html
@@ -0,0 +1,108 @@
+---
+title: Array.prototype.unshift()
+slug: Web/JavaScript/Reference/Global_Objects/Array/unshift
+tags:
+ - Array
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/unshift
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>unshift()</strong></code> メソッドは、配列の最初に 1 つ以上の要素を追加し、新しい配列の長さを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-unshift.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.unshift(<var>element1</var>[, ...[, <var>elementN</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>element<em>N</em></code></dt>
+ <dd><code><var>arr</var></code> の先頭に追加する要素。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>メソッドを呼び出した後のオブジェクトの新しい {{jsxref("Array.length", "length")}} プロパティの値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>unshift</code> メソッドは、与えられた要素を配列のようなオブジェクトの一番最初に挿入します。</p>
+
+<p><code>unshift</code> は意図して汎用的です。このメソッドは,配列に類似したオブジェクトに対して{{jsxref("Function.call", "呼び出し", "", 1)}}たり,{{jsxref("Function.apply", "適用し", "", 1)}}たりすることができます。 <code>length</code> プロパティ、すなわち連続の最後を示すゼロベースの数値プロパティ、を反映しているため、意味のある振る舞いができない可能性があります。</p>
+
+<p>複数の要素が引数として渡された場合、引数として渡されたものと全く同じ順番で、オブジェクトの最初のチャンクに挿入されることに注意してください。したがって、 <code>unshift</code> を <code><var>n</var></code> 個の引数で1回呼び出すのと、1個の引数で <code><var>n</var></code> 回 (例えばループを使って) 呼び出すのとでは同じ結果にはなりません。</p>
+
+<p>例をご覧ください。</p>
+
+<pre class="syntaxbox notranslate">let arr = [4, 5, 6]
+
+arr.unshift(1, 2, 3)
+console.log(arr);
+// [<strong>1, 2, 3</strong>, 4, 5, 6]
+
+arr = [4, 5, 6] // 配列をリセット
+
+arr.unshift(1)
+arr.unshift(2)
+arr.unshift(3)
+
+console.log(arr)
+// [<strong>3, 2, 1</strong>, 4, 5, 6]
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_unshift" name="Using_unshift">unshift の使用</h3>
+
+<pre class="brush: js notranslate">let arr = [1, 2]
+
+arr.unshift(0) // 呼び出しの返値は 3、新しい配列の長さ
+// arr is [0, 1, 2]
+
+arr.unshift(-2, -1) // 新しい配列の長さは 5
+// arr is [-2, -1, 0, 1, 2]
+
+arr.unshift([-4, -3]) // 新しい配列の長さは 6
+// arr is [[-4, -3], -2, -1, 0, 1, 2]
+
+arr.unshift([-7, -6], [-5]) // 新しい配列の長さは 8
+// arr is [ [-7, -6], [-5], [-4, -3], -2, -1, 0, 1, 2 ]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.unshift")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.push()")}}</li>
+ <li>{{jsxref("Array.prototype.pop()")}}</li>
+ <li>{{jsxref("Array.prototype.shift()")}}</li>
+ <li>{{jsxref("Array.prototype.concat()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/array/values/index.html b/files/ja/web/javascript/reference/global_objects/array/values/index.html
new file mode 100644
index 0000000000..29b90252b6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/array/values/index.html
@@ -0,0 +1,122 @@
+---
+title: Array.prototype.values()
+slug: Web/JavaScript/Reference/Global_Objects/Array/values
+tags:
+ - Array
+ - ECMAScript2015
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+ - メソッド
+ - 反復子
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/values
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>values()</code></strong> メソッドは、配列の各インデックスの値を含む新しい <strong><code>Array Iterator</code></strong> オブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-values.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.values()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい {{jsxref("Array")}} iterator オブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Iteration_using_for...of_loop" name="Iteration_using_for...of_loop">for...of ループを用いた反復処理</h3>
+
+<pre class="brush: js notranslate">var arr = ['a', 'b', 'c', 'd', 'e'];
+var iterator = arr.values();
+
+for (let letter of iterator) {
+ console.log(letter);
+} //"a" "b" "c" "d" "e"
+</pre>
+
+<p><strong>Array.prototype.values</strong> は <strong>Array.prototype[Symbol.iterator]</strong> の既定の実装です。</p>
+
+<pre class="notranslate">Array.prototype.values === Array.prototype[Symbol.iterator] //true</pre>
+
+<h3 id="Iteration_using_.next" name="Iteration_using_.next">.next() を使用した反復処理</h3>
+
+<pre class="brush: js notranslate">var arr = ['a', 'b', 'c', 'd', 'e'];
+var iterator = arr.values();
+iterator.next(); // Object { value: "a", done: false }
+iterator.next().value; // "b"
+iterator.next()["value"]; // "c"
+iterator.next(); // Object { value: "d", done: false }
+iterator.next(); // Object { value: "e", done: false }
+iterator.next(); // Object { value: undefined, done: true }
+iteraror.next().value; // undefined </pre>
+
+<div class="blockIndicator warning">
+<p>一度だけの使用: 配列の反復子オブジェクトは一度だけの使用またはテンポラリオブジェクトです</p>
+</div>
+
+<p>例:</p>
+
+<pre class="brush: js notranslate">var arr = ['a', 'b', 'c', 'd', 'e'];
+ var iterator = arr.values();
+ for (let letter of iterator) {
+ console.log(letter);
+} //"a" "b" "c" "d" "e"
+for (let letter of iterator) {
+console.log(letter);
+} // undefined
+</pre>
+
+<p><strong>理由:</strong> <code>next().done=true</code> または <code>currentIndex&gt;length</code> が <code>for..of</code> の終了条件だからです。<a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復処理プロトコル</a>を参照して下さい。</p>
+
+<p><strong>値</strong>: 配列の反復子オブジェクトには値が格納されません。その代わりに、その作成に使用された配列のアドレスが格納されるので、その配列に格納されている値に依存します。</p>
+
+<pre class="brush: js notranslate">var arr = ['a', 'b', 'c', 'd', 'e'];
+var iterator = arr.values();
+console.log(iterator); // Array Iterator { }
+iterator.next().value; // "a"
+arr[1]='n';
+iterator.next().value; // "n"
+</pre>
+
+<div class="blockIndicator note">
+<p>配列内の値が変化した場合は、配列の反復子オブジェクトの値も変化します。</p>
+</div>
+
+<p class="hidden"><strong>TODO</strong>: please write about why we need it, use cases.</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.values', 'Array.prototype.values')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.values")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.keys()")}}</li>
+ <li>{{jsxref("Array.prototype.entries()")}}</li>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Array.prototype.every()")}}</li>
+ <li>{{jsxref("Array.prototype.some()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/arraybuffer/@@species/index.html b/files/ja/web/javascript/reference/global_objects/arraybuffer/@@species/index.html
new file mode 100644
index 0000000000..1b1043119a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/arraybuffer/@@species/index.html
@@ -0,0 +1,64 @@
+---
+title: 'get ArrayBuffer[@@species]'
+slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/@@species
+tags:
+ - ArrayBuffer
+ - JavaScript
+ - Method
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/@@species
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>ArrayBuffer[@@species]</code></strong> アクセサープロパティは、<code>ArrayBuffer</code> コンストラクターを返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>species アクセサープロパティは、既定のコンストラクターである <code>ArrayBuffer</code> オブジェクトを返します。サブクラスのコンストラクターはコンストラクターに代入することで、これをオーバーライドできます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Species_in_ordinary_objects" name="Species_in_ordinary_objects">通常のオブジェクトの spicies</h3>
+
+<p>species プロパティは、<code>ArrayBuffer</code> オブジェクトの既定のコンストラクター関数である <code>ArrayBuffer</code> コンストラクターを返します。</p>
+
+<pre class="brush: js notranslate">ArrayBuffer[Symbol.species]; // ArrayBuffer() 関数</pre>
+
+<h3 id="Species_in_derived_objects" name="Species_in_derived_objects">派生オブジェクトの spicies</h3>
+
+<p>派生コレクションオブジェクト (たとえば、独自の配列バッファーである <code>MyArrayBuffer</code>) では、<code>MyArrayBuffer</code> の species は <code>MyArrayBuffer</code> コンストラクターです。しかし、派生クラスのメソッドで、親である <code>ArrayBuffer</code> オブジェクトを返すためにこれをオーバーライドしたいかもしれません。</p>
+
+<pre class="brush: js notranslate">class MyArrayBuffer extends ArrayBuffer {
+ // MyArrayBuffer species を親である ArrayBuffer コンストラクタにオーバーライド。
+ static get [Symbol.species]() { return ArrayBuffer; }
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-arraybuffer-@@species', 'get ArrayBuffer [ @@species ]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.ArrayBuffer.@@species")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("Symbol.species")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/arraybuffer/arraybuffer/index.html b/files/ja/web/javascript/reference/global_objects/arraybuffer/arraybuffer/index.html
new file mode 100644
index 0000000000..2864dc83d3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/arraybuffer/arraybuffer/index.html
@@ -0,0 +1,82 @@
+---
+title: ArrayBuffer() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/ArrayBuffer
+tags:
+ - ArrayBuffer
+ - Constructor
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/ArrayBuffer
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>ArrayBuffer()</code></strong> コンストラクターは {{jsxref("ArrayBuffer")}} オブジェクトを生成するために使用されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/arraybuffer-constructor.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new ArrayBuffer(<var>length</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd>作成する配列バッファーのサイズをバイト単位で指定します。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたサイズの新しい <code>ArrayBuffer</code> オブジェクト。その内容は 0 に初期化されます。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("RangeError")}}: <code>length</code> が {{jsxref("Number.MAX_SAFE_INTEGER")}} よりも大きい (&gt;= 2 ** 53) か、負の値であった場合。</p>
+
+<h2 id="Compatibility_notes" name="Compatibility_notes">互換性の注意</h2>
+
+<p>ECMAScript 2015 から、<code>ArrayBuffer</code> のコンストラクターは構築に {{jsxref("Operators/new", "new")}} 演算子が必要になりました。 <code>new</code> を指定せずに関数として <code>ArrayBuffer</code> コンストラクターを呼び出すと、 {{jsxref("TypeError")}} が発生するようになりました。</p>
+
+<pre class="brush: js example-bad notranslate">var dv = ArrayBuffer(10);
+// TypeError: calling a builtin ArrayBuffer constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good notranslate">var dv = new ArrayBuffer(10);</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_an_ArrayBuffer" name="Creating_an_ArrayBuffer">ArrayBuffer の作成</h3>
+
+<p>この例では、バッファーを参照する {{jsxref("Global_Objects/Int32Array", "Int32Array")}} ビューを持つ 8 バイトのバッファーを作成しています。</p>
+
+<pre class="brush: js notranslate">var buffer = new ArrayBuffer(8);
+var view = new Int32Array(buffer);</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.ArrayBuffer.ArrayBuffer")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("SharedArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/arraybuffer/bytelength/index.html b/files/ja/web/javascript/reference/global_objects/arraybuffer/bytelength/index.html
new file mode 100644
index 0000000000..1ae1c0727f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/arraybuffer/bytelength/index.html
@@ -0,0 +1,56 @@
+---
+title: ArrayBuffer.prototype.byteLength
+slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength
+tags:
+ - ArrayBuffer
+ - JavaScript
+ - Property
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>byteLength</code></strong> アクセサープロパティは、{{jsxref("ArrayBuffer")}} の長さをバイト単位で表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/arraybuffer-bytelength.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>byteLength</code> プロパティはアクセサープロパティで、 set アクセサー関数が <code>undefined</code>、つまりこのプロパティは読み取り専用です。値は配列が構築されるときに設定され、変更することができません。この <code>ArrayBuffer</code> が取り外された場合、このプロパティは 0 を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_byteLength" name="Using_byteLength">byteLength の使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+buffer.byteLength; // 8
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-arraybuffer.prototype.bytelength', 'ArrayBuffer.prototype.byteLength')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.ArrayBuffer.byteLength")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/arraybuffer/index.html b/files/ja/web/javascript/reference/global_objects/arraybuffer/index.html
new file mode 100644
index 0000000000..b54ef2e308
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/arraybuffer/index.html
@@ -0,0 +1,89 @@
+---
+title: ArrayBuffer
+slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer
+tags:
+ - ArrayBuffer
+ - Constructor
+ - JavaScript
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>ArrayBuffer</code></strong> オブジェクトは、一般的な固定長の生のバイナリデータバッファを表現するために使用されます。</p>
+
+<p><code>ArrayBuffer</code> はバイトの配列で、他の言語では「バイト配列」と呼ばれることが多いです。ArrayBuffer の内容を直接操作することはできません。代わりに、型付きの配列オブジェクトか {{jsxref("DataView")}} オブジェクトのいずれかを作成して、バッファを特定の形式で表現し、バッファの内容を読み書きするためにそれを使用します。</p>
+
+<p><code><a href="https://wiki.developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/ArrayBuffer">ArrayBuffer()</a></code> コンストラクタは、指定した長さの <code>ArrayBuffer</code> をバイト単位で作成します。<a href="/ja/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Appendix_to_Solution_1_Decode_a_Base64_string_to_Uint8Array_or_ArrayBuffer">Base64 文字列</a>や<a href="/ja/docs/Web/API/FileReader/readAsArrayBuffer">ローカルファイル</a>などの既存のデータから配列バッファを取得することもできます。</p>
+
+<h2 id="コンストラクタ">コンストラクタ</h2>
+
+<dl>
+ <dt>{{jsxref("ArrayBuffer.ArrayBuffer", "ArrayBuffer()")}}</dt>
+ <dd>新しい <code>ArrayBuffer</code> オブジェクトを作成します。</dd>
+</dl>
+
+<h2 id="静的プロパティ">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("ArrayBuffer.@@species", "get ArrayBuffer[@@species]")}}</dt>
+ <dd>派生オブジェクトを作成する際に使用するコンストラクタ関数です。</dd>
+</dl>
+
+<h2 id="静的メソッド">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(<var>arg</var>)")}}</dt>
+ <dd><code><var>arg</var></code> が<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray">型付き配列オブジェクト</a>や {{jsxref("DataView")}} のような ArrayBuffer ビューのいずれかである場合に <code>true</code> を返します。それ以外の場合は <code>false</code> を返します。</dd>
+</dl>
+
+<h2 id="インスタンスプロパティ">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("ArrayBuffer.prototype.byteLength")}}</dt>
+ <dd><code>ArrayBuffer</code> の読み取り専用サイズ (バイト単位)。これは配列が構築されたときに設定され、変更することはできません。</dd>
+</dl>
+
+<h2 id="インスタンスメソッド">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("ArrayBuffer.prototype.slice()")}}</dt>
+ <dd><code>ArrayBuffer</code> のバイト数のコピーであり、その内容は、<code><var>begin</var></code> (含む) から <code><var>end</var></code> (排他的) までのバイト数である。<code><var>begin</var></code> または <code><var>end</var></code> のどちらかが負の値の場合は、配列の先頭からではなく、配列の末尾からのインデックスを指します。</dd>
+</dl>
+
+<h2 id="Example" name="Example">例</h2>
+
+<h3 id="ArrayBuffer_の作成">ArrayBuffer の作成</h3>
+
+<p>この例では、バッファを参照する {{jsxref("Int32Array")}} ビューを持つ 8 バイトバッファを作成します。</p>
+
+<pre class="brush: js notranslate">const buffer = new ArrayBuffer(8);
+const view = new Int32Array(buffer);</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-arraybuffer-objects', 'ArrayBuffer')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div class="hidden">このページの互換性一覧表は、構造化データから生成されています。データに貢献したい方は、https://github.com/mdn/browser-compat-data をチェックしてプルリクエストを送ってください。</div>
+
+<p>{{Compat("javascript.builtins.ArrayBuffer")}}</p>
+
+<h2 id="あわせて参照">あわせて参照</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li>
+ <li>{{jsxref("SharedArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/arraybuffer/isview/index.html b/files/ja/web/javascript/reference/global_objects/arraybuffer/isview/index.html
new file mode 100644
index 0000000000..f679275a04
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/arraybuffer/isview/index.html
@@ -0,0 +1,80 @@
+---
+title: ArrayBuffer.isView()
+slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView
+tags:
+ - ArrayBuffer
+ - JavaScript
+ - Method
+ - Reference
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>ArrayBuffer.isView()</code></strong> メソッドは、渡された値が <code>ArrayBuffer</code> のビューのうちの一つ、例えば<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray">型付き配列オブジェクト</a>や {{jsxref("DataView")}} であるかどうかを判断します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/arraybuffer-isview.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">ArrayBuffer.isView(<var>value</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>チェックする値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>渡された引数が {{jsxref("ArrayBuffer")}} のビューのうちの一つであれば <code>true</code> を、そうでなければ <code>false</code> を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_isView" name="Using_isView">isView の使用</h3>
+
+<pre class="brush: js notranslate">ArrayBuffer.isView(); // false
+ArrayBuffer.isView([]); // false
+ArrayBuffer.isView({}); // false
+ArrayBuffer.isView(null); // false
+ArrayBuffer.isView(undefined); // false
+ArrayBuffer.isView(new ArrayBuffer(10)); // false
+
+ArrayBuffer.isView(new Uint8Array()); // true
+ArrayBuffer.isView(new Float32Array()); // true
+ArrayBuffer.isView(new Int8Array(10).subarray(0, 3)); // true
+
+const buffer = new ArrayBuffer(2);
+const dv = new DataView(buffer);
+ArrayBuffer.isView(dv); // true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-arraybuffer.isview', 'ArrayBuffer.isView')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.ArrayBuffer.isView")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript の型付き配列</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/arraybuffer/slice/index.html b/files/ja/web/javascript/reference/global_objects/arraybuffer/slice/index.html
new file mode 100644
index 0000000000..ff1be1c5b0
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/arraybuffer/slice/index.html
@@ -0,0 +1,77 @@
+---
+title: ArrayBuffer.prototype.slice()
+slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice
+tags:
+ - ArrayBuffer
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>slice()</code></strong> メソッドは新しい <code>ArrayBuffer</code> を返し、その中にこの <code>ArrayBuffer</code> の <code>begin</code> から <code>end</code> の手前までをコピーします。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/arraybuffer-slice.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">arraybuffer.slice(<var>begin</var>[, <var>end</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>begin</var></code></dt>
+ <dd>スライスの起点を表すゼロ基点のバイトインデックスです。</dd>
+</dl>
+
+<dl>
+ <dt><code><var>end</var></code> {{optional_inline}}</dt>
+ <dd>スライスをその前で終了するバイトインデックスです。 end が指定されなかった場合は、新しい <code>ArrayBuffer</code> は、この <code>ArrayBuffer</code> の起点から終点まですべてのバイトを含みます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい {{jsxref("ArrayBuffer")}} オブジェクト。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>slice()</code> メソッドは、 <code>end</code> 引数で指定されたバイトの手前までコピーを行います。 <code>begin</code> または <code>end</code> のどちらかが負の数の場合、開始位置とは反対に、配列の末尾からのインデックスを参照します。</p>
+
+<p><code>begin</code> および <code>end</code> 引数で指定された範囲は、現在の配列で妥当なインデックスの範囲に丸められます。新しい <code>ArrayBuffer</code> の計算された長さが負の数であった場合、ゼロに丸められます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Copying_an_ArrayBuffer" name="Copying_an_ArrayBuffer">ArrayBuffer のコピー</h3>
+
+<pre class="brush: js notranslate">const buf1 = new ArrayBuffer(8);
+const buf2 = buf1.slice(0);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-arraybuffer.prototype.slice', 'ArrayBuffer.prototype.slice')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.ArrayBuffer.slice")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/arraybuffer/transfer/index.html b/files/ja/web/javascript/reference/global_objects/arraybuffer/transfer/index.html
new file mode 100644
index 0000000000..2070e902a4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/arraybuffer/transfer/index.html
@@ -0,0 +1,126 @@
+---
+title: ArrayBuffer.transfer()
+slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/transfer
+tags:
+ - ArrayBuffer
+ - ECMAScript7
+ - Experimental
+ - Expérimental(2)
+ - JavaScript
+ - Method
+ - Reference
+ - Référence(2)
+ - TypedArrays
+translation_of: Archive/Web/JavaScript/ArrayBuffer.transfer
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p>静的な <code><strong>ArrayBuffer.transfer()</strong></code> メソッドは、<code>oldBuffer</code> のデータから得られる内容の新しい <code>ArrayBuffer</code> を返し、<code>newByteLength</code> によって切断されるかゼロ拡張されます。<code>newByteLength</code> が <code>undefined</code> なら、<code>oldBuffer</code> の <code>byteLength</code> が使われます。この操作により <code>oldBuffer</code> はデタッチ状態のままになります。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code>ArrayBuffer.transfer(oldBuffer [, newByteLength]);</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>oldBuffer</code></dt>
+ <dd>転送するための {{jsxref("ArrayBuffer")}} オブジェクト</dd>
+ <dt>newByteLength</dt>
+ <dd>新しい <code>ArrayBuffer</code> オブジェクトのバイト長</dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>新しい <code>ArrayBuffer</code> オブジェクト。</p>
+
+<h2 id="説明">説明</h2>
+
+<p><code>ArrayBuffer.transfer()</code> メソッドによって、<code>ArrayBuffer</code> オブジェクトを成長し、デタッチできます。コピーなしで <code>ArrayBuffer</code> を成長される能力は大規模バッファに対してもっと早くなる利点を持っています。<code>ArrayBuffer</code> をデタッチする機能によって、基底メモリがリリースされるときを開発者が明示的に制御できます。これにより、すべての参照を削除し、ガベージコレクションを待たずに済みます。</p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: js">var buf1 = new ArrayBuffer(40);
+new Int32Array(buf1)[0] = 42;
+
+var buf2 = ArrayBuffer.transfer(buf1, 80);
+buf1.byteLength; // 0
+buf2.byteLength; // 80
+new Int32Array(buf2)[0]; // 42
+
+var buf3 = ArrayBuffer.transfer(buf2, 0);
+buf2.byteLength; // 0
+buf3.byteLength; // 0
+</pre>
+
+<h2 id="ポリフィル">ポリフィル</h2>
+
+<p>次のコードをスクリプトの先頭に挿入することで、transfer<font face="Consolas, Liberation Mono, Courier, monospace">()</font> の機能の大部分をネイティブにサポートしていない環境でも対処できるようになります。これはこの API と完全に同じではありませんが、この関数はある ArrayBuffer からそのほかの ArrayBuffer にデータを変換します。</p>
+
+<pre>if (!ArrayBuffer.transfer) {
+ ArrayBuffer.transfer = function(source, length) {
+ source = Object(source);
+ var dest = new ArrayBuffer(length);
+ if (!(source instanceof ArrayBuffer) || !(dest instanceof ArrayBuffer)) {
+ throw new TypeError('Source and destination must be ArrayBuffer instances');
+ }
+ if (dest.byteLength &gt;= source.byteLength) {
+ var nextOffset = 0;
+ var leftBytes = source.byteLength;
+ var wordSizes = [8, 4, 2, 1];
+ wordSizes.forEach(function(_wordSize_) {
+ if (leftBytes &gt;= _wordSize_) {
+ var done = transferWith(_wordSize_, source, dest, nextOffset, leftBytes);
+ nextOffset = done.nextOffset;
+ leftBytes = done.leftBytes;
+ }
+ });
+ }
+ return dest;
+ function transferWith(wordSize, source, dest, nextOffset, leftBytes) {
+ var ViewClass = Uint8Array;
+ switch (wordSize) {
+ case 8:
+ ViewClass = Float64Array;
+ break;
+ case 4:
+ ViewClass = Float32Array;
+ break;
+ case 2:
+ ViewClass = Uint16Array;
+ break;
+ case 1:
+ ViewClass = Uint8Array;
+ break;
+ default:
+ ViewClass = Uint8Array;
+ break;
+ }
+ var view_source = new ViewClass(source, nextOffset, Math.trunc(leftBytes / wordSize));
+ var view_dest = new ViewClass(dest, nextOffset, Math.trunc(leftBytes / wordSize));
+ for (var i = 0; i &lt; view_dest.length; i++) {
+ view_dest[i] = view_source[i];
+ }
+ return {
+ nextOffset : view_source.byteOffset + view_source.byteLength,
+ leftBytes : source.byteLength - (view_source.byteOffset + view_source.byteLength)
+ }
+ }
+ };
+}</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<p>いづれの現行仕様のドラフトにも含まれていませんが、ECMA-262 エディションの機能として<a href="https://gist.github.com/lukewagner/2735af7eea411e18cf20">提案</a><a href="https://esdiscuss.org/topic/sept-23-2014-meeting-notes">されました</a>。</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.ArrayBuffer.transfer")}}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/asyncfunction/index.html b/files/ja/web/javascript/reference/global_objects/asyncfunction/index.html
new file mode 100644
index 0000000000..0b376879c3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/asyncfunction/index.html
@@ -0,0 +1,104 @@
+---
+title: AsyncFunction
+slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>AsyncFunction</code> コンストラクター</strong>は、新しい{{jsxref("Statements/async_function", "非同期関数", "", 1)}}オブジェクトを生成します。 JavaScript では、すべての非同期関数が実際に <code>AsyncFunction</code> オブジェクトです。</p>
+
+<p><code>AsyncFunction</code> はグローバルオブジェクトでは<em>ない</em>ことに注意してください。これは以下のようなコードで取得することができます。</p>
+
+<pre class="brush: js">Object.getPrototypeOf(async function(){}).constructor
+</pre>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">new AsyncFunction([<var>arg1</var>[, <var>arg2</var>[, ...<var>argN</var>]],] <var>functionBody</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>arg1, arg2, ... arg<em>N</em></code></dt>
+ <dd>形式的な引数名として関数に使用される名前です。それぞれが有効な JavaScript の識別子であるか、カンマで区切った文字列のリストで、例えば "<code>x</code>", "<code>theValue</code>", "<code>a,b</code>" などです。</dd>
+ <dt><code>functionBody</code></dt>
+ <dd>関数定義を構成する JavaScript 文を含む文字列。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>AsyncFunction</code> コンストラクターで生成された{{jsxref("Statements/async_function", "非同期関数", "", 1)}}オブジェクトは、関数が生成されたときにパースされます。これは、非同期関数を{{jsxref("Statements/async_function", "非同期関数式", "", 1)}}で定義してからコード内で呼び出す方法ほど効率的ではありません。というのも、そのような関数はコードの残りの部分と共にパースされるからです。</p>
+
+<p>関数に渡されたすべての引数は、渡された順に、作成される関数内の引数の識別子の名前として扱われます。</p>
+
+<div class="note">
+<p><strong>注:</strong> {{jsxref("Statements/async_function", "非同期関数", "", 1)}}が <code>AsyncFunction</code> コンストラクターによって生成された場合、生成コンテキストのクロージャは生成されません。常にグローバルスコープに生成されます。</p>
+
+<p>実行すると、ローカル変数とグローバルグローバル変数にのみアクセスでき、 <code>AsyncFunction</code> コンストラクターが呼び出されたスコープの変数にはアクセスできません。</p>
+
+<p>これは、非同期関数式のコードで {{jsxref("Global_Objects/eval", "eval")}} を使用した場合とは異なります。</p>
+</div>
+
+<p><code>AsyncFunction</code> コンストラクターを (<code>new</code> 演算子を使用せずに) 関数として呼び出した場合、コンストラクターとして呼び出したときと同じ効果があります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="AsyncFunction_コンストラクターから非同期関数を生成する">AsyncFunction() コンストラクターから非同期関数を生成する</h3>
+
+<pre class="brush: js">function resolveAfter2Seconds(x) {
+ return new Promise(resolve =&gt; {
+ setTimeout(() =&gt; {
+ resolve(x);
+ }, 2000);
+ });
+}
+
+let AsyncFunction = Object.getPrototypeOf(async function(){}).constructor
+
+let a = new AsyncFunction('a',
+ 'b',
+ 'return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);');
+
+a(10, 20).then(v =&gt; {
+ console.log(v); // prints 30 after 4 seconds
+});
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-async-function-objects', 'AsyncFunction object')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.AsyncFunction")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/async_function", "async function 関数", "", 1)}}</li>
+ <li>{{jsxref("Operators/async_function", "async function 式", "", 1)}}</li>
+ <li>{{jsxref("Global_Objects/Function", "Function")}}</li>
+ <li>{{jsxref("Statements/function", "関数文", "", 1)}}</li>
+ <li>{{jsxref("Operators/function", "関数式", "", 1)}}</li>
+ <li>{{jsxref("Functions_and_function_scope", "関数と関数スコープ", "", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/asyncfunction/prototype/index.html b/files/ja/web/javascript/reference/global_objects/asyncfunction/prototype/index.html
new file mode 100644
index 0000000000..46bf817819
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/asyncfunction/prototype/index.html
@@ -0,0 +1,109 @@
+---
+title: AsyncFunction.prototype
+slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype
+tags:
+ - Experimental
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>AsyncFunction.prototype</strong></code> プロパティは、{{jsxref("AsyncFunction")}} プロトタイプオブジェクトを表します。</p>
+
+<h2 id="説明">説明</h2>
+
+<p>{{jsxref("AsyncFunction")}} オブジェクトは、<code>AsyncFunction.prototype</code> を継承します。<code>AsyncFunction.prototype</code> は修正できません。</p>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<dl>
+ <dt><code><strong>AsyncFunction.constructor</strong></code></dt>
+ <dd>初期値は {{jsxref("AsyncFunction")}}。</dd>
+ <dt><code><strong>AsyncFunction.prototype[@@toStringTag]</strong></code></dt>
+ <dd>"AsyncFunction" を返す。</dd>
+</dl>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">ステータス</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Async Function', '#async-function-definitions', 'async function')}}</td>
+ <td>{{Spec2('Async Function')}}</td>
+ <td>提案</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+<div>{{CompatibilityTable}}</div>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th> Edge</th>
+ <th>Opera</th>
+ <th>Safari (WebKit)</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatGeckoDesktop("52.0")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Android</th>
+ <th>Android Webview</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ <th>Chrome for Android</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatGeckoMobile("52.0")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("AsyncFunction")}}</li>
+ <li>{{jsxref("Function")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/atomics/add/index.html b/files/ja/web/javascript/reference/global_objects/atomics/add/index.html
new file mode 100644
index 0000000000..59b915e470
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/atomics/add/index.html
@@ -0,0 +1,85 @@
+---
+title: Atomics.add()
+slug: Web/JavaScript/Reference/Global_Objects/Atomics/add
+tags:
+ - Atomics
+ - JavaScript
+ - Method
+ - Shared Memory
+ - メソッド
+ - 共有メモリ
+translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/add
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <code><strong>Atomics</strong></code><strong><code>.add()</code></strong> メソッドは、配列内の指定した位置の値に加算して、その場所の古い値を返します。これは不可分操作で、修正された値が書き戻されるまで、他の書き込みが起こらないことを保証します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/atomics-add.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Atomics.add(<var>typedArray</var>, <var>index</var>, <var>value</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd>共有整数型付き配列です。 {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}}, {{jsxref("Uint32Array")}} の何れかです。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd><code><var>typedArray</var></code> で <code><var>value</var></code> を加算する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>加算する数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された位置にあった古い値です (<code><var>typedArray</var>[<var>index</var>]</code>)。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li><code><var>typedArray</var></code> が許可された整数型の何れでもない場合、{{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>typedArray</var></code> が共有型付き配列型ではない場合、 {{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>index</var></code> が <code><var>typedArray</var></code> の範囲を超えている場合、 {{jsxref("RangeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_add" name="Using_add">add() の使用</h3>
+
+<pre class="brush: js">const sab = new SharedArrayBuffer(1024);
+const ta = new Uint8Array(sab);
+
+Atomics.add(ta, 0, 12); // 古い値である 0 を返す。
+Atomics.load(ta, 0); // 12</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-atomics.exchange', 'Atomics.exchange')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Atomics.add")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("Atomics.sub()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/atomics/and/index.html b/files/ja/web/javascript/reference/global_objects/atomics/and/index.html
new file mode 100644
index 0000000000..6a586a73f1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/atomics/and/index.html
@@ -0,0 +1,131 @@
+---
+title: Atomics.and()
+slug: Web/JavaScript/Reference/Global_Objects/Atomics/and
+tags:
+ - Atomics
+ - JavaScript
+ - Method
+ - Shared Memory
+ - メソッド
+ - 共有メモリ
+translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/and
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <code><strong>Atomics</strong></code><strong><code>.and()</code></strong> メソッドは、配列内の指定した位置の値に指定した値でビット単位の AND を計算し、その位置の古い値を返します。これは不可分操作で、修正された値が書き戻されるまで、他の書き込みが起こらないことを保証します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/atomics-and.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Atomics.and(<var>typedArray</var>, <var>index</var>, <var>value</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd>共有整数型付き配列です。 {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}}, {{jsxref("Uint32Array")}} の何れかです。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd><code><var>typedArray</var></code> でビット単位の AND を計s名する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>ビット単位の AND を取る数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された位置にあった古い値です (<code><var>typedArray</var>[<var>index</var>]</code>)。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li><code><var>typedArray</var></code> が許可された整数型の何れでもない場合、{{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>typedArray</var></code> が共有型付き配列型ではない場合、 {{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>index</var></code> が <code><var>typedArray</var></code> の範囲を超えている場合、 {{jsxref("RangeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>ビット単位の AND 操作は、 <code>a</code> と <code>b</code> の両方が 1 であった場合のみ 1 を生成します。 AND 操作の真理値表を示します。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th><code>a</code></th>
+ <th><code>b</code></th>
+ <th><code>a &amp; b</code></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>0</td>
+ <td>0</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>0</td>
+ <td>1</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>0</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>1</td>
+ <td>1</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>例えば、ビット単位の AND を <code>5 &amp; 1</code> で行うと、結果は <code>0001</code> すなわち10進数で1となります。</p>
+
+<pre>5 0101
+1 0001
+ ----
+1 0001</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_add" name="Using_add">add() の使用</h3>
+
+<pre class="brush: js">const sab = new SharedArrayBuffer(1024);
+const ta = new Uint8Array(sab);
+ta[0] = 5;
+
+Atomics.and(ta, 0, 1); // returns 0, the old value
+Atomics.load(ta, 0); // 1
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-atomics.and', 'Atomics.and')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Atomics.and")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("Atomics.or()")}}</li>
+ <li>{{jsxref("Atomics.xor()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/atomics/compareexchange/index.html b/files/ja/web/javascript/reference/global_objects/atomics/compareexchange/index.html
new file mode 100644
index 0000000000..a92017c7ca
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/atomics/compareexchange/index.html
@@ -0,0 +1,88 @@
+---
+title: Atomics.compareExchange()
+slug: Web/JavaScript/Reference/Global_Objects/Atomics/compareExchange
+tags:
+ - Atomics
+ - JavaScript
+ - Method
+ - Shared Memory
+ - メソッド
+ - 共有メモリ
+translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/compareExchange
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <code><strong>Atomics</strong></code><strong><code>.compareExchange()</code></strong> メソッドは、指定された値を配列内の指定した位置に格納し、その値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/atomics-compareexchange.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Atomics.compareExchange(<var>typedArray</var>, <var>index</var>, <var>value</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd>共有整数型付き配列です。 {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}}, {{jsxref("Uint32Array")}} の何れかです。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd><code><var>typedArray</var></code> で <code><var>value</var></code> と交換する位置です。</dd>
+ <dt><code><var>expectedValue</var></code></dt>
+ <dd>等価性をチェックする値です。</dd>
+ <dt><code><var>replacementValue</var></code></dt>
+ <dd>交換する数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された位置にあった古い値です (<code><var>typedArray</var>[<var>index</var>]</code>)。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li><code><var>typedArray</var></code> が許可された整数型の何れでもない場合、{{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>typedArray</var></code> が共有型付き配列型ではない場合、 {{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>index</var></code> が <code><var>typedArray</var></code> の範囲を超えている場合、 {{jsxref("RangeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_compareExchange" name="Using_compareExchange">compareExchange() の使用</h3>
+
+<pre class="brush: js">const sab = new SharedArrayBuffer(1024);
+const ta = new Uint8Array(sab);
+ta[0] = 7;
+
+Atomics.compareExchange(ta, 0, 7, 12); // returns 7, the old value
+Atomics.load(ta, 0); // 12</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-atomics.compareexchange', 'Atomics.compareExchange')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Atomics.compareExchange")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("Atomics.exchange()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/atomics/exchange/index.html b/files/ja/web/javascript/reference/global_objects/atomics/exchange/index.html
new file mode 100644
index 0000000000..e58cf973cf
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/atomics/exchange/index.html
@@ -0,0 +1,85 @@
+---
+title: Atomics.exchange()
+slug: Web/JavaScript/Reference/Global_Objects/Atomics/exchange
+tags:
+ - Atomics
+ - JavaScript
+ - Method
+ - Shared Memory
+ - メソッド
+ - 共有メモリ
+translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/exchange
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <code><strong>Atomics</strong></code><strong><code>.exchange()</code></strong> メソッドは、指定された値を配列内の指定した位置に格納し、その値を返します。これは不可分操作で、古い値を読み取ってから新しい値を書き込むまでの間に他の物が書き込まないことを保証します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/atomics-exchange.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Atomics.exchange(<var>typedArray</var>, <var>index</var>, <var>value</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd>共有整数型付き配列です。 {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}}, {{jsxref("Uint32Array")}} の何れかです。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd><code><var>typedArray</var></code> で <code><var>value</var></code> と交換する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>交換する数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された位置にあった古い値です (<code><var>typedArray</var>[<var>index</var>]</code>)。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li><code><var>typedArray</var></code> が許可された整数型の何れでもない場合、{{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>typedArray</var></code> が共有型付き配列型ではない場合、 {{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>index</var></code> が <code><var>typedArray</var></code> の範囲を超えている場合、 {{jsxref("RangeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_exchange" name="Using_exchange">exchange() の使用</h3>
+
+<pre class="brush: js">const sab = new SharedArrayBuffer(1024);
+const ta = new Uint8Array(sab);
+
+Atomics.exchange(ta, 0, 12); // returns 0, the old value
+Atomics.load(ta, 0); // 12</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-atomics.exchange', 'Atomics.exchange')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Atomics.exchange")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("Atomics.compareExchange()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/atomics/index.html b/files/ja/web/javascript/reference/global_objects/atomics/index.html
new file mode 100644
index 0000000000..bc6043792f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/atomics/index.html
@@ -0,0 +1,145 @@
+---
+title: Atomics
+slug: Web/JavaScript/Reference/Global_Objects/Atomics
+tags:
+ - JavaScript
+ - Namespace
+ - Shared Memory
+ - Specifications
+ - 仕様
+ - 共有メモリ
+ - 名前空間
+translation_of: Web/JavaScript/Reference/Global_Objects/Atomics
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Atomics</code></strong> オブジェクトは、静的なメソッドとして不可分操作を提供します。これらは {{jsxref("SharedArrayBuffer")}} および {{jsxref("ArrayBuffer")}} オブジェクトで使用されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>不可分操作は、 <code>Atomics</code> モジュール上に装備されています。他のグローバルオブジェクトと異なり、 <code>Atomics</code> はコンストラクターではありません。 <a href="/ja/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> 演算子</a> を付けて使用したり、 <code>Atomics</code> オブジェクトを関数として呼び出したりすることはできません。 <code>Atomics</code> のすべてのプロパティとメソッドは静的です (例えば、{{jsxref("Math")}} オブジェクトの場合と同様です)。</p>
+
+<h3 id="Atomic_operations" name="Atomic_operations">不可分操作</h3>
+
+<p>メモリが共有されている場合、複数のスレッドがメモリー内の同じデータを読み書きできます。不可分操作では、予測される値の書き込みと読み込みを保証するため、次の演算が開始される前に現在の演算が完了し、その演算が割り込まれないようにします。</p>
+
+<h3 id="Wait_and_notify" name="Wait_and_notify">wait と notify</h3>
+
+<p><code>wait()</code> メソッドと <code>notify()</code> メソッドは、 Linux の futex ("fast user-space mutex") を原型としており、特定の条件が true になるまで待つ手段を提供します。一般的にはブロッキング構造として使用されます。</p>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Atomics.add()")}}</dt>
+ <dd>配列の指定した位置にある既存の値に指定した値を追加します。その位置にあった古い値を返します。</dd>
+ <dt>{{jsxref("Atomics.and()")}}</dt>
+ <dd>配列の指定した位置の値と指定した値でビット単位の論理積 (AND) を計算します。その位置にあった古い値を返します。</dd>
+ <dt>{{jsxref("Atomics.compareExchange()")}}</dt>
+ <dd>値が等しい場合、配列の指定した位置に値を格納します。古い値を返します。</dd>
+ <dt>{{jsxref("Atomics.exchange()")}}</dt>
+ <dd>配列の指定した位置に値を格納します。古い値を返します。</dd>
+ <dt>{{jsxref("Atomics.isLockFree()", "Atomics.isLockFree(size)")}}</dt>
+ <dd>ロック機構と不可分操作のどちらを使用するかを決定するための最適化プリミティブです。指定した要素サイズの配列上の不可分操作が (ロックではなく) ハードウェアによる不可分操作を使用するよう実装されている場合、 <code>true</code> を返します。上級者だけが使用してください。</dd>
+ <dt>{{jsxref("Atomics.load()")}}</dt>
+ <dd>配列の指定した位置の値を返します。</dd>
+ <dt>{{jsxref("Atomics.notify()")}}</dt>
+ <dd>配列の指定した位置で待機中のエージェントに通知します。通知を受けたエージェントの数を返します。</dd>
+ <dt>{{jsxref("Atomics.or()")}}</dt>
+ <dd>配列の指定した位置の値と指定した値でビット単位の論理和 (OR) を計算します。その位置にあった古い値を返します。</dd>
+ <dt>{{jsxref("Atomics.store()")}}</dt>
+ <dd>配列の指定した位置に指定した値を格納します。その値を返します。</dd>
+ <dt>{{jsxref("Atomics.sub()")}}</dt>
+ <dd>配列の指定した位置の値から指定した値を減算します。その位置にあった古い値を返します。</dd>
+ <dt>{{jsxref("Atomics.wait()")}}</dt>
+ <dd>配列の指定位置に指定した値が含まれているか検証し、休止して待機するかタイムアウトします。 "<code>ok</code>", "<code>not-equal</code>", "<code>timed-out</code>" のいずれかの文字列を返します。呼び出したエージェントで待機が許可されていない場合は、 Error 例外を投げます (ほとんどのブラウザーは、ブラウザーのメインスレッドで <code>wait()</code> を許可していません)。</dd>
+ <dt>{{jsxref("Atomics.xor()")}}</dt>
+ <dd>配列の指定した位置の値と指定した値でビット単位の排他的論理和 (XOR) を計算します。その位置にあった古い値を返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Atomics" name="Using_Atomics">Atomics の使用</h3>
+
+<pre class="brush: js notranslate">const sab = new SharedArrayBuffer(1024);
+const ta = new Uint8Array(sab);
+ta[0] = 5;
+
+Atomics.add(ta, 0, 12);
+Atomics.load(ta, 0); // 12
+
+Atomics.and(ta, 0, 1);
+Atomics.load(ta, 0); // 1
+
+Atomics.compareExchange(ta, 0, 5, 12);
+Atomics.load(ta, 0); // 12
+
+Atomics.exchange(ta, 0, 12);
+Atomics.load(ta, 0); // 12
+
+Atomics.isLockFree(1); // true
+Atomics.isLockFree(2); // true
+Atomics.isLockFree(3); // false
+Atomics.isLockFree(4); // true
+
+Atomics.or(ta, 0, 1);
+Atomics.load(ta, 0);  // 5
+
+Atomics.store(ta, 0, 12); // 12
+
+Atomics.sub(ta, 0, 2);
+Atomics.load(ta, 0); // 3
+
+Atomics.xor(ta, 0, 1);
+Atomics.load(ta, 0); // 4
+</pre>
+
+<h3 id="Waiting_and_notifiying" name="Waiting_and_notifiying">待機と通知</h3>
+
+<p>共有された <code>Int32Array</code> があるとします。</p>
+
+<pre class="brush: js notranslate">const sab = new SharedArrayBuffer(1024);
+const int32 = new Int32Array(sab);
+</pre>
+
+<p>読み取りスレッドはスリープ状態で、 0 の位置が 0 である間は待機しています。これが true である限り、スレッドは進みません。しかし、書き込みスレッドが新しい値を格納すると、書き込みスレッドから通知され、新しい値 (123) を返します。</p>
+
+<pre class="brush: js notranslate">Atomics.wait(int32, 0, 0);
+console.log(int32[0]); // 123</pre>
+
+<p>書き込みスレッドが新しい値を格納し、待機しているスレッドに書き込みが発生したことを通知します。</p>
+
+<pre class="brush: js notranslate">console.log(int32[0]); // 0;
+Atomics.store(int32, 0, 123);
+Atomics.notify(int32, 0, 1);</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-atomics-object', 'Atomics')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Atomics")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li><a href="/ja/docs/Web/API/Web_Workers_API">ウェブワーカー</a></li>
+ <li><a href="https://github.com/lars-t-hansen/parlib-simple">parlib-simple</a> – 同期と分配の抽象化を行うシンプルなライブラリ。</li>
+ <li><a href="https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md">Shared Memory – 簡潔なチュートリアル</a></li>
+ <li><a href="https://dev.mozilla.jp/2016/05/a-taste-of-javascripts-new-parallel-primitives/">JavaScript の並列処理機能を味見してみる</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/atomics/load/index.html b/files/ja/web/javascript/reference/global_objects/atomics/load/index.html
new file mode 100644
index 0000000000..44c781c5a9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/atomics/load/index.html
@@ -0,0 +1,83 @@
+---
+title: Atomics.load()
+slug: Web/JavaScript/Reference/Global_Objects/Atomics/load
+tags:
+ - Atomics
+ - JavaScript
+ - Method
+ - Shared Memory
+ - メソッド
+ - 共有メモリ
+translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/load
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <code><strong>Atomics</strong></code><strong><code>.load()</code></strong> メソッドは、配列内の指定された位置の値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/atomics-load.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Atomics.store(<var>typedArray</var>, <var>index</var>, <var>value</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd>共有整数型付き配列です。 {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}}, {{jsxref("Uint32Array")}} の何れかです。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd><code><var>typedArray</var></code> の中で値を読み込む位置。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された位置にある値です (<code><var>typedArray</var>[<var>index</var>]</code>)。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li><code><var>typedArray</var></code> が許可された整数型の何れでもない場合、{{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>typedArray</var></code> が共有型付き配列型ではない場合、 {{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>index</var></code> が <code><var>typedArray</var></code> の範囲を超えている場合、 {{jsxref("RangeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_load" name="Using_load">load() の使用</h3>
+
+<pre class="brush: js">const sab = new SharedArrayBuffer(1024);
+const ta = new Uint8Array(sab);
+
+Atomics.add(ta, 0, 12);
+Atomics.load(ta, 0); // 12</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-atomics.load', 'Atomics.load')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Atomics.load")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("Atomics.store()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/atomics/or/index.html b/files/ja/web/javascript/reference/global_objects/atomics/or/index.html
new file mode 100644
index 0000000000..0911fb8654
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/atomics/or/index.html
@@ -0,0 +1,128 @@
+---
+title: Atomics.or()
+slug: Web/JavaScript/Reference/Global_Objects/Atomics/or
+tags:
+ - Atomics
+ - JavaScript
+ - Method
+ - Shared Memory
+translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/or
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <code><strong>Atomics</strong></code><strong><code>.or()</code></strong> メソッドは、配列内の指定した位置の値に指定した値でビット単位の OR を計算し、その位置にあった古い値を返します。これは不可分操作で、修正された値が書き戻されるまで、他の書き込みが起こらないことを保証します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/atomics-or.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Atomics.and(<var>typedArray</var>, <var>index</var>, <var>value</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd>整数の型付き配列です。 {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}}, {{jsxref("Uint32Array")}}, {{jsxref("BigInt64Array")}}, {{jsxref("BigUint64Array")}} の何れかです。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd><code><var>typedArray</var></code> でビット単位の OR を計算する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>ビット単位の OR を取る数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された位置にあった古い値です (<code><var>typedArray</var>[<var>index</var>]</code>)。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li><code><var>typedArray</var></code> が許可された整数型の何れでもない場合、{{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>index</var></code> が <code><var>typedArray</var></code> の範囲を超えている場合、 {{jsxref("RangeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>ビット単位の OR 操作は、 <code>a</code> と <code>b</code> のどちらかが 1 であった場合に 1 を生成します。 OR 操作の真理値表を示します。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th><code>a</code></th>
+ <th><code>b</code></th>
+ <th><code>a | b</code></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>0</td>
+ <td>0</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>0</td>
+ <td>1</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>0</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>1</td>
+ <td>1</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>例えば、ビット単位の OR を <code>5 | 1</code> で行うと、結果は <code>0101</code> すなわち10進数で5となります。</p>
+
+<pre class="notranslate">5 0101
+1 0001
+ ----
+5 0101
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_or" name="Using_or">or の使用</h3>
+
+<pre class="brush: js notranslate">const sab = new SharedArrayBuffer(1024);
+const ta = new Uint8Array(sab);
+ta[0] = 2;
+
+Atomics.or(ta, 0, 1); // returns 2, the old value
+Atomics.load(ta, 0); // 3</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-atomics.or', 'Atomics.or')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Atomics.or")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("Atomics.and()")}}</li>
+ <li>{{jsxref("Atomics.xor()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/atomics/store/index.html b/files/ja/web/javascript/reference/global_objects/atomics/store/index.html
new file mode 100644
index 0000000000..574bf482aa
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/atomics/store/index.html
@@ -0,0 +1,84 @@
+---
+title: Atomics.store()
+slug: Web/JavaScript/Reference/Global_Objects/Atomics/store
+tags:
+ - Atomics
+ - JavaScript
+ - Method
+ - Shared Memory
+ - メソッド
+ - 共有メモリ
+translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/store
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <code><strong>Atomics</strong></code><strong><code>.store()</code></strong> メソッドは、指定された値を配列内の指定した位置に格納し、その値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/atomics-store.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Atomics.store(<var>typedArray</var>, <var>index</var>, <var>value</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd>共有整数型付き配列です。 {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}}, {{jsxref("Uint32Array")}} の何れかです。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd><code><var>typedArray</var></code> で <code><var>value</var></code> を格納する位置。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>格納する値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>格納された値です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li><code><var>typedArray</var></code> が許可された整数型の何れでもない場合、{{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>typedArray</var></code> が共有型付き配列型ではない場合、 {{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>index</var></code> が <code><var>typedArray</var></code> の範囲を超えている場合、 {{jsxref("RangeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_store" name="Using_store">store() の使用</h3>
+
+<pre class="brush: js">var sab = new SharedArrayBuffer(1024);
+var ta = new Uint8Array(sab);
+
+Atomics.store(ta, 0, 12); // 12</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-atomics.store', 'Atomics.store')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Atomics.store")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("Atomics.load()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/atomics/sub/index.html b/files/ja/web/javascript/reference/global_objects/atomics/sub/index.html
new file mode 100644
index 0000000000..8905f665dc
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/atomics/sub/index.html
@@ -0,0 +1,84 @@
+---
+title: Atomics.sub()
+slug: Web/JavaScript/Reference/Global_Objects/Atomics/sub
+tags:
+ - Atomics
+ - JavaScript
+ - Method
+ - Shared Memory
+translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/sub
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <strong><code>Atomics.sub()</code></strong> メソッドは、配列内の指定した位置の値から減算して、その場所にあった古い値を返します。この atomic 操作は、修正された値が書き戻されるまで、ほかの書き込みが発生しないことを保証します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/atomics-sub.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Atomics.sub(<var>typedArray</var>, <var>index</var>, <var>value</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd>整数の型付き配列です。 {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}}, {{jsxref("Uint32Array")}}, {{jsxref("BigInt64Array")}}, {{jsxref("BigUint64Array")}} のいずれかです。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd><code><var>typedArray</var></code> で <code><var>value</var></code> を減算する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>減算する数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された位置にあった古い値です (<code><var>typedArray</var>[<var>index</var>]</code>)。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li><code><var>typedArray</var></code> が許可された整数型の何れでもない場合、{{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>index</var></code> が <code><var>typedArray</var></code> の範囲を超えている場合、 {{jsxref("RangeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_sub" name="Using_sub">sub の使用</h3>
+
+<pre class="brush: js notranslate">const sab = new SharedArrayBuffer(1024);
+const ta = new Uint8Array(sab);
+ta[0] = 48;
+
+Atomics.sub(ta, 0, 12); // returns 48, the old value
+Atomics.load(ta, 0); // 36
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-atomics.sub', 'Atomics.sub')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Atomics.sub")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("Atomics.add()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/atomics/wait/index.html b/files/ja/web/javascript/reference/global_objects/atomics/wait/index.html
new file mode 100644
index 0000000000..730f1760f7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/atomics/wait/index.html
@@ -0,0 +1,97 @@
+---
+title: Atomics.wait()
+slug: Web/JavaScript/Reference/Global_Objects/Atomics/wait
+tags:
+ - Atomics
+ - JavaScript
+ - Method
+ - Shared Memory
+ - メソッド
+ - 共有メモリ
+translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/wait
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Atomics</strong></code><strong><code>.wait()</code></strong> は静的なメソッドで、 {{jsxref("Int32Array")}} 中の指定された位置に指定された値が保存されているかどうかを検証し、検証できるまでスリープ、もしくはタイムアウトします。返値は "<code>ok</code>", "<code>not-equal</code>", "<code>timed-out</code>" のいずれかです。</p>
+
+<div class="note">
+<p><strong>注:</strong> この操作は共有された {{jsxref("Int32Array")}} に対してのみ可能で、またメインスレッドでは実行できません。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Atomics.wait(<var>typedArray</var>, <var>index</var>, <var>value</var>[, <var>timeout</var>])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd>共有された {{jsxref("Int32Array")}}。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd>待つ対象となる <code><var>typedArray</var></code> の中の位置。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>期待される値。</dd>
+ <dt><code><var>timeout</var></code> {{optional_inline}}</dt>
+ <dd>ミリ秒で表した待ち時間。時間が指定されなかった場合は {{jsxref("Infinity")}}。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("String")}} で、 "<code>ok</code>", "<code>not-equal</code>", or "<code>timed-out</code>" のいずれか。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li><code><var>typedArray</var></code> が共有された {{jsxref("Int32Array")}} でない場合、 {{jsxref("TypeError")}} が発生します。</li>
+ <li><code><var>index</var></code> が <code><var>typedArray</var></code> の範囲を超えている場合は {{jsxref("RangeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_wait" name="Using_wait">wait() の使用</h3>
+
+<p>次のような共有 <code>Int32Array</code> があったとします。</p>
+
+<pre class="brush: js">const sab = new SharedArrayBuffer(1024);
+const int32 = new Int32Array(sab);
+</pre>
+
+<p>読み手のスレッドはスリープし、 0 番目の値が 0 であることを期待して待ちます。これが成立している間、処理は進みません。しかし、書き手のスレッドが新しい値を格納した場合、書き手のスレッドによって通知され、新しい値 (123) が返ります。</p>
+
+<pre class="brush: js">Atomics.wait(int32, 0, 0);
+console.log(int32[0]); // 123</pre>
+
+<p>書き手のスレッドは新しい値を格納し、待っているスレッドに書き込みが完了したことを知らせます。</p>
+
+<pre class="brush: js">console.log(int32[0]); // 0;
+Atomics.store(int32, 0, 123);
+Atomics.notify(int32, 0, 1);</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-atomics.wait', 'Atomics.wait')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Atomics.wait")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("Atomics.notify()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/atomics/wake/index.html b/files/ja/web/javascript/reference/global_objects/atomics/wake/index.html
new file mode 100644
index 0000000000..be17a5f891
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/atomics/wake/index.html
@@ -0,0 +1,142 @@
+---
+title: Atomics.wake()
+slug: Web/JavaScript/Reference/Global_Objects/Atomics/wake
+translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/notify
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p>静的メソッドである <code><strong>Atomics</strong></code><strong><code>.wake()</code></strong> は待ち行列中のいくつかのエージェントを起こします。</p>
+
+<div class="note">
+<p><strong>付記:</strong>この操作は共有された {{jsxref("Int32Array")}} に対してのみ許可されています。</p>
+</div>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">Atomics.wake(typedArray, index, count)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>typedArray</code></dt>
+ <dd>共有された {{jsxref("Int32Array")}}。</dd>
+ <dt><code>index</code></dt>
+ <dd>起こす対象となる <code>typedArray</code> 中の位置。</dd>
+ <dt><code>count</code></dt>
+ <dd>起こすエージェントの数。既定値は {{jsxref("Infinity", "+Infinity")}} である。</dd>
+</dl>
+
+<h3 id="返り値">返り値</h3>
+
+<p>起きたエージェントの数。</p>
+
+<h3 id="例外">例外</h3>
+
+<ul>
+ <li><code>typedArray</code> が共有されている {{jsxref("Int32Array")}} でない場合、{{jsxref("TypeError")}} が送出される。</li>
+ <li><code>index </code>が <code>typedArray</code> の範囲を超えている場合 {{jsxref("RangeError")}} が送出される。</li>
+</ul>
+
+<h2 id="例">例</h2>
+
+<p>共有された <code>Int32Array</code> を用意します:</p>
+
+<pre class="brush: js">var sab = new SharedArrayBuffer(1024);
+var int32 = new Int32Array(sab);
+</pre>
+
+<p>読み手のスレッドは、0 番目の値が 0 であることを期待してスリープします。それが満たされている間、この場合は 0 番目の値が 0 である間は処理が進みません。しかし書き手のスレッドが新しい値 (この場合は 123)をストアした場合、読み手のスレッドは読み手のスレッドによって起こされ、新しい値 (123)を取得します。</p>
+
+<pre class="brush: js">Atomics.wait(int32, 0, 0);
+console.log(int32[0]); // 123</pre>
+
+<p>書き手のスレッドは新しい値をストアし、待っているスレッドを起こします:</p>
+
+<pre class="brush: js">console.log(int32[0]); // 0;
+Atomics.store(int32, 0, 123);
+Atomics.wake(int32, 0, 1);</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">状態</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('Shared Memory', '#Atomics.wake', 'Atomics.wake')}}</td>
+ <td>{{Spec2('Shared Memory')}}</td>
+ <td>初期定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+<p>{{CompatibilityTable}}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Feature</th>
+ <th>Chrome</th>
+ <th>Edge</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>Basic support</td>
+ <td>{{CompatNo}} [2]</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatGeckoDesktop("46")}} [1] [3]</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Feature</th>
+ <th>Android</th>
+ <th>Chrome for Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>Basic support</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatGeckoMobile("46")}} [1]</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>[1] 設定で無効になっています。about:config で <code>javascript.options.shared_memory</code> を <code>true</code> に設定することで利用できます。</p>
+
+<p>[2] 現在実装中で、利用には次のオプションをつけて起動する必要があります:<code>--js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer</code></p>
+
+<p>[3] バージョン 46 と 47 では <code>Atomics.futexWake()</code> という名前で利用できます。また引数 <code>count </code>の既定値は 0 となっています。列の代わりに <code>Atomics.OK、</code><code>Atomics.TIMEDOUT、</code><code>Atomics.NOTEQUAL</code> を返します</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("Atomics.wait()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/bigint/asintn/index.html b/files/ja/web/javascript/reference/global_objects/bigint/asintn/index.html
new file mode 100644
index 0000000000..ae4388bebc
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/bigint/asintn/index.html
@@ -0,0 +1,80 @@
+---
+title: BigInt.asIntN()
+slug: Web/JavaScript/Reference/Global_Objects/BigInt/asIntN
+tags:
+ - BigInt
+ - JavaScript
+ - Method
+ - Reference
+ - asIntN
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/asIntN
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>BigInt.asIntN</code></strong> 静的メソッドは、 BigInt 値を -2<sup>width-1</sup> から 2<sup>width-1</sup>-1 までの間の符号付き整数に丸めるために使われます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/bigint-asintn.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">BigInt.asIntN(<var>width</var>, <var>bigint</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>width</var></code></dt>
+ <dd>整数の大きさのために利用できるビットの数。</dd>
+ <dt><code><var>bigint</var></code></dt>
+ <dd>指定されたビットに収めるよう丸める整数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code><var>bigint</var></code> を 2<sup><code><var>width</var></code></sup> で割った剰余の値の符号付き整数です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Staying_in_64-bit_ranges" name="Staying_in_64-bit_ranges">64ビットの範囲に収める</h3>
+
+<p><code>BigInt.asIntN()</code> メソッドは、64ビットの数値の範囲に収めるのに便利です。</p>
+
+<pre class="brush: js">const max = 2n ** (64n - 1n) - 1n;
+
+BigInt.asIntN(64, max);
+// ↪ 9223372036854775807n
+
+BigInt.asIntN(64, max + 1n);
+// ↪ -9223372036854775807n
+// オーバーフローするので負数になる
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-bigint.asintn', 'BigInt.asIntN()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.BigInt.asIntN")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("BigInt")}}</li>
+ <li>{{JSxRef("BigInt.asUintN()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/bigint/asuintn/index.html b/files/ja/web/javascript/reference/global_objects/bigint/asuintn/index.html
new file mode 100644
index 0000000000..29130ac731
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/bigint/asuintn/index.html
@@ -0,0 +1,79 @@
+---
+title: BigInt.asUintN()
+slug: Web/JavaScript/Reference/Global_Objects/BigInt/asUintN
+tags:
+ - BigInt
+ - JavaScript
+ - Method
+ - Reference
+ - asUintN
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/asUintN
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>BigInt.asUintN</code></strong> 静的メソッドは、 BigInt 値を 0 から 2<sup>width</sup>-1 までの間の符号なし整数に丸めるために使われます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/bigint-asuintn.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">BigInt.asUintN(<var>width</var>, <var>bigint</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>width</var></code></dt>
+ <dd>整数の大きさのために利用できるビットの数。</dd>
+ <dt><code><var>bigint</var></code></dt>
+ <dd>指定されたビットに収めるよう丸める整数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code><var>bigint</var></code> を 2<sup><code><var>width</var></code></sup> で割った剰余の値の符号なし整数です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Staying_in_64-bit_ranges" name="Staying_in_64-bit_ranges">64ビットの範囲に収める</h3>
+
+<p><code>BigInt.asUintN()</code> メソッドは、64ビットの数値の範囲に収めるのに便利です。</p>
+
+<pre class="brush: js">const max = 2n ** 64n - 1n;
+
+BigInt.asUintN(64, max);
+// ↪ 18446744073709551615n
+
+BigInt.asUintN(64, max + 1n);
+// ↪ 0n
+// オーバーフローするのでゼロになる</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-bigint.asuintn', 'BigInt.asUintN()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.BigInt.asUintN")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("BigInt")}}</li>
+ <li>{{JSxRef("BigInt.asIntN()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/bigint/bigint/index.html b/files/ja/web/javascript/reference/global_objects/bigint/bigint/index.html
new file mode 100644
index 0000000000..b6b37f3858
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/bigint/bigint/index.html
@@ -0,0 +1,65 @@
+---
+title: BigInt() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/BigInt/BigInt
+tags:
+ - BigInt
+ - Constructor
+ - JavaScript
+ - Reference
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/BigInt
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>BigInt()</code></strong> コンストラクターは、 {{jsxref("BigInt")}} オブジェクトを生成するために使用します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">BigInt(<var>value</var>);
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>作成しようとしているオブジェクトの数値。文字列または整数にすることができます。</dd>
+</dl>
+
+<div class="blockIndicator note">
+<p><strong>メモ</strong>: <code>BigInt()</code> は {{JSxRef("Operators/new", "new")}} 演算子と共には使用されません。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_a_new_BigInt" name="Creating_a_new_BigInt">新しい BigInt の生成</h3>
+
+<pre class="brush: js">BigInt(123);
+// 123n
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-bigint-constructor', 'BigInt constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.BigInt.BigInt")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("BigInt")}} class</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/bigint/index.html b/files/ja/web/javascript/reference/global_objects/bigint/index.html
new file mode 100644
index 0000000000..5b45760615
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/bigint/index.html
@@ -0,0 +1,296 @@
+---
+title: BigInt
+slug: Web/JavaScript/Reference/Global_Objects/BigInt
+tags:
+ - BigInt
+ - JavaScript
+translation_of: Web/JavaScript/Reference/Global_Objects/BigInt
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>BigInt</code></strong> は組み込みオブジェクトで、 {{JSxRef("Number")}} プリミティブで表現できる最大の数、 {{JSxRef("Number.MAX_SAFE_INTEGER")}} よりも大きな数値を信頼できるものとして表現する方法を提供します。 <strong><code>BigInt</code></strong> は任意に巨大な整数に使用することができます。</p>
+
+<h2 id="Syntax" name="Syntax">詳細</h2>
+
+<p><code>BigInt</code> は10進数の整数リテラルの末尾に <code>n</code> をつけて <code>10n</code> とするか、 <code>BigInt()</code> 関数を呼び出すことで作成することができます。</p>
+
+<pre class="brush: js notranslate">const theBiggestInt = 9007199254740991n;
+
+const alsoHuge = BigInt(9007199254740991);
+// ↪ 9007199254740991n
+
+const hugeString = BigInt("9007199254740991");
+// ↪ 9007199254740991n
+
+const hugeHex = BigInt("0x1fffffffffffff");
+// ↪ 9007199254740991n
+
+const hugeBin = BigInt("0b11111111111111111111111111111111111111111111111111111");
+// ↪ 9007199254740991n
+</pre>
+
+<p><code>BigInt</code> はいくつかの点で {{JSxRef("Number")}} と似ていますが、重要ないくつかの点が異なります。 — 組込みの {{JSxRef("Math")}} オブジェクト内のメソッドでは利用できず、演算で <code>Number</code> のインスタンスと混ぜることができません。同じ型に統一する必要があります。ただし、<code>BigInt</code> を <code>Number</code> へ変換する際には精度が落ちることがあるので、相互に変化する場合には注意が必要です。</p>
+
+<h3 id="Type_information" name="Type_information">型情報</h3>
+
+<p><code>typeof</code> の <code>BigInt</code> に対する評価値は、"bigint" となります。</p>
+
+<pre class="brush: js notranslate">typeof 1n === 'bigint'; // true
+typeof BigInt('1') === 'bigint'; // true
+</pre>
+
+<p><code>Object</code> でラップされている場合は、 <code>BigInt</code> は通常の "object" として扱われます。</p>
+
+<pre class="brush: js notranslate">typeof Object(1n) === 'object'; // true
+</pre>
+
+<h3 id="Operators" name="Operators">演算子</h3>
+
+<p><code>BigInt</code> (または Object でラップした <code>BigInt</code>) を利用することができる演算子は、 <code>+</code>, <code>*</code>, <code>-</code>, <code>**</code>, <code>%</code> です。<a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators">ビット操作演算子</a>は、同様に利用できますが、 <code>&gt;&gt;&gt;</code> (論理的右シフト) は BigInt が常に符号付きなので除きます。同様に、単項演算子 (<code>+</code>) は <a href="https://github.com/tc39/proposal-bigint/blob/master/ADVANCED.md#dont-break-asmjs">asm.js を破らないように</a>対応していません。</p>
+
+<pre class="brush: js notranslate">const previousMaxSafe = BigInt(Number.MAX_SAFE_INTEGER);
+// ↪ 9007199254740991
+
+const maxPlusOne = previousMaxSafe + 1n;
+// ↪ 9007199254740992n
+
+const theFuture = previousMaxSafe + 2n;
+// ↪ 9007199254740993n, this works now!
+
+const multi = previousMaxSafe * 2n;
+// ↪ 18014398509481982n
+
+const subtr = multi – 10n;
+// ↪ 18014398509481972n
+
+const mod = multi % 10n;
+// ↪ 2n
+
+const bigN = 2n ** 54n;
+// ↪ 18014398509481984n
+
+bigN * -1n
+// ↪ –18014398509481984n
+</pre>
+
+<p><code>/</code> 演算子もすべての数値に対して、期待される通りに動作します。ただ <code>BigInt</code> は<code>BigDecimal</code> ではないため、演算結果は 0 の方向に丸められます。別の言い方をすれば、小数を返すことはありません。</p>
+
+<div class="blockIndicator warning">
+<p><code>BigInt</code> を使用した場合、結果が小数となるような演算は切り捨てられます。</p>
+</div>
+
+<pre class="brush: js notranslate">const expected = 4n / 2n;
+// ↪ 2n
+
+const rounded = 5n / 2n;
+// ↪ 2n, not 2.5n
+
+</pre>
+
+<h3 id="Comparisons" name="Comparisons">比較演算</h3>
+
+<p><code>BigInt</code> は {{JSxRef("Number")}} と厳密等価ではありませんが、等価にはなります。</p>
+
+<pre class="brush: js notranslate">0n === 0
+// ↪ false
+
+0n == 0
+// ↪ true</pre>
+
+<p>{{JSxRef("Global_Objects/Number", "Number")}} と <code>BigInt</code> は通常通り比較できます。</p>
+
+<pre class="brush: js notranslate">1n &lt; 2
+// ↪ true
+
+2n &gt; 1
+// ↪ true
+
+2 &gt; 2
+// ↪ false
+
+2n &gt; 2
+// ↪ false
+
+2n &gt;= 2
+// ↪ true</pre>
+
+<p>配列の要素に混在させることでき、並べ替えも可能です。</p>
+
+<pre class="brush: js notranslate">const mixed = [4n, 6, -12n, 10, 4, 0, 0n];
+// ↪ [4n, 6, -12n, 10, 4, 0, 0n]
+
+mixed.sort();
+// ↪ [-12n, 0, 0n, 4n, 4, 6, 10]
+
+mixed.sort((a, b) =&gt; a - b)
+// won't work since subtraction will not work with mixed types
+// TypeError: can't convert BigInt to number
+
+// sort with an appropriate numeric comparator
+mixed.sort((a, b) =&gt; (a &lt; b) ? -1 : ((a &gt; b) ? 1 : 0)
+// ↪ [ -12n, 0, 0n, 4n, 4, 6, 10 ]</pre>
+
+<p>なお、 <code>Object</code> にラップされた <code>BigInt</code> は他のオブジェクトと同様の振る舞いをします。同じインスタンス同士が比較された場合にのみ、等価となります:</p>
+
+<pre class="brush: js notranslate">0n === Object(0n); // false
+Object(0n) === Object(0n); // false
+
+const o = Object(0n);
+o === o // true
+</pre>
+
+<h3 id="Conditionals" name="Conditionals">条件式</h3>
+
+<p><code>BigInt</code> が {{JSxRef("Global_Objects/Boolean", "Boolean")}} へ変換される次のような場合は、 {{JSxRef("Global_Objects/Number", "Number")}} と同様の変換が行われます。 </p>
+
+<ul>
+ <li>{{JSxRef("Global_Objects/Boolean", "Boolean")}} 関数を利用した場合</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators">論理演算子</a> <code>||</code>、`<code>&amp;&amp;</code>`、<code>!</code> で使用される場合</li>
+ <li> {{JSxRef("Statements/if...else", "if")}} 文などの条件式に使用される場合</li>
+</ul>
+
+<pre class="brush: js notranslate">if (0n) {
+ console.log('Hello from the if!');
+} else {
+ console.log('Hello from the else!');
+}
+
+// ↪ "Hello from the else!"
+
+0n || 12n
+// ↪ 12n
+
+0n &amp;&amp; 12n
+// ↪ 0n
+
+Boolean(0n)
+// ↪ false
+
+Boolean(12n)
+// ↪ true
+
+!12n
+// ↪ false
+
+!0n
+// ↪ true
+</pre>
+
+<h2 id="Methods" name="Methods">コンストラクタ</h2>
+
+<dl>
+ <dt>
+ <p>{{JSxRef("BigInt()")}}</p>
+ </dt>
+ <dd>
+ <p><font face="Arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">新しい</span></font><code>bigint</code> 値を作ります。</p>
+ </dd>
+</dl>
+
+<h2 id="Methods" name="Methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{JSxRef("BigInt.asIntN()")}}</dt>
+ <dd>BigInt の値を -2<sup>width-1</sup> ~ 2<sup>width-1</sup>-1 の間に丸めます。</dd>
+ <dt>{{JSxRef("BigInt.asUintN()")}}</dt>
+ <dd>BigInt の値を 0 ~ 2<sup>width</sup>-1 の間に丸めます。</dd>
+</dl>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt>{{JSxRef("BigInt.prototype")}}</dt>
+ <dd><code>BigInt</code> オブジェクトへの属性追加が可能です。</dd>
+</dl>
+
+<h2 id="BigInt_instances" name="BigInt_instances"><code>BigInt</code> インスタンス</h2>
+
+<p>全ての <code>BigInt</code> インスタンスは <code>BigInt.prototype</code> を継承します。このプロトタイプオブジェクトへの変更は、全ての <code>BigInt</code> インスタンスに影響します。</p>
+
+<h3 id="Methods_2" name="Methods_2">メソッド</h3>
+
+<p>{{page("/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt/prototype", "Methods")}}</p>
+
+<h2 id="Usage_recommendations" name="Usage_recommendations">使用方法の推奨事項</h2>
+
+<h3 id="Coercion" name="Coercion">型変換</h3>
+
+<p>{{JSxRef("Number")}} と <code>BigInt</code> との間の型変換は精度が落ちる可能性があるため、 <code>BigInt</code> は値が論理的に2<sup>53</sup>以上になる場合にのみ使用し、この2つの型の間で型変換を行わないこと推奨します。</p>
+
+<h3 id="Cryptography" name="Cryptography">暗号処理</h3>
+
+<p><code>BigInt</code> で対応している演算は、実行時間が一定ではありません。従って、 <code>BigInt</code> は<a href="https://www.chosenplaintext.ca/articles/beginners-guide-constant-time-cryptography.html">暗号処理での使用には向きません</a>。</p>
+
+<h3 id="Use_within_JSON" name="Use_within_JSON">JSON での使用</h3>
+
+<p><code>BigInt</code> の値は既定で JSON のシリアライズに対応していないため、{{JSxRef("JSON.stringify()")}} を <code>BigInt</code> 値に対して使用すると <code>TypeError</code> が発生します。ただし、必要であれば独自の <code>toJSON</code> メソッドを実装することができます。</p>
+
+<pre class="brush: js notranslate">BigInt.prototype.toJSON = function() { return this.toString(); }</pre>
+
+<p><code>JSON.stringify</code> により、例外が発生する代わりに次のように文字列を生成するようになります。</p>
+
+<pre class="brush: js notranslate">JSON.stringify(BigInt(1));
+// '"1"'</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Calculating_Primes" name="Calculating_Primes">素数の計算</h3>
+
+<pre class="brush: js notranslate">function isPrime(p) {
+ for (let i = 2n; i * i &lt;= p; i++) {
+ if (p % i === 0n) return false;
+ }
+ return true;
+}
+
+// Takes a BigInt as an argument and returns a BigInt
+function nthPrime(nth) {
+ let maybePrime = 2n;
+ let prime = 0n;
+
+ while (nth &gt;= 0n) {
+ if (isPrime(maybePrime)) {
+ nth -= 1n;
+ prime = maybePrime;
+ }
+ maybePrime += 1n;
+ }
+
+ return prime;
+}
+
+nthPrime(20n)
+// ↪ 73n</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-bigint-objects", "<code>BigInt</code> objects")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.BigInt")}}</p>
+
+<h3 id="Implementation_Progress">Implementation Progress</h3>
+
+<p>The following table provides a daily implementation status for this feature, because this feature has not yet reached cross-browser stability. The data is generated by running the relevant feature tests in <a href="https://github.com/tc39/test262">Test262</a>, the standard test suite of JavaScript, in the nightly build, or latest release of each browser's JavaScript engine.</p>
+
+<p>{{EmbedTest262ReportResultsTable("BigInt")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Number")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/bigint/tostring/index.html b/files/ja/web/javascript/reference/global_objects/bigint/tostring/index.html
new file mode 100644
index 0000000000..06d956f1ed
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/bigint/tostring/index.html
@@ -0,0 +1,95 @@
+---
+title: BigInt.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/BigInt/toString
+tags:
+ - BigInt
+ - JavaScript
+ - Method
+ - Prototype
+ - toString()
+translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/toString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toString()</code></strong>メソッドは、指定した {{jsxref("BigInt")}} オブジェクトを表す文字列を返します。末尾の "n" は返り値の文字列の一部にはなりません。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/bigint-tostring.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>bigIntObj</var>.toString([<var>radix</var>])</code></pre>
+
+<h3 id="Parameters" name="Parameters">パラメーター</h3>
+
+<dl>
+ <dt><code>radix</code>{{optional_inline}}</dt>
+ <dd>オプション。数値を表す底に指定する 2 以上 36 以下の整数(基数)。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>指定した {{jsxref("BigInt")}} オブジェクトを表す文字列。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>toString()</code> が 2 未満または 36 より大きな基数を与えられた場合、{{jsxref("RangeError")}} がスローされます。</dd>
+</dl>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>{{jsxref("BigInt")}} オブジェクトは {{jsxref("Object")}} の <code>toString()</code> メソッドをオーバーライドします。つまり、{{jsxref("Object.prototype.toString()")}} を継承しません。{{jsxref( "BigInt")}} オブジェクトでは、<code>toString()</code> メソッドは指定された基数によるオブジェクトの文字列表現を返します。</p>
+
+<p><code>toString()</code> メソッドは 1 番目の引数を解析し、指定された基数(底)による文字列表現を返そうとします。10 より大きな基数が指定された場合は、アルファベットが 9 より大きな数値を示します。例えば、16 進数(底が 16)では <code>a</code> から <code>f</code> が使用されます。</p>
+
+<p><code>radix</code> が指定されなかった場合は、基数として 10 が指定されたとみなします。</p>
+
+<p><code>bigIntObj</code> が負の数だった場合、符号は保持されます。これは、基数が 2 だった場合にも適用されます。つまり、返り値の文字列は、<code>bigIntObj</code> の正の 2 進数表現の先頭に <code>-</code> 符号が付いたものであり、<code>bigIntObj</code> の 2 の補数<strong>ではありません。</strong></p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toString" name="Using_toString"><code>toString</code>の使用</h3>
+
+<pre class="brush: js notranslate">17n.toString(); // '17'
+66n.toString(2); // '1000010'
+254n.toString(16); // 'fe'
+-10n.toString(2);   // -1010'
+-0xffn.toString(2); // '-11111111'
+</pre>
+
+<h3 id="Negative-zero_BigInt" name="Negative-zero_BigInt"><code>BigInt</code> における負の 0</h3>
+
+<p>整数に負の 0 が存在しないのと同様に、<code>BigInt</code> には負の 0 がありません。<code>-0.0</code> は JavaScript の {{jsxref("Number")}} 型にのみ現れる、IEEE 浮動小数点数の概念です。</p>
+
+<pre class="brush: js notranslate">(-0n).toString(); // '0'
+BigInt(-0).toString(); // '0'</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-bigint.prototype.tostring', 'BigInt.prototype.toString()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</p>
+
+<p>{{Compat("javascript.builtins.BigInt.toString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("BigInt.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("BigInt.prototype.valueOf()")}}</li>
+ <li>{{jsxref("Number.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/bigint64array/bigint64array/index.html b/files/ja/web/javascript/reference/global_objects/bigint64array/bigint64array/index.html
new file mode 100644
index 0000000000..e1b6fc2138
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/bigint64array/bigint64array/index.html
@@ -0,0 +1,94 @@
+---
+title: BigInt64Array() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/BigInt64Array/BigInt64Array
+tags:
+ - BigInt
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/BigInt64Array/BigInt64Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>BigInt64Array()</code></strong> は型付き配列のコンストラクターで、新しい {{jsxref("BigInt64Array")}} オブジェクト、すなわち64ビット符号付き整数の配列をプラットフォームのバイトオーダーで生成します。バイトオーダーを制御する必要がある場合は、代わりに {{jsxref("DataView")}} を使用してください。中身は <code>0n</code> で初期化されます。生成後は、オブジェクトのメソッドや、標準の配列の添字構文 (すなわち角括弧表記) を用いて配列の要素を参照することができます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">new BigInt64Array();
+new BigInt64Array(<var>length</var>);
+new BigInt64Array(<var>typedArray</var>);
+new BigInt64Array(<var>object</var>);
+new BigInt64Array(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd><code><var>length</var></code> 引数付きで呼び出された場合、 <code><var>length</var></code> を <em><code>BYTES_PER_ELEMENT</code> バイトで掛けた大きさ</em>で、内部の配列バッファーがメモリ内に生成され、内容がゼロになります。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code><var>typedArray</var></code> 引数は任意の型付き配列 (<code>Int32Array</code> など) で、 <code><var>typedArray</var></code> を付けて呼び出された場合、その内容が新しい型付き配列に複写されます。 <code><var>typedArray</var></code> に含まれるそれぞれの値は、新しい配列にコピーされる前に、このコンストラクターに対応する型に変換されます。新しい型付き配列の長さは、 <code><var>typedArray</var></code> 引数の長さと同じになります。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd><code><var>object</var></code> 引数付きで呼び出された場合、新しい型付き配列は <code><var>TypedArray</var>.from()</code> メソッドのようにして生成されます。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd><code><var>buffer</var></code> 引数と、任意で <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数をつけて呼び出された場合、新しい型付き配列のビューが作成され、そのビューが指定された {{jsxref("ArrayBuffer")}} となります。 <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数は、型付き配列のビューで公開するメモリの範囲を指定します。両方が省略された場合は、 <code><var>buffer</var></code> 全体がビューとなり、 <code><var>length</var></code> のみが省略された場合は、 <code><var>buffer</var></code> の残りがビューとなります。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_BigInt64Array" name="Different_ways_to_create_a_BigInt64Array">BigInt64Array を生成するための様々な方法</h3>
+
+<pre class="brush: js">// From a length
+var bigint64 = new BigInt64Array(2);
+bigint64[0] = 42n;
+console.log(bigint64[0]); // 42n
+console.log(bigint64.length); // 2
+console.log(bigint64.BYTES_PER_ELEMENT); // 8
+
+// From an array
+var arr = new BigInt64Array([21n,31n]);
+console.log(arr[1]); // 31n
+
+// From another TypedArray
+var x = new BigInt64Array([21n, 31n]);
+var y = new BigInt64Array(x);
+console.log(y[0]); // 21n
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(32);
+var z = new BigInt64Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1n, 2n, 3n]; }();
+var bigint64 = new BigInt64Array(iterable);
+// BigInt64Array[1n, 2n, 3n]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-typedarray-constructors", "BigInt64Array")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.BigInt64Array.BigInt64Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li>
+ <li>{{jsxref("BigUint64Array")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/bigint64array/index.html b/files/ja/web/javascript/reference/global_objects/bigint64array/index.html
new file mode 100644
index 0000000000..996b5f09ac
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/bigint64array/index.html
@@ -0,0 +1,170 @@
+---
+title: BigInt64Array
+slug: Web/JavaScript/Reference/Global_Objects/BigInt64Array
+tags:
+ - BigInt
+ - BigInt64Array
+ - Class
+ - JavaScript
+ - Reference
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/BigInt64Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>BigInt64Array</code></strong> 型の配列は、プラットフォームのバイト順で 64 ビット符号付き整数の配列を表します。バイト順を制御する必要がある場合は、代わりに {{jsxref("DataView")}} を使用してください。内容は <code>0n</code> に初期化されます。一度確立されると、オブジェクトのメソッドを使って配列内の要素を参照するか、標準の配列インデックス構文を使って(つまり、角括弧記法を使って)配列を参照することができます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt><a href="/docs/Web/JavaScript/Reference/Global_Objects/BigInt64Array/BigInt64Array"><code>BigInt64Array()</code></a></dt>
+ <dd>新しい <code>BigInt64Array</code> オブジェクトを作成します</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "BigInt64Array.BYTES_PER_ELEMENT")}}</dt>
+ <dd>要素サイズの数値を返します。<code>BigInt64Array</code> は <code>8</code> です。</dd>
+ <dt>{{jsxref("TypedArray.name", "BigInt64Array.name")}}</dt>
+ <dd>コンストラクター名の文字列を返します。<code>BigInt64Array</code> は "BigInt64Array" です。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from", "BigInt64Array.from()")}}</dt>
+ <dd>array-like、あるいは iterable オブジェクトから新しい <code>BigInt64Array</code> を作成します。{{jsxref("Array.from()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.of", "BigInt64Array.of()")}}</dt>
+ <dd>可変数の引数から新しい <code>BigInt64Array</code> を作成します。{{jsxref("Array.of()")}} も参照してください。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.prototype.buffer", "BigInt64Array.prototype.buffer")}}</dt>
+ <dd><code>BigInt64Array</code> が参照する {{jsxref("ArrayBuffer")}} を返します。これは構築時に固定されているため、<strong>読み取り専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength", "BigInt64Array.prototype.byteLength")}}</dt>
+ <dd><code>BigInt64Array</code> の {{jsxref("ArrayBuffer")}} の先頭からの長さをバイト数で返します。これは構築時に固定されているため、<strong>読み取り専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset", "BigInt64Array.prototype.byteOffset")}}</dt>
+ <dd><code>BigInt64Array</code> の {{jsxref("ArrayBuffer")}} の先頭からのオフセットをバイト単位で返します。これは構築時に固定されているため、<strong>読み取り専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length", "BigInt64Array.prototype.length")}}</dt>
+ <dd><code>BigInt64Array</code> に保持されている要素数を返します。これは構築時に固定されているため、<strong>読み取り専用</strong>です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.copyWithin", "BigInt64Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内の配列要素のシーケンスをコピーします。{{jsxref("Array.prototype.copyWithin()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.entries", "BigInt64Array.prototype.entries()")}}</dt>
+ <dd>配列の各インデックスのキーと値のペアを含む、新しい <code>Array Iterator</code> オブジェクトを返します。{{jsxref("Array.prototype.entry()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.every", "BigInt64Array.prototype.every()")}}</dt>
+ <dd>配列のすべての要素が、関数で指定されたテストに合格するかどうかをテストします。{{jsxref("Array.prototype.every()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.fill", "BigInt64Array.prototype.fill()")}}</dt>
+ <dd>開始インデックスから終了インデックスまでの、配列のすべての要素を静的な値で埋めます。{{jsxref("Array.prototype.fill()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.filter", "BigInt64Array.prototype.filter()")}}</dt>
+ <dd>指定したフィルターリング関数が <code>true</code> を返す要素をすべて含む、新しい配列を作成します。{{jsxref("Array.prototype.filter()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.find", "BigInt64Array.prototype.find()")}}</dt>
+ <dd>配列内の要素が指定したテスト関数を満たしている場合は、配列内で見つかった値を返し、見つからなかった場合は <code>undefined</code> を返します。{{jsxref("Array.prototype.find()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.findIndex", "BigInt64Array.prototype.findIndex()")}}</dt>
+ <dd>配列内の要素が指定したテスト関数を満たす場合は、配列内で見つかったインデックスを返し、見つからなかった場合は -1 を返します。{{jsxref("Array.prototype.findIndex()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.forEach", "BigInt64Array.prototype.forEach()")}}</dt>
+ <dd>配列の各要素に対して関数を呼び出します。{{jsxref("Array.prototype.forEach()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.includes", "BigInt64Array.prototype.includes()")}}</dt>
+ <dd>型付き配列が特定の要素を含むかどうかを判断し、適切な場合は <code>true</code> または <code>false</code> を返します。{{jsxref("Array.prototype.includes()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.indexOf", "BigInt64Array.prototype.indexOf()")}}</dt>
+ <dd>指定した値と等しい配列内の要素の最初の(最小の)インデックスを返します。何も見つからない場合は -1 を返します。{{jsxref("Array.prototype.indexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.join", "BigInt64Array.prototype.join()")}}</dt>
+ <dd>配列のすべての要素を文字列に結合します。{{jsxref("Array.prototype.join()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.keys", "BigInt64Array.prototype.keys()")}}</dt>
+ <dd>配列の各インデックスのキーを含む新しい <code>Array Iterator</code> を返します。{{jsxref("Array.prototype.keys()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.lastIndexOf", "BigInt64Array.prototype.lastIndexOf()")}}</dt>
+ <dd>指定した値と等しい配列内の要素の最後の(最大の)インデックスを返します。何も見つからない場合は -1 を返します。{{jsxref("Array.prototype.lastIndexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.map", "BigInt64Array.prototype.map()")}}</dt>
+ <dd>この配列の各要素に対して指定した関数を呼び出した結果を持つ、新しい配列を作成します。{{jsxref("Array.prototype.map()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduce", "BigInt64Array.prototype.reduce()")}}</dt>
+ <dd>アキュムレータと配列の各値(左から右へ)を一つの値に減らすための関数を適用します。{{jsxref("Array.prototype.reduce()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduceRight", "BigInt64Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュムレータと配列の各値(右から左へ)を一つの値に減らすための関数を適用します。{{jsxref("Array.prototype.reduceRight()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reverse", "BigInt64Array.prototype.reverse()")}}</dt>
+ <dd>配列の要素の順序を反転させます — 最初が最後になり、最後が最初になります。{{jsxref("Array.prototype.reverse()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.set", "BigInt64Array.prototype.set()")}}</dt>
+ <dd>型付けされた配列に複数の値を格納し、指定した配列から入力値を読み込みます。</dd>
+ <dt>{{jsxref("TypedArray.slice", "BigInt64Array.prototype.slice()")}}</dt>
+ <dd>配列の一部を抽出し、新しい配列を返します。{{jsxref("Array.prototype.slice()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.some", "BigInt64Array.prototype.some()")}}</dt>
+ <dd>配列の少なくとも一つの要素が、指定したテスト関数を満たしている場合に <code>true</code> を返します。{{jsxref("Array.prototype.some()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.sort", "BigInt64Array.prototype.sort()")}}</dt>
+ <dd>配列の要素を所定の位置に並べ替えて、その配列を返します。{{jsxref("Array.prototype.sort()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.subarray", "BigInt64Array.prototype.subarray()")}}</dt>
+ <dd>指定した開始要素と終了要素のインデックスから、新しい <code>BigUint64Array</code> を返します。</dd>
+ <dt>{{jsxref("TypedArray.values", "BigInt64Array.prototype.values()")}}</dt>
+ <dd>配列の各インデックスの値を含む、新しい <code>Array Iterator</code> オブジェクトを返します。{{jsxref("Array.prototype.values()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toLocaleString", "BigInt64Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列とその要素を表すローカライズされた文字列を返します。{{jsxref("Array.prototype.toLocaleString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toString", "BigInt64Array.prototype.toString()")}}</dt>
+ <dd>配列とその要素を表す文字列を返します。{{jsxref("Array.prototype.toString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.@@iterator", "BigInt64Array.prototype[@@iterator]()")}}</dt>
+ <dd>配列の各インデックスの値を含む、新しい <code>Array Iterator</code> オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_BigInt64Array" name="Different_ways_to_create_a_BigInt64Array"><code>BigInt64Array</code> の作成方法の違い</h3>
+
+<pre class="brush: js notranslate">// length から
+var bigint64 = new BigInt64Array(2);
+bigint64[0] = 42n;
+console.log(bigint64[0]); // 42n
+console.log(bigint64.length); // 2
+console.log(bigint64.BYTES_PER_ELEMENT); // 8
+
+// 配列から
+var arr = new BigInt64Array([21n,31n]);
+console.log(arr[1]); // 31n
+
+// 別の TypedArray から
+var x = new BigInt64Array([21n, 31n]);
+var y = new BigInt64Array(x);
+console.log(y[0]); // 21n
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(32);
+var z = new BigInt64Array(buffer, 0, 4);
+
+// iterable なものから
+var iterable = function*(){ yield* [1n, 2n, 3n]; }();
+var bigint64 = new BigInt64Array(iterable);
+// BigInt64Array[1n, 2n, 3n]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-typedarray-objects", "BigInt64Array")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.builtins.BigInt64Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li>
+ <li>{{jsxref("BigUint64Array")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/biguint64array/biguint64array/index.html b/files/ja/web/javascript/reference/global_objects/biguint64array/biguint64array/index.html
new file mode 100644
index 0000000000..a59a779d0b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/biguint64array/biguint64array/index.html
@@ -0,0 +1,96 @@
+---
+title: BigUint64Array() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/BigUint64Array/BigUint64Array
+tags:
+ - BigInt
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypedArrays
+ - コンストラクター
+ - 型付き配列
+translation_of: Web/JavaScript/Reference/Global_Objects/BigUint64Array/BigUint64Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>BigUint64Array()</code></strong> は型付き配列のコンストラクターで、新しい {{jsxref("BigUint64Array")}} オブジェクト、すなわち64ビット符号なし整数の配列をプラットフォームのバイトオーダーで生成します。バイトオーダーを制御する必要がある場合は、代わりに {{jsxref("DataView")}} を使用してください。中身は <code>0n</code> で初期化されます。生成後は、オブジェクトのメソッドや、標準の配列の添字構文 (すなわち角括弧表記) を用いて配列の要素を参照することができます。</p>
+
+<h2 id="Constructors" name="Constructors">構文</h2>
+
+<pre class="syntaxbox">new BigUint64Array();
+new BigUint64Array(<var>length</var>);
+new BigUint64Array(<var>typedArray</var>);
+new BigUint64Array(<var>object</var>);
+new BigUint64Array(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd><code><var>length</var></code> 引数付きで呼び出された場合、 <code><var>length</var></code> を <em><code>BYTES_PER_ELEMENT</code> バイトで掛けた大きさ</em>で、内部の配列バッファーがメモリ内に生成され、内容がゼロになります。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code><var>typedArray</var></code> 引数は任意の型付き配列 (<code>Int32Array</code> など) で、 <code><var>typedArray</var></code> を付けて呼び出された場合、その内容が新しい型付き配列に複写されます。 <code><var>typedArray</var></code> に含まれるそれぞれの値は、新しい配列にコピーされる前に、このコンストラクターに対応する型に変換されます。新しい型付き配列の長さは、 <code><var>typedArray</var></code> 引数の長さと同じになります。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd><code><var>object</var></code> 引数付きで呼び出された場合、新しい型付き配列は <code><var>TypedArray</var>.from()</code> メソッドのようにして生成されます。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd><code><var>buffer</var></code> 引数と、任意で <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数をつけて呼び出された場合、新しい型付き配列のビューが作成され、そのビューが指定された {{jsxref("ArrayBuffer")}} となります。 <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数は、型付き配列のビューで公開するメモリの範囲を指定します。両方が省略された場合は、 <code><var>buffer</var></code> 全体がビューとなり、 <code><var>length</var></code> のみが省略された場合は、 <code><var>buffer</var></code> の残りがビューとなります。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_BigUint64Array" name="Different_ways_to_create_a_BigUint64Array">BigUint64Array を生成するための様々な方法</h3>
+
+<pre class="brush: js">// From a length
+var biguint64 = new BigUint64Array(2);
+biguint64[0] = 42n;
+console.log(biguint64[0]); // 42n
+console.log(biguint64.length); // 2
+console.log(biguint64.BYTES_PER_ELEMENT); // 8
+
+// From an array
+var arr = new BigUint64Array([21n,31n]);
+console.log(arr[1]); // 31n
+
+// From another TypedArray
+var x = new BigUint64Array([21n, 31n]);
+var y = new BigUint64Array(x);
+console.log(y[0]); // 21n
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(32);
+var z = new BigUint64Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1n, 2n, 3n]; }();
+var biguint64 = new BigUint64Array(iterable);
+// BigUint64Array[1n, 2n, 3n]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-typedarray-constructors", "BigUint64Array")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.BigUint64Array.BigUint64Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li>
+ <li>{{jsxref("BigInt64Array")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/biguint64array/index.html b/files/ja/web/javascript/reference/global_objects/biguint64array/index.html
new file mode 100644
index 0000000000..0976191b2c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/biguint64array/index.html
@@ -0,0 +1,170 @@
+---
+title: BigUint64Array
+slug: Web/JavaScript/Reference/Global_Objects/BigUint64Array
+tags:
+ - BigInt
+ - BigUInt64Array
+ - Class
+ - JavaScript
+ - Reference
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/BigUint64Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>BigUint64Array</code></strong> 型の配列は、プラットフォームのバイト順で 64 ビット符号付き整数の配列を表します。バイト順を制御する必要がある場合は、代わりに {{jsxref("DataView")}} を使用してください。内容は <code>0n</code> に初期化されます。一度確立されると、オブジェクトのメソッドを使って配列内の要素を参照するか、標準の配列インデックス構文を使って(つまり、角括弧記法を使って)配列を参照することができます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt><a href="/docs/Web/JavaScript/Reference/Global_Objects/BigUint64Array/BigUint64Array"><code>BigUint64Array()</code></a></dt>
+ <dd>新しい <code>BigUint64Array</code> オブジェクトを作成します</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "BigUint64Array.BYTES_PER_ELEMENT")}}</dt>
+ <dd>要素サイズの数値を返します。<code>BigUint64Array</code> は <code>8</code> です。</dd>
+ <dt>{{jsxref("TypedArray.name", "BigUint64Array.name")}}</dt>
+ <dd>コンストラクター名の文字列を返します。<code>BigUint64Array</code> は "BigUint64Array" です。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from", "BigUint64Array.from()")}}</dt>
+ <dd>array-like、あるいは iterable オブジェクトから新しい <code>BigUint64Array</code> を作成します。{{jsxref("Array.from()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.of", "BigUint64Array.of()")}}</dt>
+ <dd>可変数の引数から新しい <code>BigUint64Array</code> を作成します。{{jsxref("Array.of()")}} も参照してください。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.prototype.buffer", "BigUint64Array.prototype.buffer")}}</dt>
+ <dd><code>BigUint64Array</code> が参照する {{jsxref("ArrayBuffer")}} を返します。これは構築時に固定されているため、<strong>読み取り専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength", "BigUint64Array.prototype.byteLength")}}</dt>
+ <dd><code>BigUint64Array</code> の {{jsxref("ArrayBuffer")}} の先頭からの長さをバイト数で返します。これは構築時に固定されているため、<strong>読み取り専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset", "BigUint64Array.prototype.byteOffset")}}</dt>
+ <dd><code>BigUint64Array</code> の {{jsxref("ArrayBuffer")}} の先頭からのオフセットをバイト単位で返します。これは構築時に固定されているため、<strong>読み取り専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length", "BigUint64Array.prototype.length")}}</dt>
+ <dd><code>BigUint64Array</code> に保持されている要素数を返します。これは構築時に固定されているため、<strong>読み取り専用</strong>です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.copyWithin", "BigUint64Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内の配列要素のシーケンスをコピーします。{{jsxref("Array.prototype.copyWithin()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.entries", "BigUint64Array.prototype.entries()")}}</dt>
+ <dd>配列の各インデックスのキーと値のペアを含む、新しい <code>Array Iterator</code> オブジェクトを返します。{{jsxref("Array.prototype.entry()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.every", "BigUint64Array.prototype.every()")}}</dt>
+ <dd>配列のすべての要素が、関数で指定されたテストに合格するかどうかをテストします。{{jsxref("Array.prototype.every()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.fill", "BigUint64Array.prototype.fill()")}}</dt>
+ <dd>開始インデックスから終了インデックスまでの、配列のすべての要素を静的な値で埋めます。{{jsxref("Array.prototype.fill()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.filter", "BigUint64Array.prototype.filter()")}}</dt>
+ <dd>指定したフィルターリング関数が <code>true</code> を返す要素をすべて含む、新しい配列を作成します。{{jsxref("Array.prototype.filter()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.find", "BigUint64Array.prototype.find()")}}</dt>
+ <dd>配列内の要素が指定したテスト関数を満たしている場合は、配列内で見つかった値を返し、見つからなかった場合は <code>undefined</code> を返します。{{jsxref("Array.prototype.find()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.findIndex", "BigUint64Array.prototype.findIndex()")}}</dt>
+ <dd>配列内の要素が指定したテスト関数を満たす場合は、配列内で見つかったインデックスを返し、見つからなかった場合は -1 を返します。{{jsxref("Array.prototype.findIndex()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.forEach", "BigUint64Array.prototype.forEach()")}}</dt>
+ <dd>配列の各要素に対して関数を呼び出します。{{jsxref("Array.prototype.forEach()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.includes", "BigUint64Array.prototype.includes()")}}</dt>
+ <dd>型付き配列が特定の要素を含むかどうかを判断し、適切な場合は <code>true</code> または <code>false</code> を返します。{{jsxref("Array.prototype.includes()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.indexOf", "BigUint64Array.prototype.indexOf()")}}</dt>
+ <dd>指定した値と等しい配列内の要素の最初の(最小の)インデックスを返します。何も見つからない場合は -1 を返します。{{jsxref("Array.prototype.indexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.join", "BigUint64Array.prototype.join()")}}</dt>
+ <dd>配列のすべての要素を文字列に結合します。{{jsxref("Array.prototype.join()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.keys", "BigUint64Array.prototype.keys()")}}</dt>
+ <dd>配列の各インデックスのキーを含む新しい <code>Array Iterator</code> を返します。{{jsxref("Array.prototype.keys()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.lastIndexOf", "BigUint64Array.prototype.lastIndexOf()")}}</dt>
+ <dd>指定した値と等しい配列内の要素の最後の(最大の)インデックスを返します。何も見つからない場合は -1 を返します。{{jsxref("Array.prototype.lastIndexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.map", "BigUint64Array.prototype.map()")}}</dt>
+ <dd>この配列の各要素に対して指定した関数を呼び出した結果を持つ、新しい配列を作成します。{{jsxref("Array.prototype.map()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduce", "BigUint64Array.prototype.reduce()")}}</dt>
+ <dd>アキュムレータと配列の各値(左から右へ)を一つの値に減らすための関数を適用します。{{jsxref("Array.prototype.reduce()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduceRight", "BigUint64Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュムレータと配列の各値(右から左へ)を一つの値に減らすための関数を適用します。{{jsxref("Array.prototype.reduceRight()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reverse", "BigUint64Array.prototype.reverse()")}}</dt>
+ <dd>配列の要素の順序を反転させます — 最初が最後になり、最後が最初になります。{{jsxref("Array.prototype.reverse()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.set", "BigUint64Array.prototype.set()")}}</dt>
+ <dd>型付けされた配列に複数の値を格納し、指定した配列から入力値を読み込みます。</dd>
+ <dt>{{jsxref("TypedArray.slice", "BigUint64Array.prototype.slice()")}}</dt>
+ <dd>配列の一部を抽出し、新しい配列を返します。{{jsxref("Array.prototype.slice()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.some", "BigUint64Array.prototype.some()")}}</dt>
+ <dd>配列の少なくとも一つの要素が、指定したテスト関数を満たしている場合に <code>true</code> を返します。{{jsxref("Array.prototype.some()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.sort", "BigUint64Array.prototype.sort()")}}</dt>
+ <dd>配列の要素を所定の位置に並べ替えて、その配列を返します。{{jsxref("Array.prototype.sort()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.subarray", "BigUint64Array.prototype.subarray()")}}</dt>
+ <dd>指定した開始要素と終了要素のインデックスから、新しい <code>BigUint64Array</code> を返します。</dd>
+ <dt>{{jsxref("TypedArray.values", "BigUint64Array.prototype.values()")}}</dt>
+ <dd>配列の各インデックスの値を含む、新しい <code>Array Iterator</code> オブジェクトを返します。{{jsxref("Array.prototype.values()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toLocaleString", "BigUint64Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列とその要素を表すローカライズされた文字列を返します。{{jsxref("Array.prototype.toLocaleString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toString", "BigUint64Array.prototype.toString()")}}</dt>
+ <dd>配列とその要素を表す文字列を返します。{{jsxref("Array.prototype.toString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.@@iterator", "BigUint64Array.prototype[@@iterator]()")}}</dt>
+ <dd>配列の各インデックスの値を含む、新しい <code>Array Iterator</code> オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_BigUint64Array" name="Different_ways_to_create_a_BigUint64Array"><code>BigUint64Array</code> の作成方法の違い</h3>
+
+<pre class="brush: js notranslate">// length から
+var biguint64 = new BigUint64Array(2);
+biguint64[0] = 42n;
+console.log(biguint64[0]); // 42n
+console.log(biguint64.length); // 2
+console.log(biguint64.BYTES_PER_ELEMENT); // 8
+
+// 配列から
+var arr = new BigUint64Array([21n,31n]);
+console.log(arr[1]); // 31n
+
+// 別の TypedArray から
+var x = new BigUint64Array([21n, 31n]);
+var y = new BigUint64Array(x);
+console.log(y[0]); // 21n
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(32);
+var z = new BigUint64Array(buffer, 0, 4);
+
+// iterable なものから
+var iterable = function*(){ yield* [1n, 2n, 3n]; }();
+var biguint64 = new BigUint64Array(iterable);
+// BigUint64Array[1n, 2n, 3n]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-typedarray-objects", "BigUint64Array")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.builtins.BigUint64Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li>
+ <li>{{jsxref("BigInt64Array")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/boolean/boolean/index.html b/files/ja/web/javascript/reference/global_objects/boolean/boolean/index.html
new file mode 100644
index 0000000000..c1cb573f8d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/boolean/boolean/index.html
@@ -0,0 +1,77 @@
+---
+title: Boolean() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Boolean/Boolean
+tags:
+ - Boolean
+ - Constructor
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/Boolean
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Boolean()</code></strong> コンストラクターは {{jsxref("Boolean")}} オブジェクトを生成するために使用します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/boolean-constructor.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Boolean([<var>value</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code> {{optional_inline}}</dt>
+ <dd><code>Boolean</code> オブジェクトの初期値です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_Boolean_objects_with_an_initial_value_of_false" name="Creating_Boolean_objects_with_an_initial_value_of_false">false の初期値を持った Boolean オブジェクト</h3>
+
+<pre class="brush: js notranslate">var bNoParam = new Boolean();
+var bZero = new Boolean(0);
+var bNull = new Boolean(null);
+var bEmptyString = new Boolean('');
+var bfalse = new Boolean(false);
+</pre>
+
+<h3 id="Creating_Boolean_objects_with_an_initial_value_of_true" name="Creating_Boolean_objects_with_an_initial_value_of_true">true の初期値を持った Boolean オブジェクト</h3>
+
+<pre class="brush: js notranslate">var btrue = new Boolean(true);
+var btrueString = new Boolean('true');
+var bfalseString = new Boolean('false');
+var bSuLin = new Boolean('Su Lin');
+var bArrayProto = new Boolean([]);
+var bObjProto = new Boolean({});</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-boolean-constructor', 'Boolean constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Boolean.Boolean")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Glossary/Boolean">Boolean</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/boolean/index.html b/files/ja/web/javascript/reference/global_objects/boolean/index.html
new file mode 100644
index 0000000000..c8654b0cae
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/boolean/index.html
@@ -0,0 +1,125 @@
+---
+title: Boolean
+slug: Web/JavaScript/Reference/Global_Objects/Boolean
+tags:
+ - Boolean
+ - Class
+ - JavaScript
+ - Reference
+ - クラス
+translation_of: Web/JavaScript/Reference/Global_Objects/Boolean
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Boolean</code></strong> オブジェクトは論理値のオブジェクトラッパーです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>一番目の引数に渡された値は、必要に応じて論理値に変換されます。値が省略された場合や、値が <code>0</code>, <code>-0</code>, {{jsxref("null")}}, <code>false</code>, {{jsxref("NaN")}}, {{jsxref("undefined")}} あるいは空文字列 (<code>""</code>) であった場合、オブジェクトは <code>false</code> の初期値を持ちます。それ以外のあらゆる値は、オブジェクトや "<code>false</code>" という文字列も含めて、 <code>true</code> の初期値を持つオブジェクトを生成します。</p>
+
+<p>プリミティブな <code>Boolean</code> の <code>true</code> や <code>false</code> を <code>Boolean</code> オブジェクトの <code>true</code> や <code>false</code> という値と混同しないでください。</p>
+
+<p>その値が {{jsxref("undefined")}} や {{jsxref("null")}} でないオブジェクトは、値が <code>false</code> の <code>Boolean</code> オブジェクトも含めて、条件文に通されると全て <code>true</code> に評価されます。例えば、以下の {{jsxref("Statements/if...else", "if")}} 文の条件は <code>true</code> に評価されます。:</p>
+
+<pre class="brush: js notranslate">var x = new Boolean(false);
+if (x) {
+ // このコードは実行されます。
+}
+</pre>
+
+<p>この振る舞いは <code>Boolean</code> プリミティブには適用されません。例えば、以下の {{jsxref("Statements/if...else", "if")}} 文の条件は <code>false</code> に評価されます。:</p>
+
+<pre class="brush: js notranslate">var x = false;
+if (x) {
+ // このコードは実行されません
+}
+</pre>
+
+<p><code>Boolean</code> オブジェクトを論理値でない値から論理値への変換に使わないでください。代わりに、 <code>Boolean</code> を関数として使ったり、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_NOT">二重否定演算子</a>を使用したりすることで同じことが行えます。</p>
+
+<pre class="brush: js notranslate">var x = Boolean(expression); // こちらを使うか...
+var x = !!(expression); // ...こちらを使ってください
+var x = new Boolean(expression); // これは使わないでください!
+</pre>
+
+<p><code>Boolean</code> オブジェクトの初期値としてオブジェクトを指定した場合、それが値が <code>false</code> の <code>Boolean</code> オブジェクトであっても、新しい <code>Boolean</code> オブジェクトは <code>true</code> の値を持ちます。</p>
+
+<pre class="brush: js notranslate">var myFalse = new Boolean(false); // 初期値は false
+var g = Boolean(myFalse); // 初期値は true
+var myString = new String('Hello'); // 文字列オブジェクト
+var s = Boolean(myString); // 初期値は true
+</pre>
+
+<p><code>Boolean</code> プリミティブの代わりに <code>Boolean</code> オブジェクトを使わないでください。</p>
+
+<div class="note">
+<p><strong>Note:</strong> 標準外の <code><a href="/ja/docs/Web/API/Document#Properties">document.all</a></code> プロパティがこのコンストラクターの引数として使用された場合、結果は <code>Boolean</code> オブジェクトで値は <code>false</code> となります。このプロパティは古く、標準外で、使用するべきではありません。</p>
+</div>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Boolean/Boolean", "Boolean()")}}</dt>
+ <dd>新しい <code>Boolean</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Boolean.prototype.toString()")}}</dt>
+ <dd>オブジェクトの値に応じて文字列で <code>true</code> または <code>false</code> のどちらかを返します。 {{jsxref("Object.prototype.toString()")}} メソッドを上書きします。</dd>
+ <dt>{{jsxref("Boolean.prototype.valueOf()")}}</dt>
+ <dd>{{jsxref("Boolean")}} オブジェクトのプリミティブ値を返します。 {{jsxref("Object.prototype.valueOf()")}} メソッドを上書きします。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_Boolean_objects_with_an_initial_value_of_false" name="Creating_Boolean_objects_with_an_initial_value_of_false">Boolean オブジェクトを初期値 false で生成</h3>
+
+<pre class="brush: js notranslate">var bNoParam = new Boolean();
+var bZero = new Boolean(0);
+var bNull = new Boolean(null);
+var bEmptyString = new Boolean('');
+var bfalse = new Boolean(false);
+</pre>
+
+<h3 id="Creating_Boolean_objects_with_an_initial_value_of_true" name="Creating_Boolean_objects_with_an_initial_value_of_true">Boolean オブジェクトを初期値 true で生成</h3>
+
+<pre class="brush: js notranslate">var btrue = new Boolean(true);
+var btrueString = new Boolean('true');
+var bfalseString = new Boolean('false');
+var bSuLin = new Boolean('Su Lin');
+var bArrayProto = new Boolean([]);
+var bObjProto = new Boolean({});
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-boolean-objects', 'Boolean')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Boolean")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Glossary/Boolean">Boolean</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Data_structures#Boolean_type">論理値プリミティブ</a></li>
+ <li><a href="https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%AA%E3%82%A2%E3%83%B3%E5%9E%8B">ブーリアン型 (Wikipedia)</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/boolean/tosource/index.html b/files/ja/web/javascript/reference/global_objects/boolean/tosource/index.html
new file mode 100644
index 0000000000..e848f174ef
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/boolean/tosource/index.html
@@ -0,0 +1,56 @@
+---
+title: Boolean.prototype.toSource()
+slug: Web/JavaScript/Reference/Global_Objects/Boolean/toSource
+tags:
+ - Boolean
+ - JavaScript
+ - Method
+ - Non-standard
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toSource
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p><code><strong>toSource()</strong></code> メソッドはオブジェクトのソースコードを表す文字列を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><em>booleanObj</em>.toSource() Boolean.toSource()</code></pre>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>オブジェクトのソースコードを表す文字列です。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>toSource</code> メソッドは以下の値を返します。</p>
+
+<ul>
+ <li>組み込みの {{jsxref("Boolean")}} オブジェクトに対しては、<code>toSource</code> はソースコードが利用不可能なことを示す以下の文字列を返します。
+
+ <pre class="brush:js">function Boolean() {
+ [native code]
+}</pre>
+ </li>
+ <li>{{jsxref("Boolean")}} のインスタンスに対しては、<code>toSource</code> はソースコードを表す文字列を返します。</li>
+</ul>
+
+<p>このメソッドはたいてい JavaScript によって内部的に呼び出され、コードで明示的に呼び出されることはありません。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<p>いずれの標準仕様にも組み込まれていません。JavaScript 1.3 で実装されました。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Boolean.toSource")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/boolean/tostring/index.html b/files/ja/web/javascript/reference/global_objects/boolean/tostring/index.html
new file mode 100644
index 0000000000..9d4961efd4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/boolean/tostring/index.html
@@ -0,0 +1,88 @@
+---
+title: Boolean.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/Boolean/toString
+tags:
+ - Boolean
+ - Boolean Methods
+ - JavaScript
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toString
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>toString()</strong></code> メソッドは、指定された Boolean オブジェクトを表す文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/boolean-tostring.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><em>bool</em>.toString()</code></pre>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>指定された {{jsxref("Boolean")}} オブジェクトを表す文字列。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>{{jsxref("Boolean")}} オブジェクトは {{jsxref("Object")}} オブジェクトの <code>toString</code> メソッドを上書きしており、{{jsxref("Object.prototype.toString()")}} を継承していません。Boolean オブジェクトでは、<code>toString</code> メソッドはオブジェクトを文字列で表したものを返します。</p>
+
+<p>{{jsxref("Boolean")}} が文字列値として表されるべきときや、{{jsxref("Boolean")}} が文字列の結合で参照されたとき、JavaScript は <code>toString</code> メソッドを自動的に呼び出します。</p>
+
+<p>{{jsxref("Boolean")}} オブジェクトと真偽値では、組み込みの <code>toString</code> メソッドはその {{jsxref("Boolean")}} オブジェクトの値によって "<code>true</code>" か "<code>false</code>" の文字列を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toString" name="Using_toString"><code>toString</code> を使用する</h3>
+
+<p>以下のコードでは、<code>flag.toString()</code> は "<code>true</code>" を返します:</p>
+
+<pre class="brush:js">var flag = new Boolean(true);
+var myVar = flag.toString();</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">ステータス</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>初期定義。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-15.6.4.2', 'Boolean.prototype.toString')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-boolean.prototype.tostring', 'Boolean.prototype.toString')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-boolean.prototype.tostring', 'Boolean.prototype.toString')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Boolean.toString")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/boolean/valueof/index.html b/files/ja/web/javascript/reference/global_objects/boolean/valueof/index.html
new file mode 100644
index 0000000000..78273ddb08
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/boolean/valueof/index.html
@@ -0,0 +1,85 @@
+---
+title: Boolean.prototype.valueOf()
+slug: Web/JavaScript/Reference/Global_Objects/Boolean/valueOf
+tags:
+ - Boolean
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/valueOf
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>valueOf()</strong></code> メソッドは、{{jsxref("Boolean")}} オブジェクトのプリミティブ値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/boolean-valueof.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><var>bool</var>.valueOf()</code></pre>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>与えられた {{jsxref("Boolean")}} オブジェクトのプリミティブ値です。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>valueOf</code> メソッドは、{{jsxref("Boolean")}} オブジェクトのプリミティブ値か真偽値データ型としての {{jsxref("Boolean")}} リテラルを返します。</p>
+
+<p>このメソッドはたいてい JavaScript によって内部的に呼び出され、コードで明示的に呼び出されることはありません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_valueOf" name="Using_valueOf"><code>valueOf</code> を使う</h3>
+
+<pre>x = new Boolean();
+myVar = x.valueOf() // myVar に false が代入される
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">使用</th>
+ <th scope="col">ステータス</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>初期定義。JavaScript 1.1 で実装。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-15.6.4.3', 'Boolean.prototype.valueOf')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-boolean.prototype.valueof', 'Boolean.prototype.valueOf')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-boolean.prototype.valueof', 'Boolean.prototype.valueOf')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Boolean.valueOf")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.valueOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/buffer/index.html b/files/ja/web/javascript/reference/global_objects/dataview/buffer/index.html
new file mode 100644
index 0000000000..bf957f1f89
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/buffer/index.html
@@ -0,0 +1,60 @@
+---
+title: DataView.prototype.buffer
+slug: Web/JavaScript/Reference/Global_Objects/DataView/buffer
+tags:
+ - DataView
+ - JavaScript
+ - Property
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/buffer
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>buffer</code></strong> アクセサープロパティは、この <code>DataView</code> の構築時に参照された {{jsxref("ArrayBuffer")}} または {{jsxref("SharedArrayBuffer")}} を表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-buffer.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>buffer</code> プロパティは、設定アクセサー関数が <code>undefined</code> である、すなわち読み取りのみができるアクセサープロパティです。この値は <code>DataView</code> が構築されたときに確立され、変更することができません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_buffer_property" name="Using_the_buffer_property">buffer プロパティの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.buffer; // ArrayBuffer { byteLength: 8 }
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-dataview.prototype.buffer', 'DataView.prototype.buffer')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.buffer")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("SharedArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/bytelength/index.html b/files/ja/web/javascript/reference/global_objects/dataview/bytelength/index.html
new file mode 100644
index 0000000000..f4d22b4051
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/bytelength/index.html
@@ -0,0 +1,66 @@
+---
+title: DataView.prototype.byteLength
+slug: Web/JavaScript/Reference/Global_Objects/DataView/byteLength
+tags:
+ - DataView
+ - JavaScript
+ - Property
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/byteLength
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>byteLength</code></strong> アクセサープロパティは、このビューの {{jsxref("ArrayBuffer")}} または {{jsxref("SharedArrayBuffer")}} の先頭から長さを (バイト単位で) 表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-bytelength.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>byteLength</code> プロパティは、設定アクセサー関数が <code>undefined</code> である、すなわち読み取りのみができるアクセサープロパティです。この値は <code>DataView</code> が構築されたときに確立され、変更することができません。 <code>DataView</code> がオフセットや <code>byteLength</code> を指定していなかった場合は、参照されている <code>ArrayBuffer</code> または <code>SharedArrayBuffer</code> の <code>byteLength</code> が返されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_byteLength_property" name="Using_the_byteLength_property">byteLength プロパティの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.byteLength; // 8 (matches the byteLength of the buffer)
+
+var dataview2 = new DataView(buffer, 1, 5);
+dataview2.byteLength; // 5 (as specified when constructing the DataView)
+
+var dataview3 = new DataView(buffer, 2);
+dataview3.byteLength; // 6 (due to the offset of the constructed DataView)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-dataview.prototype.bytelength', 'DataView.prototype.byteLength')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.byteLength")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("SharedArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/byteoffset/index.html b/files/ja/web/javascript/reference/global_objects/dataview/byteoffset/index.html
new file mode 100644
index 0000000000..c81d30750e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/byteoffset/index.html
@@ -0,0 +1,63 @@
+---
+title: DataView.prototype.byteOffset
+slug: Web/JavaScript/Reference/Global_Objects/DataView/byteOffset
+tags:
+ - DataView
+ - JavaScript
+ - Property
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/byteOffset
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>byteOffset</code></strong> アクセサープロパティは、このビューの {{jsxref("ArrayBuffer")}} または {{jsxref("SharedArrayBuffer")}} の先頭からオフセットを表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-byteoffset.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>byteOffset</code> プロパティは、設定アクセサー関数が <code>undefined</code> である、すなわち読み取りのみができるアクセサープロパティです。この値は <code>DataView</code> が構築されたときに確立され、変更することができません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_byteOffset_property" name="Using_the_byteOffset_property">byteOffset プロパティの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.byteOffset; // 0 (no offset specified)
+
+var dataview2 = new DataView(buffer, 3);
+dataview2.byteOffset; // 3 (as specified when constructing the DataView)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-dataview.prototype.byteoffset', 'DataView.prototype.byteOffset')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.byteOffset")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("SharedArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/dataview/index.html b/files/ja/web/javascript/reference/global_objects/dataview/dataview/index.html
new file mode 100644
index 0000000000..266a46f54d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/dataview/index.html
@@ -0,0 +1,88 @@
+---
+title: DataView() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/DataView/DataView
+tags:
+ - Constructor
+ - DataView
+ - JavaScript
+ - Reference
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/DataView
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>DataView()</code></strong> コンストラクターは、 {{jsxref("DataView")}} オブジェクトを生成するために使用します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-constructor.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new DataView(<var>buffer</var> [, <var>byteOffset</var> [, <var>byteLength</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>buffer</var></code></dt>
+ <dd>既存の {{jsxref("ArrayBuffer")}} または {{jsxref("SharedArrayBuffer")}} で、新しい <code>DataView</code> オブジェクトの背景となるストレージとして使用されます。</dd>
+ <dt><code><var>byteOffset</var></code> {{optional_inline}}</dt>
+ <dd>新しいビューが参照するバッファーの最初のバイトまでのオフセットをバイト単位で指定します。指定されていない場合、バッファービューは最初のバイトから始まります。</dd>
+ <dt><code><var>byteLength</var></code> {{optional_inline}}</dt>
+ <dd>バイト配列の要素数です。指定しない場合、ビューの長さはバッファーの長さと一致します。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたデータバッファーを表す <code>DataView</code> オブジェクトです。 (これはおそらくあまり役に立たない説明でした。)</p>
+
+<p>返されるオブジェクトは、バイトの配列バッファーの「インタープリター」と考えることができます。 - これは読み書きの際に、バッファー内に正しく収まるように数値を変換する方法を知っています。これは、整数や浮動小数点数の変換、エンディアン、その他バイナリ形式で数値を表現する際の詳細を扱うことを意味します。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd>
+ <p><code>byteOffset</code> や <code>byteLength</code> 引数の値がバッファーの末尾を超えて広がる結果になる場合に発生します。</p>
+
+ <p>例えば、バッファーが16バイトの長さで、 <code>byteOffset</code> が8バイト、 <code>byteLength</code> が10バイトの場合、バッファーの全長を2バイト超えるビューを展開しようとするので、このエラーが発生します。</p>
+ </dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_DataView" name="Using_DataView">DataView の使用</h3>
+
+<pre class="brush: js notranslate">var buffer = new ArrayBuffer(16);
+var view = new DataView(buffer, 0);
+
+view.setInt16(1, 42);
+view.getInt16(1); // 42
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview-constructor', 'DataView constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.DataView")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/getfloat32/index.html b/files/ja/web/javascript/reference/global_objects/dataview/getfloat32/index.html
new file mode 100644
index 0000000000..1f1d63745b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/getfloat32/index.html
@@ -0,0 +1,83 @@
+---
+title: DataView.prototype.getFloat32()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/getFloat32
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getFloat32
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getFloat32()</code></strong> メソッドは、符号付き32ビット浮動小数点数 (float) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置から読み取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-getfloat32.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.getFloat32(<var>byteOffset</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを読み取る位置です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 32ビット浮動小数点数が{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納されているかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値を読み取ります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>符号付き32ビット浮動小数点数。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて読み取るように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>アライメントの強制はありません。複数バイトの値はどのオフセットからも読み取ることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_getFloat32_method" name="Using_the_getFloat32_method">getFloat32 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.getFloat32(1); // 0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.getfloat32', 'DataView.prototype.getFloat32')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.getFloat32")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/getfloat64/index.html b/files/ja/web/javascript/reference/global_objects/dataview/getfloat64/index.html
new file mode 100644
index 0000000000..5ecb7fd8ff
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/getfloat64/index.html
@@ -0,0 +1,83 @@
+---
+title: DataView.prototype.getFloat64()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/getFloat64
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getFloat64
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getFloat64()</code></strong> メソッドは、符号付き64ビット浮動小数点数 (double) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置から読み取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-getfloat64.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.getFloat64(<var>byteOffset</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを読み取る位置です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 64ビット浮動小数点数が{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納されているかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値を読み取ります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>符号付き64ビット浮動小数点数。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて読み取るように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>アライメントの強制はありません。複数バイトの値はどのオフセットからも読み取ることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_getFloat64_method" name="Using_the_getFloat64_method">getFloat64 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.getFloat64(0); // 0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.getfloat64', 'DataView.prototype.getFloat64')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.getFloat64")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/getint16/index.html b/files/ja/web/javascript/reference/global_objects/dataview/getint16/index.html
new file mode 100644
index 0000000000..eb5d45147b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/getint16/index.html
@@ -0,0 +1,83 @@
+---
+title: DataView.prototype.getInt16()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/getInt16
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getInt16
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getInt16()</code></strong> メソッドは、符号付き16ビット整数 (short) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置から読み取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-getint16.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.getInt16(<var>byteOffset</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを読み取る位置です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 16ビット整数が{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納されているかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値を読み取ります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>符号付き16ビット整数。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて読み取るように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>アライメントの強制はありません。複数バイトの値はどのオフセットからも読み取ることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_getInt16_method" name="Using_the_getInt16_method">getInt16 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.getInt16(1); // 0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.getint16', 'DataView.prototype.getInt16')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.getInt16")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/getint32/index.html b/files/ja/web/javascript/reference/global_objects/dataview/getint32/index.html
new file mode 100644
index 0000000000..c801456f1d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/getint32/index.html
@@ -0,0 +1,83 @@
+---
+title: DataView.prototype.getInt32()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/getInt32
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getInt32
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getInt32()</code></strong> メソッドは、符号付き32ビット整数 (long) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置から読み取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-getint32.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.getInt32(<var>byteOffset</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを読み取る位置です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 32ビット整数が{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納されているかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値を読み取ります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>符号付き32ビット整数。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて読み取るように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>アライメントの強制はありません。複数バイトの値はどのオフセットからも読み取ることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_getInt32_method" name="Using_the_getInt32_method">getInt32 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.getInt32(1); // 0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.getint32', 'DataView.prototype.getInt32')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.getInt32")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/getint8/index.html b/files/ja/web/javascript/reference/global_objects/dataview/getint8/index.html
new file mode 100644
index 0000000000..96c3160b25
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/getint8/index.html
@@ -0,0 +1,81 @@
+---
+title: DataView.prototype.getInt8()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/getInt8
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getInt8
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getInt8()</code></strong> メソッドは、符号付き8ビット整数 (byte) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置から読み取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-getint8.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.getInt8(<var>byteOffset</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを読み取る位置です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>符号付き8ビット整数。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて読み取るように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>アライメントの強制はありません。複数バイトの値はどのオフセットからも読み取ることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_getInt8_method" name="Using_the_getInt8_method">getInt8 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.getInt8(1); // 0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.getint8', 'DataView.prototype.getInt8')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.getInt8")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/getuint16/index.html b/files/ja/web/javascript/reference/global_objects/dataview/getuint16/index.html
new file mode 100644
index 0000000000..383124b6f7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/getuint16/index.html
@@ -0,0 +1,83 @@
+---
+title: DataView.prototype.getUint16()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/getUint16
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getUint16
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getUint16()</code></strong> メソッドは、符号なし16ビット整数 (unsigned short) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置から読み取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-getuint16.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.getUint16(<var>byteOffset</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを読み取る位置です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 16ビット整数が{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納されているかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値を読み取ります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>符号なし16ビット整数。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて読み取るように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>アライメントの強制はありません。複数バイトの値はどのオフセットからも読み取ることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_getUint16_method" name="Using_the_getUint16_method">getUint16 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.getUint16(1); // 0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.getuint16', 'DataView.prototype.getUint16')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.getUint16")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/getuint32/index.html b/files/ja/web/javascript/reference/global_objects/dataview/getuint32/index.html
new file mode 100644
index 0000000000..3415865d1f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/getuint32/index.html
@@ -0,0 +1,83 @@
+---
+title: DataView.prototype.getUint32()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/getUint32
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getUint32
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getUint32()</code></strong> メソッドは、符号なし32ビット整数 (unsigned long) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置から読み取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-getuint32.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.getUint32(<var>byteOffset</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを読み取る位置です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 32ビット整数が{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納されているかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値を読み取ります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>符号なし32ビット整数。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて読み取るように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>アライメントの強制はありません。複数バイトの値はどのオフセットからも読み取ることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_getUint32_method" name="Using_the_getUint32_method">getUint32 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.getUint32(1); // 0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.getuint32', 'DataView.prototype.getUint32')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.getUint32")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/getuint8/index.html b/files/ja/web/javascript/reference/global_objects/dataview/getuint8/index.html
new file mode 100644
index 0000000000..7da901c945
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/getuint8/index.html
@@ -0,0 +1,81 @@
+---
+title: DataView.prototype.getUint8()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/getUint8
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/getUint8
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getUint8()</code></strong> メソッドは、符号なし8ビット整数 (unsigned byte) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置から読み取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-getuint8.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.getUint8(<var>byteOffset</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを読み取る位置です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>符号なし8ビット整数。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて読み取るように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>アライメントの強制はありません。複数バイトの値はどのオフセットからも読み取ることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_getUint8_method" name="Using_the_getUint8_method">getUint8 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.getUint8(1); // 0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.getuint8', 'DataView.prototype.getUint8')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.getUint8")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/index.html b/files/ja/web/javascript/reference/global_objects/dataview/index.html
new file mode 100644
index 0000000000..0e7ea6defd
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/index.html
@@ -0,0 +1,164 @@
+---
+title: DataView
+slug: Web/JavaScript/Reference/Global_Objects/DataView
+tags:
+ - Class
+ - DataView
+ - JavaScript
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>DataView</code></strong> ビューは {{jsxref("ArrayBuffer")}} の多様な数値型を、プラットフォームの{{glossary("Endianness", "エンディアン")}}に関係なく読み書きするための低水準インターフェイスを提供します。</span></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<h3 id="Endianness" name="Endianness">エンディアン</h3>
+
+<p>多バイトの数値形式は、マシンアーキテクチャによってメモリー内での表現が異なります。これは {{Glossary("Endianness", "エンディアン")}}で説明しています。DataView のアクセサーは、プラットフォームアーキテクチャのエンディアンに関係なくデータにアクセスする方法を明確に制御する手段を提供します。</p>
+
+<pre class="brush: js notranslate">var littleEndian = (function() {
+ var buffer = new ArrayBuffer(2);
+ new DataView(buffer).setInt16(0, 256, true /* リトルエンディアン */);
+ // Int16Array はプラットフォームのエンディアンを使用する
+ return new Int16Array(buffer)[0] === 256;
+})();
+console.log(littleEndian); // true または false
+</pre>
+
+<h3 id="64-bit_Integer_Values" name="64-bit_Integer_Values">64 ビット整数値</h3>
+
+<p>JavaScript は現在のところ、64 ビット整数値に標準で対応していないので、<code>DataView</code> はネイティブの 64 ビット操作を提供していません。回避策として、独自で <code>getUint64()</code> 関数を実装して {{jsxref("Number.MAX_SAFE_INTEGER")}} までの制度の値を受け取れるようにします。</p>
+
+<pre class="brush: js notranslate">function getUint64(dataview, byteOffset, littleEndian) {
+ // 64 ビット数を 2 つの 32 ビット (4 バイト) の部分に分割する
+ const left = dataview.getUint32(byteOffset, littleEndian);
+ const right = dataview.getUint32(byteOffset+4, littleEndian);
+
+ // 2 つの 32 ビットの値を結合する
+ const combined = littleEndian? left + 2**32*right : 2**32*left + right;
+
+ if (!Number.isSafeInteger(combined))
+ console.warn(combined, 'exceeds MAX_SAFE_INTEGER. Precision may be lost');
+
+ return combined;
+}
+</pre>
+
+<p>他にも、完全な 64 ビットの幅が必要な場合、{{jsxref("BigInt")}} を作成することもできます。さらに言えば、ネイティブの BigInt がユーザーランドライブラリの同等品よりもはるかに速いのですが、JavaScript では BigInt は可変長であるという性質上、常に 32 ビット整数よりもはるかに遅くなります。</p>
+
+<pre class="brush: js notranslate">const BigInt = window.BigInt, bigThirtyTwo = BigInt(32), bigZero = BigInt(0);
+function getUint64BigInt(dataview, byteOffset, littleEndian) {
+ // 64 ビット数を 2 つの 32 ビット (4 バイト) の部分に分割する
+ const left = BigInt(dataview.getUint32(byteOffset|0, !!littleEndian)&gt;&gt;&gt;0);
+ const right = BigInt(dataview.getUint32((byteOffset|0) + 4|0, !!littleEndian)&gt;&gt;&gt;0);
+
+ // 2 つの 32 ビットの値を結合して返す
+ return littleEndian ? (right&lt;&lt;bigThirtyTwo)|left : (left&lt;&lt;bigThirtyTwo)|right;
+}</pre>
+
+<h2 id="Constructor" name="Constructor">コンストラクタ</h2>
+
+<dl>
+ <dt><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/DataView/DataView"><code>DataView()</code></a></dt>
+ <dd>新しい <code>DataView</code> オブジェクトを作成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("DataView.prototype.buffer")}}</dt>
+ <dd>このビューによって参照される {{jsxref("ArrayBuffer")}} 。構築時に設定されるため、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("DataView.prototype.byteLength")}}</dt>
+ <dd>{{jsxref("ArrayBuffer")}} の開始位置からこのビューの(バイト単位の)長さ。構築時に設定されるため、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("DataView.prototype.byteOffset")}}</dt>
+ <dd>{{jsxref("ArrayBuffer")}} の開始位置からこのビューの(バイト単位の)オフセット。構築時に設定されるため、<strong>読取専用</strong>です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("DataView.prototype.getInt8()")}}</dt>
+ <dd>ビューの開始位置から指定されたバイト単位のオフセットで符号付き 8 ビット整数値(byte)を取得します。</dd>
+ <dt>{{jsxref("DataView.prototype.getUint8()")}}</dt>
+ <dd>ビューの開始位置から指定されたバイト単位のオフセットで符号無し 8 ビット整数値(unsigned byte) を取得します。</dd>
+ <dt>{{jsxref("DataView.prototype.getInt16()")}}</dt>
+ <dd>ビューの開始位置から指定されたバイト単位のオフセットで符号付き 16 ビット整数値(short)を取得します。</dd>
+ <dt>{{jsxref("DataView.prototype.getUint16()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号無し 16 ビット整数値(unsigned short)を取得します。</dd>
+ <dt>{{jsxref("DataView.prototype.getInt32()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号あり 32 ビット整数値(long)を取得します。</dd>
+ <dt>{{jsxref("DataView.prototype.getUint32()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号無し 32 ビット整数値(unsigned long)を取得します。</dd>
+ <dt>{{jsxref("DataView.prototype.getFloat32()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号あり 32 ビット浮動小数点数(float)を取得します。</dd>
+ <dt>{{jsxref("DataView.prototype.getFloat64()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号あり 64 ビット浮動小数点数(double)を取得します。</dd>
+ <dt>{{jsxref("DataView.prototype.getBigInt64()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号あり 64 ビット整数値(long long)を取得します。</dd>
+ <dt>{{jsxref("DataView.prototype.getBigUint64()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号なし 64 ビット整数値(unsigned long long)を取得します。</dd>
+ <dt>{{jsxref("DataView.prototype.setInt8()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号あり 8 ビット整数値(byte)を格納します。</dd>
+ <dt>{{jsxref("DataView.prototype.setUint8()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号なし 8 ビット整数値(unsigned byte)を格納します。</dd>
+ <dt>{{jsxref("DataView.prototype.setInt16()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号あり 16 ビット整数値(short)を格納します。</dd>
+ <dt>{{jsxref("DataView.prototype.setUint16()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号無し 16 ビット整数値(unsigned short)を格納します。</dd>
+ <dt>{{jsxref("DataView.prototype.setInt32()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号あり 32 ビット整数値(long)を格納します。</dd>
+ <dt>{{jsxref("DataView.prototype.setUint32()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号無し 32 ビット整数値(unsigned long)を格納します。</dd>
+ <dt>{{jsxref("DataView.prototype.setFloat32()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号あり 32 ビット浮動小数点数(float)を格納します。</dd>
+ <dt>{{jsxref("DataView.prototype.setFloat64()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号あり 64 ビット浮動小数点数(double)を格納します。</dd>
+ <dt>{{jsxref("DataView.prototype.setBigInt64()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号あり 64 ビット整数値(long long)を格納します。</dd>
+ <dt>{{jsxref("DataView.prototype.setBigUint64()")}}</dt>
+ <dd>ビューの開始位置からの指定されたバイト単位のオフセットで符号なし 64 ビット整数値(unsigned long long)を格納します。</dd>
+</dl>
+
+<h2 id="Example" name="Example">例</h2>
+
+<h3 id="Using_DataView" name="Using_DataView">DataView を使用する</h3>
+
+<pre class="brush: js notranslate">var buffer = new ArrayBuffer(16);
+var view = new DataView(buffer, 0);
+
+view.setInt16(1, 42);
+view.getInt16(1); // 42
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview-objects', 'DataView')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a class="link-https" href="https://github.com/jDataView/jDataView">jDataView</a>: <code>DataView</code> API をすべてのブラウザーや Node.js に展開するポリフィルの JavaScript ライブラリー</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("SharedArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/setfloat32/index.html b/files/ja/web/javascript/reference/global_objects/dataview/setfloat32/index.html
new file mode 100644
index 0000000000..8bfcf21c66
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/setfloat32/index.html
@@ -0,0 +1,82 @@
+---
+title: DataView.prototype.setFloat32()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/setFloat32
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setFloat32
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setFloat32()</code></strong> メソッドは、符号付き32ビット浮動小数点数 (float) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置に格納します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-setfloat32.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.setFloat32(<var>byteOffset</var>, <var>value</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを格納する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>設定する値です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 32ビット浮動小数点数を{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納するかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値が書き込まれます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}}。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて格納するように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_setFloat32_method" name="Using_the_setFloat32_method">setFloat32 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.setFloat32(1, 3);
+dataview.getFloat32(1); // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.setfloat32', 'DataView.prototype.setFloat32')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.setFloat32")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/setfloat64/index.html b/files/ja/web/javascript/reference/global_objects/dataview/setfloat64/index.html
new file mode 100644
index 0000000000..59cd3ce90e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/setfloat64/index.html
@@ -0,0 +1,82 @@
+---
+title: DataView.prototype.setFloat64()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/setFloat64
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setFloat64
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setFloat64()</code></strong> メソッドは、符号付き64ビット浮動小数点数 (double) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置に格納します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-setfloat32.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.setFloat64(<var>byteOffset</var>, <var>value</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを格納する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>設定する値です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 64ビット浮動小数点数を{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納するかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値が書き込まれます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}}。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて格納するように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_setFloat64_method" name="Using_the_setFloat64_method">setFloat64 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.setFloat64(0, 3);
+dataview.getFloat64(0); // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.setfloat64', 'DataView.prototype.setFloat64')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.setFloat64")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/setint16/index.html b/files/ja/web/javascript/reference/global_objects/dataview/setint16/index.html
new file mode 100644
index 0000000000..782a5aa970
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/setint16/index.html
@@ -0,0 +1,82 @@
+---
+title: DataView.prototype.setInt16()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/setInt16
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setInt16
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setUint16()</code></strong> メソッドは、符号付き16ビット整数 (short) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置に格納します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-setint16.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.setInt16(<var>byteOffset</var>, <var>value</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを格納する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>設定する値です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 16ビット整数を{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納するかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値が書き込まれます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}}。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて格納するように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_setInt16_method" name="Using_the_setInt16_method">setInt16 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.setInt16(1, 3);
+dataview.getInt16(1); // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.setint16', 'DataView.prototype.setInt16')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.setInt16")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/setint32/index.html b/files/ja/web/javascript/reference/global_objects/dataview/setint32/index.html
new file mode 100644
index 0000000000..5b5178f0a5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/setint32/index.html
@@ -0,0 +1,82 @@
+---
+title: DataView.prototype.setInt32()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/setInt32
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setInt32
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setInt32()</code></strong> メソッドは、符号付き32ビット整数 (long) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置に格納します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-setint32.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.setInt32(<var>byteOffset</var>, <var>value</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを格納する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>設定する値です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 32ビット整数を{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納するかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値が書き込まれます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}}。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて格納するように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_setInt32_method" name="Using_the_setInt32_method">setInt32 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.setInt32(1, 3);
+dataview.getInt32(1); // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.setint32', 'DataView.prototype.setInt32')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.setInt32")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/setint8/index.html b/files/ja/web/javascript/reference/global_objects/dataview/setint8/index.html
new file mode 100644
index 0000000000..13e13a0996
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/setint8/index.html
@@ -0,0 +1,80 @@
+---
+title: DataView.prototype.setInt8()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/setInt8
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setInt8
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setInt8()</code></strong> メソッドは、符号付き8ビット整数 (byte) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置に格納します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-setint8.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.setInt8(<var>byteOffset</var>, <var>value</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを格納する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>設定する値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}}。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて格納するように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_setInt8_method" name="Using_the_setInt8_method">setInt8 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.setInt8(1, 3);
+dataview.getInt8(1); // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.setint8', 'DataView.prototype.setInt8')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.setInt8")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/setuint16/index.html b/files/ja/web/javascript/reference/global_objects/dataview/setuint16/index.html
new file mode 100644
index 0000000000..61727cde68
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/setuint16/index.html
@@ -0,0 +1,82 @@
+---
+title: DataView.prototype.setUint16()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/setUint16
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setUint16
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setUint16()</code></strong> メソッドは、符号なし16ビット整数 (unsigned short) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置に格納します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-setuint16.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.setUint16(<var>byteOffset</var>, <var>value</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを格納する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>設定する値です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 16ビット整数を{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納するかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値が書き込まれます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}}。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて格納するように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="setUint16_メソッドの使用">setUint16 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.setUint16(1, 3);
+dataview.getUint16(1); // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.setuint16', 'DataView.prototype.setUint16')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.setUint16")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/setuint32/index.html b/files/ja/web/javascript/reference/global_objects/dataview/setuint32/index.html
new file mode 100644
index 0000000000..73fedaf174
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/setuint32/index.html
@@ -0,0 +1,82 @@
+---
+title: DataView.prototype.setUint32()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/setUint32
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setUint32
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setUint32()</code></strong> メソッドは、符号なし32ビット整数 (unsigned long) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置に格納します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-setuint32.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.setUint32(<var>byteOffset</var>, <var>value</var> [, <var>littleEndian</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを格納する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>設定する値です。</dd>
+ <dt><code><var>littleEndian</var></code></dt>
+ <dd>{{optional_inline}} 32ビット整数を{{Glossary("Endianness", "リトルエンディアンとビッグエンディアン")}}のどちらの形式で格納するかを表します。 <code>false</code> または <code>undefined</code> の場合、ビッグエンディアン値が書き込まれます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}}。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて格納するように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_setUint32_method" name="Using_the_setUint32_method">setUint32 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.setUint32(1, 3);
+dataview.getUint32(1); // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.setuint32', 'DataView.prototype.setUint32')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.setUint32")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/dataview/setuint8/index.html b/files/ja/web/javascript/reference/global_objects/dataview/setuint8/index.html
new file mode 100644
index 0000000000..ae61a1393b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/dataview/setuint8/index.html
@@ -0,0 +1,80 @@
+---
+title: DataView.prototype.setUint8()
+slug: Web/JavaScript/Reference/Global_Objects/DataView/setUint8
+tags:
+ - DataView
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setUint8
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setUint8()</code></strong> メソッドは、符号なし8ビット整数 (byte) 値を {{jsxref("DataView")}} の指定されたバイト単位のオフセットの位置に格納します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/dataview-setuint8.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dataview</var>.setUint8(<var>byteOffset</var>, <var>value</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>byteOffset</var></code></dt>
+ <dd>ビューの先頭からのバイト単位のオフセットで、データを格納する位置です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>設定する値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}}。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>byteOffset</code> がビューの末尾を超えて格納するように設定されている場合に発生します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="setUint8_メソッドの使用">setUint8 メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.setUint8(1, 3);
+dataview.getUint8(1); // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-dataview.prototype.setuint8', 'DataView.prototype.setUint8')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.DataView.setUint8")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DataView")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/@@toprimitive/index.html b/files/ja/web/javascript/reference/global_objects/date/@@toprimitive/index.html
new file mode 100644
index 0000000000..ba7475e583
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/@@toprimitive/index.html
@@ -0,0 +1,75 @@
+---
+title: 'Date.prototype[@@toPrimitive]'
+slug: Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>[@@toPrimitive]()</strong></code> メソッドは、<code>Date</code> オブジェクトをプリミティブ値に変換します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Date()[Symbol.toPrimitive](<var>hint</var>);</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた {{jsxref("Date")}} オブジェクトのプリミティブ値です。引数に応じて、このメソッドは文字列と数値のどちらかを返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Date")}} オブジェクトの <code>[@@toPrimitive]()</code> メソッドは、プリミティブ値を返します。これは、数値型か文字列型です。</p>
+
+<p><code><var>hint</var></code> が <code>string</code> または <code>default</code> の場合、<code>[@@toPrimitive]()</code> は {{jsxref("Object.prototype.toString()", "toString")}} メソッドを呼び出そうとします。<code>toString</code> メソッドが存在しなければ、{{jsxref("Object.prototype.valueOf()", "valueOf")}} メソッドを呼び出そうとします。<code>valueOf</code> メソッドも存在しなければ、<code>[@@toPrimitive]()</code> は {{jsxref("TypeError")}} を発生させます。</p>
+
+<p><code>hint</code> が <code>number</code> の場合、<code>[@@toPrimitive]()</code> は初めに <code>valueOf</code> メソッドを呼び出そうとします。これが失敗した場合は、<code>toString</code> メソッドを呼び出します。</p>
+
+<p>JavaScript は、<code>[@@toPrimitive]()</code> メソッドを呼び出してオブジェクトをプリミティブ値に変換します。<code>[@@toPrimitive]()</code> メソッドを自分で呼び出す必要はほとんどありません。JavaScript は、プリミティブ値が期待されるオブジェクトに遭遇した時、自動的にこれを呼び出します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Returning_date_primitives" name="Returning_date_primitives">日付プリミティブの返却</h3>
+
+<pre class="brush: js notranslate">const testDate = new Date(1590757517834);
+// "Date Fri May 29 2020 14:05:17 GMT+0100 (British Summer Time)"
+
+testDate[Symbol.toPrimitive]('string');
+// Returns "Date Fri May 29 2020 14:05:17 GMT+0100 (British Summer Time)"
+
+testDate[Symbol.toPrimitive]('number');
+// Returns "1590757517834"
+
+testDate[Symbol.toPrimitive]('default');
+// Returns "Date Fri May 29 2020 14:05:17 GMT+0100 (British Summer Time)"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype-@@toprimitive', 'Date.prototype.@@toPrimitive')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.@@toPrimitive")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Symbol.toPrimitive")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/date/index.html b/files/ja/web/javascript/reference/global_objects/date/date/index.html
new file mode 100644
index 0000000000..9aa45f5b17
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/date/index.html
@@ -0,0 +1,135 @@
+---
+title: Date() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Date/Date
+tags:
+ - Constructor
+ - Date
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/Date
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary">JavaScript の <strong><code>Date</code></strong> インスタンスを生成し、これはプラットフォームに依存しない形式で単一の瞬間の時刻を表現します。</span> <code>Date</code> オブジェクトは 1970 年 1 月 1 日 (UTC) からの経過ミリ秒数を <code>Number</code> で保持します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-constructor.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Date()
+new Date(<var>value</var>)
+new Date(<var>dateString</var>)
+new Date(<var>year</var>, <var>monthIndex</var> [, <var>day</var> [, <var>hours</var> [, <var>minutes</var> [, <var>seconds</var> [, <var>milliseconds</var>]]]]])
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> 新しい <code>Date</code> オブジェクトをインスタンス化する唯一の正しい方法は、 {{jsxref("new")}} 演算子を使用することです。単純に直接 <code>Date</code> オブジェクトを <code>now = Date()</code> のように呼び出すと、返値は <code>Date</code> オブジェクトではなく文字列になります。</p>
+</div>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p><code>Date()</code> コンストラクターには4つの基本形があります。</p>
+
+<ol>
+ <li>
+ <h4 id="No_parameters" name="No_parameters">引数なし</h4>
+
+ <p>引数が与えられなかった場合は、新しく生成された <code>Date</code> オブジェクトはインスタンス化された時点で現在の日付と時刻を表します。</p>
+ </li>
+ <li>
+ <h4 id="Time_value_or_timestamp_number" name="Time_value_or_timestamp_number">時刻値またはタイムスタンプ値</h4>
+
+ <dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>世界協定時 (UTC) 1970年1月1日午前0時0分0秒 (ECMAScript 元期、 UNIX 元期と等価) からのミリ秒数を整数値で表し、うるう秒は無視します。大部分の <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16">UNIX Timestamp</a> 関数は秒単位の精度しかないことに注意してください。</dd>
+ </dl>
+ </li>
+ <li>
+ <h4 id="Timestamp_string" name="Timestamp_string">タイムスタンプ文字列</h4>
+
+ <dl>
+ <dt><code><var>dateString</var></code></dt>
+ <dd>日付を表す文字列値で、 {{jsxref("Date.parse()")}} メソッドによって認識される形式で指定されます。 (これらの形式は <a href="http://tools.ietf.org/html/rfc2822#page-14">IETF 準拠の RFC 2822 タイムスタンプ</a>であり、 <a href="https://www.ecma-international.org/ecma-262/11.0/#sec-date.parse">ISO8601 のバージョン</a>の文字列でもあります。)
+ <div class="note">
+ <p><strong>注:</strong> <code>Date</code> コンストラクター (および同じように動作する <code>Date.parse()</code>) を使用した日付文字列の解析は、ブラウザーによって違いや矛盾があるため、<em>使用を避けることを強くお勧めします。</em>。</p>
+
+ <ul>
+ <li><a href="https://tools.ietf.org/html/rfc2822">RFC 2822</a> 書式の文字列の対応は慣習的に行われているだけです。</li>
+ <li>ISO 8601 形式の対応は、日付のみの文字列 (例えば <code>1970-01-01</code>) が地方時ではなく UTC として扱われる点が異なります。</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </li>
+ <li>
+ <h4 id="Individual_date_and_time_component_values" name="Individual_date_and_time_component_values">独立した日付と時刻の成分の値</h4>
+
+ <p>少なくとも年と月が指定された場合、この形の <code>Date()</code> は成分の値 (年、月、日、時、分、秒、ミリ秒) のすべてを以下の引数から取得した <code>Date</code> オブジェクトを返します。欠けている値は、有効な最も小さな値 (<code><var>day</var></code> では <code>1</code>、他の成分では <code>0</code>) になります。</p>
+
+ <dl>
+ <dt><code><var>year</var></code></dt>
+ <dd>
+ <p>年を表す整数値です。</p>
+
+ <p><code>0</code> から <code>99</code> までの値は、 <code>1900</code> から <code>1999</code> までの値にマッピングされます。他の値は実際の年になります。<a href="#Two_digit_years_map_to_1900_-_1999">後述の例</a>をご覧ください。</p>
+ </dd>
+ <dt><code><var>monthIndex</var></code></dt>
+ <dd>月を表す整数値です。 <code>0</code> (1月) から <code>11</code> (12月) までの値です。</dd>
+ <dt><code><var>day</var></code> {{optional_inline}}</dt>
+ <dd>月内の日を表す整数値です。既定値は <code>1</code> です。</dd>
+ <dt><code><var>hours</var></code> {{optional_inline}}</dt>
+ <dd>1日の中の時を表します。既定値は <code>0</code> です。</dd>
+ <dt><code><var>minutes</var></code> {{optional_inline}}</dt>
+ <dd>任意。分 (0-59) を表す整数値です。</dd>
+ <dt><code><var>seconds</var></code> {{optional_inline}}</dt>
+ <dd>任意。秒 (0-59) を表す整数値です。</dd>
+ <dt><code><var>milliseconds</var></code> {{optional_inline}}</dt>
+ <dd>任意。ミリ秒 (0-999) を表す整数値です。</dd>
+ </dl>
+ </li>
+</ol>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Several_ways_to_create_a_Date_object" name="Several_ways_to_create_a_Date_object">Date オブジェクトを生成するいくつかの方法</h3>
+
+<p>以下の例で、JavaScript の Date を生成するいくつかの方法を示します。</p>
+
+<div class="note">
+<p><strong>注:</strong> 日付文字列を <code>Date</code> コンストラクター (または同等の <code>Date.parse</code>) で解釈する方法は、ブラウザーごとに動作が異なり一貫性がないため、避けることを強くおすすめします。</p>
+</div>
+
+<pre class="brush: js notranslate">let today = new Date()
+let birthday = new Date('December 17, 1995 03:24:00')
+let birthday = new Date('1995-12-17T03:24:00')
+let birthday = new Date(1995, 11, 17) // the month is 0-indexed
+let birthday = new Date(1995, 11, 17, 3, 24, 0)</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date-constructor', 'Date')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.Date")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getdate/index.html b/files/ja/web/javascript/reference/global_objects/date/getdate/index.html
new file mode 100644
index 0000000000..3f790c14df
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getdate/index.html
@@ -0,0 +1,67 @@
+---
+title: Date.prototype.getDate()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getDate
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDate
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getDate()</code></strong> メソッドは、地方時に基づき、指定された日付の「日」を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getdate.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getDate()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>1 から 31 までの間の整数値。地方時に基づき、指定された日付の「日」を表します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getDate" name="Using_getDate">getDate() の使用</h3>
+
+<p>以下の 2 行目の文は、{{jsxref("Date")}} オブジェクト <code>Xmas95</code> の値に基づき、変数 <code>day</code> に 25 という値を代入します。</p>
+
+<pre class="brush: js notranslate">var Xmas95 = new Date('December 25, 1995 23:15:30');
+var day = Xmas95.getDate();
+
+console.log(day); // 25
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getdate', 'Date.prototype.getDate')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getDate")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCDate()")}}</li>
+ <li>{{jsxref("Date.prototype.getUTCDay()")}}</li>
+ <li>{{jsxref("Date.prototype.setDate()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getday/index.html b/files/ja/web/javascript/reference/global_objects/date/getday/index.html
new file mode 100644
index 0000000000..2a9e3192ae
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getday/index.html
@@ -0,0 +1,80 @@
+---
+title: Date.prototype.getDay()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getDay
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - getDay
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDay
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>getDay()</code></strong> メソッドは、地方時に基づき、指定された日付の「曜日」を返します。 0 は日曜日を表します。</span>「日」を取得する方法は {{jsxref("Date.prototype.getDate()")}} をご覧ください。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getday.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getDay()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>整数値で、 0 から 6 までの値を取り、地方時に基づいて指定された日付の曜日に対応し、 0 は日曜日、 1 は月曜日、 2 は火曜日のようになります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getDay" name="Using_getDay">getDay の使用</h3>
+
+<p>以下の 2 行目の文は、{{jsxref("Date")}} オブジェクト <code>Xmas95</code> の値に基づき、<code>weekday</code> に 1 という値を代入します。1995 年 12 月 25 日は月曜日です。</p>
+
+<pre class="brush: js notranslate">var Xmas95 = new Date('December 25, 1995 23:15:30');
+var weekday = Xmas95.getDay();
+
+console.log(weekday); // 1
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> 必要であれば、曜日の完全な名前 (例えば "<code>Monday</code>") は {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} に <code>options</code> 引数を設定することで取得することができます。このメソッドを使用すれば、国際化がより簡単になります。</p>
+
+<pre class="brush: js notranslate">var options = { weekday: 'long'};
+console.log(new Intl.DateTimeFormat('en-US', options).format(Xmas95));
+// Monday
+console.log(new Intl.DateTimeFormat('de-DE', options).format(Xmas95));
+// Montag
+</pre>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getday', 'Date.prototype.getDay')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getDay")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCDate()")}}</li>
+ <li>{{jsxref("Date.prototype.getUTCDay()")}}</li>
+ <li>{{jsxref("Date.prototype.setDate()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getfullyear/index.html b/files/ja/web/javascript/reference/global_objects/date/getfullyear/index.html
new file mode 100644
index 0000000000..a1cad58ea3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getfullyear/index.html
@@ -0,0 +1,71 @@
+---
+title: Date.prototype.getFullYear()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getFullYear
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getFullYear
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getFullYear()</code></strong> メソッドは、地方時に基づき、指定された日時の「年」を返します。</p>
+
+<p>{{jsxref("Date.prototype.getYear()", "getYear()")}} メソッドの代わりに、このメソッドを使用してください。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getfullyear.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getFullYear()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>地方時に基づき、与えた日付の年に相当する数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>getFullYear()</code> が返す値は絶対的な値です。1000 年から 9999 年までの日付に対して、<code>getFullYear()</code> は 1995 のような 4 桁の数字を返します。2000 年以降の年について正しい値を得るには、この関数を使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getFullYear" name="Using_getFullYear">getFullYear() の使用</h3>
+
+<p>以下の例は、変数 <code>year</code> に今年を表す 4 桁の数字を代入します。</p>
+
+<pre class="brush: js notranslate">var today = new Date();
+var year = today.getFullYear();
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getfullyear', 'Date.prototype.getFullYear')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getFullYear")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCFullYear()")}}</li>
+ <li>{{jsxref("Date.prototype.setFullYear()")}}</li>
+ <li>{{jsxref("Date.prototype.getYear()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/gethours/index.html b/files/ja/web/javascript/reference/global_objects/date/gethours/index.html
new file mode 100644
index 0000000000..3d23d4599a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/gethours/index.html
@@ -0,0 +1,67 @@
+---
+title: Date.prototype.getHours()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getHours
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getHours
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getHours()</code></strong> メソッドは、地方時に基づき、指定された日時の「時」を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-gethours.html","shorter")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getHours()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>地方時に基づき、与えた日時の「時」を表す 0 から 23 の間の整数値。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getHours" name="Using_getHours">getHours() の使用</h3>
+
+<p>以下の 2 行目の文は、 {{jsxref("Global_Objects/Date", "Date")}} オブジェクト <code>Xmas95</code> の値に基づき、23 という値を変数 <code>hours</code> に代入します。</p>
+
+<pre class="brush: js notranslate">let Xmas95 = new Date('December 25, 1995 23:15:30');
+let hours = Xmas95.getHours();
+
+console.log(hours); // 23
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getHours")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCHours()")}}</li>
+ <li>{{jsxref("Date.prototype.setHours()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getmilliseconds/index.html b/files/ja/web/javascript/reference/global_objects/date/getmilliseconds/index.html
new file mode 100644
index 0000000000..91b632f753
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getmilliseconds/index.html
@@ -0,0 +1,64 @@
+---
+title: Date.prototype.getMilliseconds()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getMilliseconds()</code></strong> メソッドは、ローカル時間に基づき、指定された日時の「ミリ秒」を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getmilliseconds.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getMilliseconds()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>ローカル時間に基づき、指定された日時の「ミリ秒」を表す 0 から 999 までの間の数値。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getMilliseconds" name="Using_getMilliseconds">getMilliseconds() の使用</h3>
+
+<p>次の例は、現在時刻のミリ秒部を変数 <code>milliseconds</code> に代入します。</p>
+
+<pre class="brush: js notranslate">var today = new Date();
+var milliseconds = today.getMilliseconds();
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getmilliseconds', 'Date.prototype.getMilliseconds')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getMilliseconds")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCMilliseconds()")}}</li>
+ <li>{{jsxref("Date.prototype.setMilliseconds()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getminutes/index.html b/files/ja/web/javascript/reference/global_objects/date/getminutes/index.html
new file mode 100644
index 0000000000..45646458a7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getminutes/index.html
@@ -0,0 +1,66 @@
+---
+title: Date.prototype.getMinutes()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getMinutes
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMinutes
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getMinutes()</code></strong> メソッドは、地方時に基づき、指定された日時の「分」を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getminutes.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getMinutes()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>地方時に基づき、与えた日時の「分」を表す 0 から 59 までの間の整数値。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getMinutes" name="Using_getMinutes">getMinutes() の使用</h3>
+
+<p>以下の 2 行目の文は、{{jsxref("Global_Objects/Date", "Date")}} オブジェクト <code>Xmas95</code> の値に基づき、変数 <code>minutes</code> に 15 という値を代入します。</p>
+
+<pre class="brush: js notranslate">var Xmas95 = new Date('December 25, 1995 23:15:30');
+var minutes = Xmas95.getMinutes();
+
+console.log(minutes); // 15
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getminutes', 'Date.prototype.getMinutes')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getMinutes")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCMinutes()")}}</li>
+ <li>{{jsxref("Date.prototype.setMinutes()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getmonth/index.html b/files/ja/web/javascript/reference/global_objects/date/getmonth/index.html
new file mode 100644
index 0000000000..3ffe832ff7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getmonth/index.html
@@ -0,0 +1,77 @@
+---
+title: Date.prototype.getMonth()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getMonth
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMonth
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getMonth()</code></strong> メソッドは、地方時に基づき、指定された日付の「月」を表す 0 を基点とした値 (すなわち 0 が年の最初の月を示す) を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getmonth.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getMonth()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>地方時に基づき、与えた日付の「月」を表す 0 から 11 までの間の整数値。0 は 1 月、1 は 2 月、11 は 12 月に対応します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getMonth" name="Using_getMonth">getMonth() の使用</h3>
+
+<p>以下の 2 行目の文は、{{jsxref("Global_Objects/Date", "Date")}} オブジェクト <code>Xmas95</code> の値に基づき、変数 <code>month</code> に 11 という値を代入します。</p>
+
+<pre class="brush: js notranslate">var Xmas95 = new Date('December 25, 1995 23:15:30');
+var month = Xmas95.getMonth();
+
+console.log(month); // 11
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> 必要であれば、月の完全な名前 (例えば <code>January</code> ) は <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat#Using_options">Intl.DateTimeFormat()</a></code> に <code>options</code> 引数を付けることで取得することができます。このメソッドを使用すれば、国際化がより簡単になります。</p>
+
+<pre class="brush: js notranslate">var options = { month: 'long'};
+console.log(new Intl.DateTimeFormat('en-US', options).format(Xmas95));
+// December
+console.log(new Intl.DateTimeFormat('de-DE', options).format(Xmas95));
+// Dezember
+</pre>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getmonth', 'Date.prototype.getMonth')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getMonth")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCMonth()")}}</li>
+ <li>{{jsxref("Date.prototype.setMonth()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getseconds/index.html b/files/ja/web/javascript/reference/global_objects/date/getseconds/index.html
new file mode 100644
index 0000000000..44ace675f4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getseconds/index.html
@@ -0,0 +1,66 @@
+---
+title: Date.prototype.getSeconds()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getSeconds
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getSeconds
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getSeconds()</code></strong> メソッドは、地方時に基づき、指定した日時の「秒」を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getseconds.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getSeconds()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>地方時に基づき、与えた日付の「秒」を表す 0 から 59 までの間の整数値。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getSeconds" name="Using_getSeconds">getSeconds() の使用</h3>
+
+<p>以下の 2 行目の文は、{{jsxref("Global_Objects/Date", "Date")}} オブジェクト <code>Xmas95</code> の値に基づき、変数 <code>seconds</code> に 30 という値を代入します。</p>
+
+<pre class="brush: js notranslate">var Xmas95 = new Date('December 25, 1995 23:15:30');
+var seconds = Xmas95.getSeconds();
+
+console.log(seconds); // 30
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getseconds', 'Date.prototype.getSeconds')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getSeconds")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCSeconds()")}}</li>
+ <li>{{jsxref("Date.prototype.setSeconds()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/gettime/index.html b/files/ja/web/javascript/reference/global_objects/date/gettime/index.html
new file mode 100644
index 0000000000..c0ff3ff0e1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/gettime/index.html
@@ -0,0 +1,110 @@
+---
+title: Date.prototype.getTime()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getTime
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTime
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getTime()</code></strong> メソッドは、 <a href="https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93">UNIX 元期</a>からの経過ミリ秒数*を返します。</p>
+
+<p>* JavaScriptは測定単位として<em>ミリ秒</em>を使用しますが、 Unix 時間は<em>秒</em>単位です。</p>
+
+<p><em>getTime() は時間表現に常に UTC を使用します。例えば、あるタイムゾーンに設定されているブラウザーの getTime() も、他のタイムゾーンに設定されたブラウザーの getTime() も、同じ値を返します。</em></p>
+
+<p>このメソッドは、日付と時刻を別の {{jsxref("Date")}} オブジェクトへ代入する助けとして使用できます。このメソッドは、{{jsxref("Date.valueof", "valueOf()")}} メソッドと機能的に同等です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-gettime.html","shorter")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>dateObj</var>.getTime()</code></pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>1970 年 1 月 1 日 00:00:00 UTC から指定した日時までの経過時間をミリ秒で表した数値。</p>
+
+<h2 id="Reduced_time_precision" name="Reduced_time_precision">時刻の低精度化</h2>
+
+<p>ブラウザーの設定によっては、タイミング攻撃と Fingerprinting に対する保護を提供するために <code>new Date().getTime()</code> の精度が落とされていることがあります。 Firefox では、<code>privacy.reduceTimerPrecision</code> が既定で有効になっています。既定値は Firefox 59 では 20 マイクロ秒で、 Firefox 60 では 2 ミリ秒です。</p>
+
+<pre class="brush: js notranslate">// Firefox 60 での時刻の精度の低下(2 ミリ秒)
+new Date().getTime();
+// 1519211809934
+// 1519211810362
+// 1519211811670
+// ...
+
+
+// `privacy.resistFingerprinting` が有効な場合の時刻の精度の低下
+new Date().getTime();
+// 1519129853500
+// 1519129858900
+// 1519129864400
+// ...
+</pre>
+
+<p>Firefox では、 <code>privacy.resistFingerprinting</code> も有効にできます。この場合、精度は 100 ミリ秒と <code>privacy.resistFingerprinting.reduceTimerPrecision.microseconds</code> 値のうち大きい方になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getTime_for_copying_dates" name="Using_getTime_for_copying_dates">getTime() を使って日付をコピーする</h3>
+
+<p>同一の time 値を持つ date オブジェクトを構築します。</p>
+
+<pre class="brush: js notranslate">// month は 0 を基点とするため、birthday は 1995 年 1 月 10 日になります
+var birthday = new Date(1994, 12, 10);
+var copy = new Date();
+copy.setTime(birthday.getTime());
+</pre>
+
+<h3 id="Measuring_execution_time" name="Measuring_execution_time">実行時間を計測する</h3>
+
+<p>新たに生成された {{jsxref("Date")}} オブジェクトでの、続く 2 個の <code>getTime()</code> の結果を減算して、これらの呼び出しと呼び出しの間の時間を得ます。これは、何らかの命令の実行時間を計測するために使用できます。不要な {{jsxref("Date")}} オブジェクトのインスタンス化を避けるため、{{jsxref("Date.now()")}} も参照してください。</p>
+
+<pre class="brush: js notranslate">var end, start;
+
+start = new Date();
+for (var i = 0; i &lt; 1000; i++) {
+ Math.sqrt(i);
+}
+end = new Date();
+
+console.log('Operation took ' + (end.getTime() - start.getTime()) + ' msec');
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.gettime', 'Date.prototype.getTime')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<p class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</p>
+
+<p>{{Compat("javascript.builtins.Date.getTime")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.setTime()")}}</li>
+ <li>{{jsxref("Date.prototype.valueOf()")}}</li>
+ <li>{{jsxref("Date.now()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html b/files/ja/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html
new file mode 100644
index 0000000000..3f7f8c968b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html
@@ -0,0 +1,98 @@
+---
+title: Date.prototype.getTimezoneOffset()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getTimezoneOffset()</code></strong> メソッドは、 (ホストシステム上における) 現在のロケールから協定世界時 (UTC) までのタイムゾーンの差を分単位で返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-gettimezoneoffset.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getTimezoneOffset()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>ホストシステム上の現在の日付から協定世界時 (UTC) までの分単位のタイムゾーンオフセットを表す数値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>タイムゾーンオフセットは、地方時から協定世界時 (UTC) までの間の分単位の差です。</p>
+
+<p>このオフセットは、地方時が UTC より遅れている時刻の場合は正の数になり、進んでいる時刻の場合は負の数になることを意味します。例えば、タイムゾーンが UTC+10:00(オーストラリア東部標準時、ロシアのウラジオストク時、チャモロ標準時)の場合、-600 が返されます。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="row">現在のロケール</th>
+ <th scope="col">UTC-8</th>
+ <th scope="col">UTC</th>
+ <th scope="col">UTC+3</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">返値</th>
+ <td>480</td>
+ <td>0</td>
+ <td>-180</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>返されるタイムゾーンオフセットは呼ばれた Date で適用されているものです。</p>
+
+<p>ホストシステムで夏時間が設定されている場合、Date が表す日時と夏時間が適用される日時によって、オフセットが変わります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getTimezoneOffset" name="Using_getTimezoneOffset">getTimezoneOffset() の使用</h3>
+
+<pre class="brush: js notranslate">// Get current timezone offset for host device
+let x = new Date();
+let currentTimeZoneOffsetInHours = x.getTimezoneOffset() / 60;
+// 1
+
+// Get timezone offset for International Labour Day (May 1) in 2016
+// Be careful, the Date() constructor uses 0-indexed months, so May is
+// represented with 4 (and not 5)
+let labourDay = new Date(2016, 4, 1)
+let labourDayOffset = labourDay.getTimezoneOffset() / 60;
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.gettimezoneoffset', 'Date.prototype.getTimezoneOffset')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getTimezoneOffset")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getutcdate/index.html b/files/ja/web/javascript/reference/global_objects/date/getutcdate/index.html
new file mode 100644
index 0000000000..f61db6e71c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getutcdate/index.html
@@ -0,0 +1,65 @@
+---
+title: Date.prototype.getUTCDate()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCDate
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCDate
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getUTCDay()</code></strong> メソッドは、協定世界時に基づき、指定された日時の「曜日」を返します。0 は日曜日を表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getutcday.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getUTCDay()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時に基づき、与えられた日付の「曜日」に相当する整数値。0 は日曜日、1 は月曜日、2 は火曜日を表します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getUTCDay" name="Using_getUTCDay">getUTCDay() の使用</h3>
+
+<p>次の例は、現在日時の「曜日」部を変数 <code>weekday</code> に代入します。</p>
+
+<pre class="brush: js notranslate">var today = new Date();
+var weekday = today.getUTCDay();
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getutcday', 'Date.prototype.getUTCDay')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getUTCDay")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCDate()")}}</li>
+ <li>{{jsxref("Date.prototype.getDay()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCDate()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getutcday/index.html b/files/ja/web/javascript/reference/global_objects/date/getutcday/index.html
new file mode 100644
index 0000000000..4078dfc807
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getutcday/index.html
@@ -0,0 +1,65 @@
+---
+title: Date.prototype.getUTCDay()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCDay
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCDay
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getUTCDay()</code></strong> メソッドは、協定世界時に基づき、指定された日時の「曜日」を返します。0 は日曜日を表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getutcday.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getUTCDay()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時に基づき、与えられた日付の「曜日」に相当する整数値。0 は日曜日、1 は月曜日、2 は火曜日を表します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getUTCDay" name="Using_getUTCDay">getUTCDay() の使用</h3>
+
+<p>次の例は、現在日時の「曜日」部を変数 <code>weekday</code> に代入します。</p>
+
+<pre class="brush: js notranslate">var today = new Date();
+var weekday = today.getUTCDay();
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getutcday', 'Date.prototype.getUTCDay')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getUTCDay")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCDate()")}}</li>
+ <li>{{jsxref("Date.prototype.getDay()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCDate()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getutcfullyear/index.html b/files/ja/web/javascript/reference/global_objects/date/getutcfullyear/index.html
new file mode 100644
index 0000000000..efa5d1d7b8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getutcfullyear/index.html
@@ -0,0 +1,68 @@
+---
+title: Date.prototype.getUTCFullYear()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getUTCFullYear()</code></strong> メソッドは、協定世界時に基づき、指定された日時の「年」を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getutcfullyear.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getUTCFullYear()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時に基づき、与えられた日付の「年」を表す数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>getUTCFullYear()</code> が返す値は、 2000 年問題に対応した表記に従う絶対的な値、例えば 1995 などです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getUTCFullYear" name="Using_getUTCFullYear">getUTCFullYear() の使用</h3>
+
+<p>次の例は、現在の年を表す 4 桁の値を変数 <code>year</code> に代入します。</p>
+
+<pre class="brush: js notranslate">var today = new Date();
+var year = today.getUTCFullYear();
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getutcfullyear', 'Date.prototype.getUTCFullYear')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getUTCFullYear")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getFullYear()")}}</li>
+ <li>{{jsxref("Date.prototype.setFullYear()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getutchours/index.html b/files/ja/web/javascript/reference/global_objects/date/getutchours/index.html
new file mode 100644
index 0000000000..e1a3272494
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getutchours/index.html
@@ -0,0 +1,64 @@
+---
+title: Date.prototype.getUTCHours()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCHours
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCHours
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getUTCHours()</code></strong> メソッドは、協定世界時に基づき、指定された日時の「時」を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getutchours.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getUTCHours()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時に基づき、与えられた日時の「時」を表す 0 から 23 までの間の整数値。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getUTCHours" name="Using_getUTCHours">getUTCHours() の使用</h3>
+
+<p>次の例は、現在時刻の「時」部を変数 <code>hours</code> に代入します。</p>
+
+<pre class="brush: js notranslate">var today = new Date();
+var hours = today.getUTCHours();
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getUTCHours")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getHours()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCHours()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html b/files/ja/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html
new file mode 100644
index 0000000000..e61d81ae33
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html
@@ -0,0 +1,66 @@
+---
+title: Date.prototype.getUTCMilliseconds()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getUTCMilliseconds()</code></strong> メソッドは、協定世界時に基づき、指定された日時の「ミリ秒」を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getutcmilliseconds.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getUTCMilliseconds()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時に基づき、与えられた日時の「ミリ秒」を表す 0 から 999 までの間の整数値。このメソッドは、時間部分、分部分などを提供する他のUTCベースのメソッドのコンパニオンです。このメソッドはミリ秒の部分を与えます。</p>
+
+<p>Unix 元期の時刻と混同しないでください。1970/01/01からの経過ミリ秒を取得するには、".getTime()" メソッドを使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getUTCMilliseconds" name="Using_getUTCMilliseconds">getUTCMilliseconds() の使用</h3>
+
+<p>次の例は、現在時刻の「ミリ秒」部を変数 <code>milliseconds</code> に代入します。</p>
+
+<pre class="brush: js notranslate">var today = new Date();
+var milliseconds = today.getUTCMilliseconds();
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getutcmilliseconds', 'Date.prototype.getUTCMilliseconds')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getUTCMilliseconds")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getMilliseconds()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCMilliseconds()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getutcminutes/index.html b/files/ja/web/javascript/reference/global_objects/date/getutcminutes/index.html
new file mode 100644
index 0000000000..4c5796b4c8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getutcminutes/index.html
@@ -0,0 +1,64 @@
+---
+title: Date.prototype.getUTCMinutes()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getUTCMinutes()</code></strong> メソッドは、協定世界時に基づき、指定された日時の「分」を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getutcminutes.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getUTCMinutes()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時に基づき、与えられた日時の「分」を表す 0 から 59 までの間の整数値。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getUTCMinutes" name="Using_getUTCMinutes">getUTCMinutes() の使用</h3>
+
+<p>次の例は、現在時刻の「分」部を変数 <code>minutes</code> に代入します。</p>
+
+<pre class="brush: js notranslate">var today = new Date();
+var minutes = today.getUTCMinutes();
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getutcminutes', 'Date.prototype.getUTCMinutes')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getUTCMinutes")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getMinutes()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCMinutes()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getutcmonth/index.html b/files/ja/web/javascript/reference/global_objects/date/getutcmonth/index.html
new file mode 100644
index 0000000000..a760e61b01
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getutcmonth/index.html
@@ -0,0 +1,64 @@
+---
+title: Date.prototype.getUTCMonth()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getUTCMonth()</code></strong> メソッドは、協定世界時に基づき、指定された日付の「月」を表す 0 を基点とした値 (すなわち 0 が年の最初の月を示す) を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getutcmonth.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getUTCMonth()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時に基づき、与えられた日付の「月」に相当する 0 から 11 までの間の整数値。0 は 1 月、1 は 2 月、2 は 3 月を表します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getUTCMonth" name="Using_getUTCMonth">getUTCMonth() の使用</h3>
+
+<p>次の例は、現在日時の「月」部を変数 <code>month</code> に代入します。</p>
+
+<pre class="brush: js notranslate">var today = new Date();
+var month = today.getUTCMonth();
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getutcmonth', 'Date.prototype.getUTCMonth')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getUTCMonth")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getMonth()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCMonth()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getutcseconds/index.html b/files/ja/web/javascript/reference/global_objects/date/getutcseconds/index.html
new file mode 100644
index 0000000000..2b74bbf53d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getutcseconds/index.html
@@ -0,0 +1,64 @@
+---
+title: Date.prototype.getUTCSeconds()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>getUTCSeconds()</code></strong> メソッドは、協定世界時に基づき、指定された日時の「秒」を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-getutcseconds.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.getUTCSeconds()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時に基づき、与えられた日時の「秒」を表す 0 から 59 までの間の整数値。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="getUTCSeconds_の使用">getUTCSeconds() の使用</h3>
+
+<p>次の例は、現在日時の「秒」部を変数 <code>seconds</code> に代入します。</p>
+
+<pre class="brush: js notranslate">var today = new Date();
+var seconds = today.getUTCSeconds();
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getutcseconds', 'Date.prototype.getUTCSeconds')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getUTCSeconds")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getSeconds()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCSeconds()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/getyear/index.html b/files/ja/web/javascript/reference/global_objects/date/getyear/index.html
new file mode 100644
index 0000000000..05637f5e1f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/getyear/index.html
@@ -0,0 +1,108 @@
+---
+title: Date.prototype.getYear()
+slug: Web/JavaScript/Reference/Global_Objects/Date/getYear
+tags:
+ - Date
+ - Deprecated
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/getYear
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>getYear()</code></strong> メソッドは、地方時に基づき、指定された日付の「年」を返します。<code>getYear()</code> は完全な桁数の値を返さないため (いわゆる 2000 年問題)、使用されなくなり、{{jsxref("Date.prototype.getFullYear", "getFullYear()")}} メソッドに置き換えられました。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>dateObj</var>.getYear()</code></pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>地方時に基づき、与えられた日付の「年」を表す数値から1900を引いたものを返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<ul>
+ <li>2000 年以降の年について、<code>getYear()</code> が返す値は 100 以上です。例えば、2026 年の場合、<code>getYear()</code> は 126 を返します。</li>
+ <li>1900 年から 1999 年について、<code>getYear()</code> が返す値は 0 から 99 の間です。例えば、1976 年の場合、<code>getYear()</code> は 76 を返します。</li>
+ <li>1900 年以前の年について、<code>getYear()</code> が返す値は 0 未満です。例えば、1800 年の場合、<code>getYear()</code> は -100 を返します。</li>
+</ul>
+
+<p>2000 年以前と以降に対処するため、<code>getYear()</code> の代わりに、完全な桁数の値を返す {{jsxref("Date.prototype.getFullYear", "getFullYear()")}} を使用するべきです。</p>
+
+<h2 id="Backward_compatibility" name="Backward_compatibility">後方互換性</h2>
+
+<h3 id="Behavior_in_JavaScript_1.2_and_earlier" name="Behavior_in_JavaScript_1.2_and_earlier">JavaScript 1.2 以前の動作</h3>
+
+<p><code>getYear()</code> メソッドは、2 桁または 4 桁の年を返します:</p>
+
+<ul>
+ <li>1900 年から 1999 年の間の場合、<code>getYear()</code> が返す値は、year - 1900 です。例えば 1976 年の場合、戻り値は 76 です。</li>
+ <li>1900 年より前または 1999 年より後の場合、<code>getYear()</code> が返す値は 4 桁の年です。例えば、1856 年の場合、戻り値は 1856 です。2026 年の場合、戻り値は 2026 です。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Years_between_1900_and_1999" name="Years_between_1900_and_1999">1900 年から 1999 年の間の年</h3>
+
+<p>2 行目の文は、変数 <code>year</code> に 95 を代入します。</p>
+
+<pre class="brush: js notranslate">var Xmas = new Date('December 25, 1995 23:15:00');
+var year = Xmas.getYear(); // 95 を返す
+</pre>
+
+<h3 id="Years_above_1999" name="Years_above_1999">1999 年より後の年</h3>
+
+<p>2 行目の文は、変数 <code>year</code> に 100 を代入します。</p>
+
+<pre class="brush: js notranslate">var Xmas = new Date('December 25, 2000 23:15:00');
+var year = Xmas.getYear(); // 100 を返す
+</pre>
+
+<h3 id="Years_below_1900" name="Years_below_1900">1900 年より前の年</h3>
+
+<p>2 行目の文は、変数 <code>year</code> に -100 を代入します。</p>
+
+<pre class="brush: js notranslate">var Xmas = new Date('December 25, 1800 23:15:00');
+var year = Xmas.getYear(); // -100 を返す
+</pre>
+
+<h3 id="Setting_and_getting_a_year_between_1900_and_1999" name="Setting_and_getting_a_year_between_1900_and_1999">1900 年から 1999 年の間の年の設定または取得</h3>
+
+<p>3 行目の文は、変数 <code>year</code> に 1995 年を表す 95 を代入します。</p>
+
+<pre class="brush: js notranslate">var Xmas = new Date('December 25, 2015 23:15:00');
+Xmas.setYear(95);
+var year = Xmas.getYear(); // 95 を返す
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.getyear', 'Date.prototype.getYear')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.getYear")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getFullYear()")}}</li>
+ <li>{{jsxref("Date.prototype.getUTCFullYear()")}}</li>
+ <li>{{jsxref("Date.prototype.setYear()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/index.html b/files/ja/web/javascript/reference/global_objects/date/index.html
new file mode 100644
index 0000000000..a681a241ce
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/index.html
@@ -0,0 +1,263 @@
+---
+title: Date
+slug: Web/JavaScript/Reference/Global_Objects/Date
+tags:
+ - Class
+ - Date
+ - Epoch
+ - JavaScript
+ - Time
+ - Unix Epoch
+ - timeStamp
+ - クラス
+ - 日付
+ - 日時
+ - 時刻
+translation_of: Web/JavaScript/Reference/Global_Objects/Date
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary">JavaScript の <strong><code>Date</code></strong> オブジェクトは、単一の瞬間の時刻をプラットフォームに依存しない形式で表します。</span> <code>Date</code> オブジェクトは協定世界時 (UTC) の1970年1月1日からの経過ミリ秒数を表現する <code>Number</code> 含んでいます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<h3 id="The_ECMAScript_epoch_and_timestamps" name="The_ECMAScript_epoch_and_timestamps">ECMAScript Epoch とタイムスタンプ</h3>
+
+<p>JavaScript の日時は、基本的に協定世界時 (UTC) の1970年1月1日深夜0時からの経過ミリ秒数で指定されます。この日付と時刻は、コンピューターに記録される日付と時刻の値の主な基準値である <strong>UNIX Epoch </strong>と同じです。</p>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> Date オブジェクトの中心となる時間値は UTC ですが、日付と時刻、またはその一部を取得する基本的なメソッドは、すべて地方時 (ホストシステムなど) のタイムゾーンとオフセットで動作することを覚えておくことが重要です。</p>
+</div>
+
+<p><code>Date</code> の最大値は、確実な整数の最大値 (<code>Number.MAX_SAFE_INTEGER</code>、9,007,199,254,740,991) と同じ値ではないことに注意が必要です。代わりに ECMA-262 では、 UTC の 1970年1月1日から前後 ±100,000,000 (1億) 日 (つまり、紀元前271821年4月20日 - 紀元275760年9月13日) を標準の <code>Date</code> オブジェクトで表すことができると定義しています。</p>
+
+<h3 id="Date_format_and_time_zone_conversions" name="Date_format_and_time_zone_conversions">日時形式とタイムゾーンの変換</h3>
+
+<p>様々な形式で日時を取得したり、タイムゾーンの変換を行ったりすることができる方法はたくさんあります。特に便利なのは、<ruby>世界時標準<rp> (</rp><rt>World Time Standard</rt><rp>) </rp></ruby>で定義されている世界標準時である協定世界時 (UTC) で日付と時刻を出力する関数です。 (この時間は歴史的に<em>グリニッジ標準時</em>として知られており、 UTC はイギリスのロンドンとその近くのグリニッジを含む子午線に沿って位置しています。) ユーザーの端末は現地時間を提供します。</p>
+
+<p>地方時の日付と時刻の個々の部分を読み書きするメソッド ({{jsxref("Date.getDay", "getDay()")}} や {{jsxref("Date.setHours", "setHours()")}} など) に加えて、 UTC を使用して日付と時刻を読み書きする同等のメソッド ({{jsxref("Date.getUTCDay()", "getUTCDay()")}} や {{jsxref("Date.setUTCHours", "setUTCHours()")}} など) もあります。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Date/Date", "Date()")}}</dt>
+ <dd>新たな <code>Date</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Date.now()")}}</dt>
+ <dd>現在の時刻に対応する数値、すなわち UTC の 1970 年 1 月 1 日 00:00:00 から経過したミリ秒 (閏秒は無視) を表す数値を返します。</dd>
+ <dt>{{jsxref("Date.parse()")}}</dt>
+ <dd>JavaScript で日付を表す文字列を解釈して、地方時で 1970 年 1 月 1 日 00:00:00 から経過したミリ秒 (閏秒は無視) を表す数値を返します。
+ <div class="note">
+ <p><strong>注:</strong> ブラウザーごとに動作が異なり一貫性がないため、 <code>Date.parse</code> で文字列を解釈しないように強くすすめます。</p>
+ </div>
+ </dd>
+ <dt>{{jsxref("Date.UTC()")}}</dt>
+ <dd>コンストラクターですべての引数を与えて呼び出したのと同じように、 UTC の 1970 年 1 月 1 日 00:00:00 から経過したミリ秒数 (閏秒は無視) を返します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Date.prototype.getDate()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「日」 (<code>1</code>–<code>31</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getDay()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「曜日」 (<code>0</code>–<code>6</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getFullYear()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「年」 (4桁の年であれば4桁) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getHours()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「時」 (<code>0</code>–<code>23</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getMilliseconds()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「ミリ秒」 (<code>0</code>–<code>999</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getMinutes()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「分」 (<code>0</code>–<code>59</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getMonth()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「月」 (<code>0</code>–<code>11</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getSeconds()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「秒」 (<code>0</code>–<code>59</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getTime()")}}</dt>
+ <dd>指定された日時を協定世界時 (UTC) の 1970 年 1 月 1 日 00:00:00 からの経過ミリ秒単位の数値で返します。 (それ以前の時刻では負の数を返します。)</dd>
+ <dt>{{jsxref("Date.prototype.getTimezoneOffset()")}}</dt>
+ <dd>現地の時間帯のオフセットを分で返します。</dd>
+ <dt>{{jsxref("Date.prototype.getUTCDate()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「日」 (<code>1</code>–<code>31</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getUTCDay()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「曜日」 (<code>0</code>–<code>6</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getUTCFullYear()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「年」 (4桁の年であれば4桁) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getUTCHours()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「時」 (<code>0</code>–<code>23</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getUTCMilliseconds()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「ミリ秒」 (<code>0</code>–<code>999</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getUTCMinutes()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「分」 (<code>0</code>–<code>59</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getUTCMonth()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「月」 (<code>0</code>–<code>11</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getUTCSeconds()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「秒」 (<code>0</code>–<code>59</code>) を返します。</dd>
+ <dt>{{jsxref("Date.prototype.getYear()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「年」 (ふつうは2–3桁) を返します。代わりに {{jsxref("Date.prototype.getFullYear()", "getFullYear()")}} を使用してください。</dd>
+ <dt>{{jsxref("Date.prototype.setDate()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「日」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setFullYear()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「年」を完全な形 (例えば、4桁の年であれば4桁) で設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setHours()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「時」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setMilliseconds()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「ミリ秒」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setMinutes()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「分」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setMonth()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「月」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setSeconds()")}}</dt>
+ <dd>地方時に基づき、指定された日時の「秒」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setTime()")}}</dt>
+ <dd>{{jsxref("Date")}} オブジェクトを協定世界時(UTC) の 1970 年 1 月 1 日 00:00:00 からのミリ秒単位の数で表された時刻に設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setUTCDate()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「日」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setUTCFullYear()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「年」を完全な形で設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setUTCHours()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「時」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setUTCMilliseconds()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「ミリ秒」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setUTCMinutes()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「分」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setUTCMonth()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「月」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setUTCSeconds()")}}</dt>
+ <dd>協定世界時に基づき、指定された日時の「秒」を設定します。</dd>
+ <dt>{{jsxref("Date.prototype.setYear()")}}</dt>
+ <dd>協定地方時に基づき、指定された日時の「年」 (ふつうは2–3桁) を設定します。代わりに {{jsxref("Date.prototype.setFullYear()", "setFullYear()")}} を使用してください。</dd>
+ <dt>{{jsxref("Date.prototype.toDateString()")}}</dt>
+ <dd>{{jsxref("Date")}} の「日付」部を、 'Thu Apr 12 2018' のように人間が読みやすい形式の文字列にして返します。</dd>
+ <dt>{{jsxref("Date.prototype.toISOString()")}}</dt>
+ <dd>日付を ISO 8601 Extended Format に準じた文字列に変換します。</dd>
+ <dt>{{jsxref("Date.prototype.toJSON()")}}</dt>
+ <dd>{{jsxref("Date.prototype.toISOString()", "toISOString()")}} を使用して {{jsxref("Date")}} を表す文字列を返します。{{jsxref("JSON.stringify()")}} の代わりに使用してください。</dd>
+ <dt>{{jsxref("Date.prototype.toGMTString()")}}</dt>
+ <dd>GMT (UTC) タイムゾーンを基準にした {{jsxref("Date")}} を表す文字列を返します。代わりに {{jsxref("Date.prototype.toUTCString()", "toUTCString()")}} を使用してください。</dd>
+ <dt>{{jsxref("Date.prototype.toLocaleDateString()")}}</dt>
+ <dd>システム設定の日時の「日付」部を、地域の日付書式に従った文字列に変換して返します。</dd>
+ <dt>{{jsxref("Date.prototype.toLocaleFormat()")}}</dt>
+ <dd>書式化された文字列を使って、日時を文字列に変換します。</dd>
+ <dt>{{jsxref("Date.prototype.toLocaleString()")}}</dt>
+ <dd>日付を地域の日付書式に従った文字列に変換して返します。{{jsxref("Object.prototype.toLocaleString()")}} メソッドを上書きします。</dd>
+ <dt>{{jsxref("Date.prototype.toLocaleTimeString()")}}</dt>
+ <dd>システム設定の日時の「時刻」部を、地域の日付書式に従った文字列に変換して返します。</dd>
+ <dt>{{jsxref("Date.prototype.toString()")}}</dt>
+ <dd>指定された {{jsxref("Date")}} オブジェクトを表す文字列を返します。 {{jsxref("Object.prototype.toString()")}} メソッドを上書きします。</dd>
+ <dt>{{jsxref("Date.prototype.toTimeString()")}}</dt>
+ <dd>{{jsxref("Date")}} の「時刻」部を人間が読みやすい形式の文字列にして返します。</dd>
+ <dt>{{jsxref("Date.prototype.toUTCString()")}}</dt>
+ <dd>日時を UTC タイムゾーンを使用する文字列に変換します。</dd>
+ <dt>{{jsxref("Date.prototype.valueOf()")}}</dt>
+ <dd>{{jsxref("Date")}} オブジェクトのプリミティブ値を返します。{{jsxref("Object.prototype.valueOf()")}} メソッドを上書きします。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Several_ways_to_create_a_Date_object" name="Several_ways_to_create_a_Date_object">Date オブジェクトを生成するいくつかの方法</h3>
+
+<p>以下の例で、 JavaScript の日時を生成するいくつかの方法を示します。</p>
+
+<div class="note">
+<p><strong>注:</strong> <code>Date</code> コンストラクター (または同等の <code>Date.parse</code>) で日付文字列を解釈することは、ブラウザーごとに動作が異なり一貫性がないため、避けるように強くすすめます。</p>
+</div>
+
+<pre class="brush: js notranslate">let today = new Date()
+let birthday = new Date('December 17, 1995 03:24:00')
+let birthday = new Date('1995-12-17T03:24:00')
+let birthday = new Date(1995, 11, 17) // 月は 0 起点
+let birthday = new Date(1995, 11, 17, 3, 24, 0)
+</pre>
+
+<h3 id="Two_digit_years_map_to_1900_–_1999" name="Two_digit_years_map_to_1900_–_1999">2桁の年は1900–1999年に対応付けられる</h3>
+
+<p>西暦 0 年から 99 年までの間の年を生成および取得するには、{{jsxref("Date.prototype.setFullYear()")}} メソッドと {{jsxref("Date.prototype.getFullYear()")}} メソッドを使用してください。</p>
+
+<pre class="brush: js notranslate">var date = new Date(98, 1); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)
+
+// 非推奨のメソッド。この 98 は1998年に対応付けられます。
+date.setYear(98) // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)
+
+date.setFullYear(98) // Sat Feb 01 0098 00:00:00 GMT+0000 (BST)
+</pre>
+
+<h3 id="Calculating_elapsed_time" name="Calculating_elapsed_time">経過時間の計算</h3>
+
+<p>以下の例で、2 つの JavaScript の日付の間で経過した時間を計る方法を示します。</p>
+
+<p>日 (サマータイム切り替えによる)、月、年の長さが異なるため、経過時間を時、分、秒以上の単位で表現するには、いくつかの問題に対処する必要がありますので、事前によく調べて使用してください。</p>
+
+<pre class="brush: js notranslate">// Date オブジェクトを使用
+let start = Date.now()
+
+// 時間を計りたいイベントをここに置く:
+doSomethingForALongTime()
+let end = Date.now()
+var elapsed = end - start // ミリ秒単位の経過時間
+</pre>
+
+<pre class="brush: js notranslate">// 組み込みメソッドを使用
+var start = new Date()
+
+// 時間を計りたいイベントをここに置く
+doSomethingForALongTime()
+let end = new Date()
+let elapsed = end.getTime() - start.getTime() // ミリ秒単位の経過時間
+</pre>
+
+<pre class="brush: js notranslate">// 関数をテストして戻り値を取得する
+function printElapsedTime(fTest) {
+ let nStartTime = Date.now(),
+ vReturn = fTest(),
+ nEndTime = Date.now()
+
+ console.log(`Elapsed time: ${ String(nEndTime - nStartTime) } milliseconds`)
+ return vReturn
+}
+
+let yourFunctionReturn = printElapsedTime(yourFunction)
+</pre>
+
+<div class="note">
+<p><strong>注:</strong> {{domxref("Window.performance", "Web Performance API", "", 1)}} の高精度時刻機能に対応しているブラウザーでは、 {{domxref("Performance.now()")}} で、 {{jsxref("Date.now()")}} よりも高信頼かつ高精度な経過時間の測定が可能です。</p>
+</div>
+
+<h3 id="Get_the_number_of_seconds_since_the_ECMAScript_Epoch" name="Get_the_number_of_seconds_since_the_ECMAScript_Epoch">ECMAScript Epoch からの経過秒数を取得する</h3>
+
+<pre class="brush: js notranslate">let seconds = Math.floor(Date.now() / 1000)
+</pre>
+
+<p>この場合、整数だけを返すことが重要です (単純な除算ではできません)。また、実際に経過した秒数を返すことも重要です (ですから、上の例では {{jsxref("Math.round()")}} ではなく {{jsxref("Math.floor()")}} を使っています)。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date-objects', 'Date')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date", 3)}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date/Date", "Date()")}} constructor</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/now/index.html b/files/ja/web/javascript/reference/global_objects/date/now/index.html
new file mode 100644
index 0000000000..d94036a2ad
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/now/index.html
@@ -0,0 +1,86 @@
+---
+title: Date.now()
+slug: Web/JavaScript/Reference/Global_Objects/Date/now
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Reference
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/now
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Date.now()</code></strong> メソッドは、UTC (協定世界時) での 1970 年 1 月 1 日 0 時 0 分 0 秒 から現在までの経過時間をミリ秒単位で返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-now.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">var <var>timeInMs</var> = Date.now();</pre>
+
+<h3 id="Return_value">Return value</h3>
+
+<p>UNIX 元期からの経過時間をミリ秒単位で表す{{jsxref("Number", "数値")}}。</p>
+
+<h2 id="Polyfill" name="Polyfill">Polyfill</h2>
+
+<p>このメソッドは ECMA-262 第 5 版で標準化されました。このメソッドに対応するよう更新されていないエンジンでは、次の互換コードを使用することにより、実装の欠落を補うことができます。</p>
+
+<pre class="brush: js notranslate">if (!Date.now) {
+ Date.now = function now() {
+ return new Date().getTime();
+ };
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Reduced_time_precision" name="Reduced_time_precision">時刻の低精度化</h3>
+
+<p>ブラウザーの設定によっては、タイミング攻撃と Fingerprinting に対する保護を提供するために <code>new Date().getTime()</code> の精度が落とされていることがあります。<br>
+ Firefox では、<code>privacy.reduceTimerPrecision</code> が既定で有効になっています。既定値は Firefox 59 では 20 マイクロ秒で、 Firefox 60 では 2 ミリ秒です。</p>
+
+<pre class="brush: js notranslate">// Firefox 60 での時刻の精度の低下(2 ミリ秒)
+Date.now()
+// 1519211809934
+// 1519211810362
+// 1519211811670
+// ...
+
+
+// `privacy.resistFingerprinting` が有効な場合の時刻の精度の低下
+Date.now();
+// 1519129853500
+// 1519129858900
+// 1519129864400
+// ...
+</pre>
+
+<p>Firefox では、 <code>privacy.resistFingerprinting</code> も有効にできます。この場合、精度は 100 ミリ秒と <code>privacy.resistFingerprinting.reduceTimerPrecision.microseconds</code> 値のうち大きい方になります。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.now', 'Date.now')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.now")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{domxref("Performance.now()")}} — ウェブページのパフォーマンス測定のための、ミリ秒以下の分解能を持つタイムスタンプを提供</li>
+ <li>{{domxref("console.time()")}} / {{domxref("console.timeEnd()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/parse/index.html b/files/ja/web/javascript/reference/global_objects/date/parse/index.html
new file mode 100644
index 0000000000..5de3118e54
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/parse/index.html
@@ -0,0 +1,199 @@
+---
+title: Date.parse()
+slug: Web/JavaScript/Reference/Global_Objects/Date/parse
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/parse
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Date.parse()</code></strong> メソッドは、日時を表す文字列を解釈し、協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 からの経過時間を表すミリ秒単位の数値を返します。または、文字列を解釈できなかったり不正な日付 (例えば 2015-02-31) が指定された場合 <code>NaN</code> を返します。</p>
+
+<p>ES5 に準拠して実装されるまで <code>Date.parse</code> の使用は推奨されません。文字列の解釈は全体的に実装依存です。これらには多くの異なる実装があり、文字列の解釈が異なることがあるため、日付の文字列は手動で解釈するべきです (多くの異なる書式に対応したライブラリの使用が助けになるでしょう)。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-parse.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p>直接呼び出し:</p>
+
+<pre class="syntaxbox">Date.parse(<var>dateString</var>)
+</pre>
+
+<p>暗黙の呼び出し:</p>
+
+<pre class="syntaxbox">new Date(<var>dateString</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>dateString</var></code></dt>
+ <dd><a href="http://tools.ietf.org/html/rfc2822#section-3.3">RFC2822</a> または (派生の) ISO 8601 の日付を表す文字列。 (他の書式も使用することができますが、結果は実装依存になります。)</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 UTC からの経過時間をミリ秒単位で表す数値。このメソッドに与えられた日付を表す文字列の解釈により取得される日付。引数に正しい値が与えられない場合、 {{jsxref("NaN")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>parse()</code> メソッドは、日時の文字列 (例えば "<code>2011-10-10T14:48:00</code>") を取り、協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 からのミリ秒単位の経過時間を表す数値を返します。</p>
+
+<p>この関数は、例えば {{jsxref("Date.prototype.setTime()", "setTime()")}} メソッドと {{jsxref("Global_Objects/Date", "Date")}} オブジェクトを組み合わせて使う場合など、文字列値を基にして日時の値を設定するときに有用です。。</p>
+
+<h3 id="Date_Time_String_Format" name="Date_Time_String_Format">日付と時刻の文字列書式</h3>
+
+<p>日時文字列の標準的な文字列表現は、 ISO 8601 のカレンダー日付拡張形式を簡略化したものです。 (詳しくは、 ECMAScript 仕様書の <a href="https://tc39.github.io/ecma262/#sec-date-time-string-format">Date Time String Format</a> の章を参照してください。)</p>
+
+<p>例えば, "<code>2011-10-10</code>" (<em>日付のみ</em>の形式), "<code>2011-10-10T14:48:00</code>" (<em>日時</em>形式), "<code>2011-10-10T14:48:00.000+09:00</code>" (<em>日時</em>形式にミリ秒とタイムゾーンがついたもの) を渡し、解釈することができます。タイムゾーンのオフセットがない場合は、日付のみの形式では UTC 時刻と解釈され、日時形式では地方時として解釈されます。</p>
+
+<p>タイムゾーン指定子は、日付文字列の解析中に引数を解釈するために使用されますが、返される値は常に、 1970 年 1 月 1 日 00:00:00:00 UTC と、引数で表される時点との間のミリ秒数または <code>NaN</code> です。</p>
+
+<p><code>parse()</code> は {{jsxref("Date")}} の静的メソッドですので、 {{jsxref("Date")}} のメソッドとしてではなく <code>Date.parse()</code> として呼び出されます。</p>
+
+<h3 id="Fall-back_to_implementation-specific_date_formats" name="Fall-back_to_implementation-specific_date_formats">実装依存の日付形式へのフォールバック</h3>
+
+<div class="blockIndicator note">
+<p>この節では実装依存の動作を説明しており、実装間で一貫性がない可能性があります。</p>
+</div>
+
+<p>ECMAScript 仕様書は、文字列が標準の書式に準拠していない場合、この関数は実装固有の検出方法や実装固有の解析アルゴリズムにフォールバックすることがあり、解釈できない文字列や ISO 書式文字列における不正な要素値を含む日付を渡すと、 <code>Date.parse()</code> が {{jsxref("NaN")}} を返すと既定しています。</p>
+
+<p>しかし、 ECMA-262 で定義されている簡略化 ISO 書式として解釈できない日付文字列の無効な値は、ブラウザーや与えられた値に依存して、 {{jsxref("NaN")}} を返したり返さなかったりすることがあります。次の例を参照してください。</p>
+
+<pre class="brush: js">// 不正な値を持つ 非 ISO 文字列
+new Date('23/25/2014');
+</pre>
+
+<p>これは、 Firefox 30 では、地方時の 2015 年 11 月 25 日として扱われ、 Safari 7 では不正な値として処理されます。</p>
+
+<p>しかし、文字列が ISO 書式の文字列として解釈され、不正な値を含む場合、 ES5 以降の仕様に準拠するすべてのブラウザーが {{jsxref("NaN")}} を返します。</p>
+
+<pre class="brush: js">// 不正な値を持つ ISO 文字列
+new Date('2014-25-23').toISOString();
+// ES5 準拠のすべてのブラウザーが "RangeError: invalid date" を返す
+</pre>
+
+<p>SpiderMonkey の実装特有のヒューリスティックは、<a href="https://dxr.mozilla.org/mozilla-central/source/js/src/jsdate.cpp?rev=64553c483cd1#889"><code>jsdate.cpp</code></a> にあります。 "<code>10 06 2014</code>" の文字列は、非 ISO 書式の例として挙げられており、このようにカスタム処理にフォールバックされます。この解釈の動作を説明する<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1023155#c6">およそのアウトライン</a> も参照してください。</p>
+
+<pre class="brush: js">new Date('10 06 2014');
+</pre>
+
+<p>これは、2014 年 6 月 10 日ではなく、地方時の 2014 年 10 月 6 日 として扱われます。</p>
+
+<p>他の例です。</p>
+
+<pre class="brush: js">new Date('foo-bar 2014').toString();
+// 返値: "Invalid Date"
+
+Date.parse('foo-bar 2014');
+// 返値: NaN
+</pre>
+
+<h3 id="Differences_in_assumed_time_zone" name="Differences_in_assumed_time_zone">想定されるタイムゾーンの違い</h3>
+
+<div class="blockIndicator note">
+<p>この節では実装依存の動作を説明しており、実装間で一貫性がない可能性があります。</p>
+</div>
+
+<p>標準外の日付文字列である "<code>March 7, 2014</code>" を渡すと、 <code>parse()</code> はタイムゾーンとして地方時を想定しますが、 "<code>2014-03-07</code>" のような ISO 書式を与えると UTC をタイムゾーンとして想定します (ES5 および ECMAScript 2015 の仕様)。したがって、これらの文字列を使用して生成される {{jsxref("Date")}}} オブジェクトは、システムが UTC の地方時に設定されていない限り、対応している ECMAScript のバージョンによって異なる時刻を表す可能性があります。つまり、同じように見える 2 つの日付文字列が、変換される文字列の形式によって 2 つの異なる値になる可能性があるということです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Date.parse" name="Using_Date.parse">Using <code>Date.parse()</code> の使用</h3>
+
+<p>以下の呼び出しはすべて <code>1546300800000</code> を返します。最初のものは ES5 によれば UTC 時刻を意味し、それ以外は ISO 日付仕様 (<code>Z</code> および <code>+00:00</code>) に従って UTC をタイムゾーンを指定しています。</p>
+
+<pre class="brush: js">Date.parse("2019-01-01")
+Date.parse("2019-01-01T00:00:00.000Z")
+Date.parse("2019-01-01T00:00:00.000+00:00")
+</pre>
+
+<p>以下の呼び出しではタイムゾーンを指定していないので、システムの地方時で 2019-01-01 の 00:00:00 に設定されます。</p>
+
+<pre class="brush: js">Date.parse("2019-01-01T00:00:00")
+</pre>
+
+<h3 id="Non-standard_date_strings" name="Non-standard_date_strings">標準外の日付文字列</h3>
+
+<div class="blockIndicator note">
+<p>この節では実装依存の動作を説明しており、実装間で一貫性がない可能性があります。</p>
+</div>
+
+<p><code>IPOdate</code> が既存の {{jsxref("Date")}} オブジェクトならば、次のようにして、これを 1995 年 8 月 9 日 (地方時) にセットできます:</p>
+
+<pre class="brush: js">IPOdate.setTime(Date.parse('Aug 9, 1995'));
+</pre>
+
+<p>それ以外の標準外の日付文字列の解釈の例を示します。</p>
+
+<pre class="brush: js">Date.parse('Aug 9, 1995');
+</pre>
+
+<p>GMT-0300 のタイムゾーンでは <code>807937200000</code> を返し、他のタイムゾーンでは他の値を返します。タイムゾーンが指定されておらず ISO 書式でないため、既定で地方時のタイムゾーンが使用されます。</p>
+
+<pre class="brush: js">Date.parse('Wed, 09 Aug 1995 00:00:00 GMT');
+</pre>
+
+<p>GMT (UTC) が指定されているため、地方時のタイムゾーンに関係なく <code>807926400000</code> を返します。</p>
+
+<pre class="brush: js">Date.parse('Wed, 09 Aug 1995 00:00:00');
+</pre>
+
+<p>GMT-0300 のタイムゾーンでは <code>807937200000</code> を返し、他のタイムゾーンでは他の値を返します。引数にタイムゾーンが指定されておらず、 ISO 書式ではないため、地方時として扱われます。</p>
+
+<pre class="brush: js">Date.parse('Thu, 01 Jan 1970 00:00:00 GMT');
+</pre>
+
+<p>GMT (UTC) のタイムゾーンが指定されているため、地方時のタイムゾーンに関係なく <code>0</code> を返します。</p>
+
+<pre class="brush: js">Date.parse('Thu, 01 Jan 1970 00:00:00');
+</pre>
+
+<p>GMT-0400 のタイムゾーンでは <code>14400000</code> を返し、他のタイムゾーンでは他の値を返します。タイムゾーンが指定されておらず、 ISO 書式ではないため、地方時のタイムゾーンが使用されます。</p>
+
+<pre class="brush: js">Date.parse('Thu, 01 Jan 1970 00:00:00 GMT-0400');
+</pre>
+
+<p>GMT (UTC) のタイムゾーンが指定されているため、地方時のタイムゾーンに関係なく <code>14400000</code> を返します。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.parse', 'Date.parse')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.parse")}}</p>
+
+<h3 id="Compatibility_notes" name="Compatibility_notes">互換性ノート</h3>
+
+<ul>
+ <li>Firefox 49 {{geckoRelease(49)}} で、2 桁の「年」の解釈が、 Internet Explorer に代わって Google Chrome ブラウザーに準拠するように変更されました。現在、 <code>50</code> 以下の 2 桁の「年」は 21 世紀の年として解釈されます。例えば <code>04/16/17</code> は、以前は 1917 年 4 月 16 日と解釈されていましたが、 2017 年 4 月 16 日と解釈されるようになりました。相互運用性の問題や年があいまいになることを回避するには、 ISO 8601 書式 ("<code>2017-04-16</code>" など) の使用が推奨されます (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1265136">bug 1265136</a>)。</li>
+ <li>Google Chrome は数値の文字列を有効な <code><em>dateString</em></code> 引数として受け付けます。これは、すなわち、 <code>!!Date.parse("42")</code> は Firefox では <code>false</code> として評価されるのに対して、 Google Chrome では <code>true</code> として評価されます。 "<code>42</code>" は 2042 年 1 月 1 日と解釈されるからです。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.UTC()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setdate/index.html b/files/ja/web/javascript/reference/global_objects/date/setdate/index.html
new file mode 100644
index 0000000000..9042106ce6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setdate/index.html
@@ -0,0 +1,82 @@
+---
+title: Date.prototype.setDate()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setDate
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setDate
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setDate()</code></strong> メソッドは、現在設定されている月から始まる {{jsxref("Date")}} オブジェクトの「日」を設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setdate.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setDate(<var>dayValue</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>dayValue</var></code></dt>
+ <dd>「日」を表す整数の値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から与えられた日付までの間のミリ秒単位の数値 ({{jsxref("Date")}} オブジェクトも適切に変更されます)。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>dayValue</var></code> がその月の日付の範囲外の値の場合、それに応じて <code>setDate()</code> が {{jsxref("Date")}} オブジェクトを更新します。</p>
+
+<p>例えば、<code><var>dayValue</var></code> に 0 を与えた場合、日付は前月の最終日に設定されます。</p>
+
+<p><code><var>dayValue</var></code> に負の数を指定すると、前月の最終日から逆算して日付が設定されます。 -1の場合、日付は前月の最終日の1日前に設定されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setDate" name="Using_setDate">setDate() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date(1962, 6, 7); // 1962-07-07 (7th of July 1962)
+theBigDay.setDate(24); // 1962-07-24 (24th of July 1962)
+theBigDay.setDate(32); // 1962-08-01 (1st of August 1962)
+theBigDay.setDate(22); // 1962-08-22 (22th of August 1962)
+theBigDay.setDate(0); // 1962-07-31 (31th of July 1962)
+theBigDay.setDate(98); // 1962-10-06 (6th of October 1962)
+theBigDay.setDate(-50); // 1962-08-11 (11th of August 1962)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setdate', 'Date.prototype.setDate')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setDate")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getDate()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCDate()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setfullyear/index.html b/files/ja/web/javascript/reference/global_objects/date/setfullyear/index.html
new file mode 100644
index 0000000000..5c4a299589
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setfullyear/index.html
@@ -0,0 +1,80 @@
+---
+title: Date.prototype.setFullYear()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setFullYear
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setFullYear
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setFullYear()</code></strong> メソッドは、地方時に基づき、指定された日付の「年」を設定します。新しいタイムスタンプを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setfullyear.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setFullYear(<var>yearValue</var>[, <var>monthValue</var>[, <var>dateValue</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>yearValue</var></code></dt>
+ <dd>「年」の数字を指定する整数値。例えば、1995。</dd>
+ <dt><code><var>monthValue</var></code></dt>
+ <dd>任意。1 月から 12 月を表す 0 から 11 までの間の整数値。</dd>
+ <dt><code><var>dateValue</var></code></dt>
+ <dd>「日」を表す 1 から 31 までの間の整数値。<code><var>dateValue</var></code> 引数を指定した場合、<code><var>monthValue</var></code> も指定しなければなりません。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日付までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>monthValue</var></code> 引数と <code><var>dateValue</var></code> 引数を指定しない場合、{{jsxref("Date.prototype.getUTCMonth()", "getUTCMonth()")}} メソッドと {{jsxref("Date.prototype.getUTCDate()", "getUTCDate()")}} メソッドから返される値が使われます。</p>
+
+<p>指定した値が期待される日付の範囲外の場合、それに応じて <code>setFullYear()</code> が他の引数と {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、<code><var>monthValue</var></code> に 15 を指定した場合、年に 1 が加算 (<code><var>yearValue</var> + 1</code>) され、月が 3 になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setFullYear" name="Using_setFullYear">setFullYear() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setFullYear(1997);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setFullYear")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCFullYear()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCFullYear()")}}</li>
+ <li>{{jsxref("Date.prototype.setYear()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/sethours/index.html b/files/ja/web/javascript/reference/global_objects/date/sethours/index.html
new file mode 100644
index 0000000000..d66c6dfeb3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/sethours/index.html
@@ -0,0 +1,85 @@
+---
+title: Date.prototype.setHours()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setHours
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setHours
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setHours()</code></strong> メソッドは、地方時に基づき、指定された日付の「時」を設定し、協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された {{jsxref("Date")}} インスタンスが表す時刻までの間のミリ秒単位の数値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-sethours.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setHours(<var>hoursValue</var>[, <var>minutesValue</var>[, <var>secondsValue</var>[, <var>msValue</var>]]])</pre>
+
+<h3 id="JavaScript_1.3_以前">JavaScript 1.3 以前</h3>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setHours(<var>hoursValue</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>hoursValue</var></code></dt>
+ <dd>理想的には、「時」を表す 0 から 23 までの間の整数値です。23よりも大きな値が指定された場合は、日時は追加の時間数だけ増加します。</dd>
+ <dt><code><var>minutesValue</var></code></dt>
+ <dd>任意。理想的には、「分」を表す 0 から 59 までの間の整数値です。59よりも大きな値が指定された場合は、日時は追加の分数だけ増加します。</dd>
+ <dt><code><var>secondsValue</var></code></dt>
+ <dd>任意。理想的には、「秒」を表す 0 から 59 までの間の整数値です。59より大きな値が指定された場合は、日時は追加の秒数だけ増加します。<code><var>secondsValue</var></code> 引数を指定した場合は、<code><var>minutesValue</var></code> も指定しなければなりません。</dd>
+ <dt><code><var>msValue</var></code></dt>
+ <dd>任意。理想的には、ミリ秒を表す 0 から 999 までの間の整数値です。999よりも大きな値が指定された場合は、日時は追加のミリ秒数だけ増加します。<code><var>msValue</var></code> 引数を指定した場合、<code><var>minutesValue</var></code> と <code><var>secondsValue</var></code> も指定しなければなりません。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>minutesValue</var></code>, <code><var>secondsValue</var></code> および <code><var>msValue</var></code> 引数を指定しなかった場合、{{jsxref("Date.prototype.getMinutes()", "getMinutes()")}} と {{jsxref("Date.prototype.getSeconds()", "getSeconds()")}}、{{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}} メソッドから返される値が使われます。</p>
+
+<p>指定した値が期待される日付の範囲外の場合、それに応じて <code>setHours()</code> が他の引数と {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、<code><var>secondsValue</var></code> に 100 を指定した場合、分に 1 加算 (<code><var>minutesValue</var> + 1</code>) され、秒が 40 になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setHours" name="Using_setHours">setHours() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setHours(7);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.sethours', 'Date.prototype.setHours')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setHours")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getHours()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCHours()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setmilliseconds/index.html b/files/ja/web/javascript/reference/global_objects/date/setmilliseconds/index.html
new file mode 100644
index 0000000000..4596840365
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setmilliseconds/index.html
@@ -0,0 +1,73 @@
+---
+title: Date.prototype.setMilliseconds()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setMilliseconds()</code></strong> メソッドは、地方時に基づき、指定された日時の「ミリ秒」を設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setmilliseconds.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setMilliseconds(<var>millisecondsValue</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>millisecondsValue</var></code></dt>
+ <dd>「ミリ秒」を表す 0 から 999 までの間の整数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>指定した値が期待される日付の範囲外の場合、それに応じて {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、1005 を指定した場合、秒の数値が 1 加算され、ミリ秒に 5 が使用されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setMilliseconds" name="Using_setMilliseconds">setMilliseconds() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setMilliseconds(100);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setmilliseconds', 'Date.prototype.setMilliseconds')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setMilliseconds")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getMilliseconds()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCMilliseconds()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setminutes/index.html b/files/ja/web/javascript/reference/global_objects/date/setminutes/index.html
new file mode 100644
index 0000000000..b1763e6d23
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setminutes/index.html
@@ -0,0 +1,83 @@
+---
+title: Date.prototype.setMinutes()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setMinutes
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMinutes
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setMinutes()</code></strong> メソッドは、地方時に基づき、指定された日時の「分」を設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setminutes.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setMinutes(<var>minutesValue</var>[, <var>secondsValue</var>[, <var>msValue</var>]])</pre>
+
+<h3 id="Versions_prior_to_JavaScript_1.3" name="Versions_prior_to_JavaScript_1.3">JavaScript 1.3 より前のバージョン</h3>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setMinutes(<var>minutesValue</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>minutesValue</var></code></dt>
+ <dd>「分」を表す 0 から 59 までの間の整数値。</dd>
+ <dt><code><var>secondsValue</var></code></dt>
+ <dd>任意。「秒」を表す 0 から 59 までの間の整数値。<code><var>secondsValue</var></code> 引数を指定した場合、<code><var>minutesValue</var></code> も指定しなければなりません。</dd>
+ <dt><code><var>msValue</var></code></dt>
+ <dd>任意。ミリ秒を表す 0 から 999 までの間の整数値。<code><var>msValue</var></code> 引数を指定した場合、<code><var>minutesValue</var></code> と <code><var>secondsValue</var></code> も指定しなければなりません。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>secondsValue</var></code> および <code><var>msValue</var></code> 引数を指定しない場合、{{jsxref("Date.prototype.getSeconds()", "getSeconds()")}} と {{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}} メソッドから返される値が使われます。</p>
+
+<p>指定した値が期待される日時の範囲外の場合、それに応じて <code>setMinutes()</code> が {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、<code><var>secondsValue</var></code> に 100 を指定した場合、分に 1 が加算 (<code><var>minutesValue</var> + 1</code>) され、秒が 40 になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setMinutes" name="Using_setMinutes">setMinutes() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setMinutes(45);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setminutes', 'Date.prototype.setMinutes')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setMinutes")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getMinutes()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCMinutes()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setmonth/index.html b/files/ja/web/javascript/reference/global_objects/date/setmonth/index.html
new file mode 100644
index 0000000000..81caf3b8ec
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setmonth/index.html
@@ -0,0 +1,86 @@
+---
+title: Date.prototype.setMonth()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setMonth
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMonth
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setMonth()</code></strong> メソッドは、現在設定されている年に基づき、指定された日付の「月」を設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setmonth.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setMonth(<var>monthValue</var>[, <var>dayValue</var>])</pre>
+
+<h3 id="Versions_prior_to_JavaScript_1.3" name="Versions_prior_to_JavaScript_1.3">JavaScript 1.3 より前のバージョン</h3>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setMonth(<var>monthValue</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>monthValue</var></code></dt>
+ <dd>0から始まる整数値で、年の始まりからの月のオフセットを表します。そのため、0 は 1 月を表し、 11 は 12 月を表し、 12 は次の年の 1 月を表します。</dd>
+ <dt><code>dayValue</code></dt>
+ <dd>任意。「日」を表す 1 から 31 までの間の整数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>dayValue</var></code> 引数を指定しなかった場合、{{jsxref("Date.prototype.getDate()", "getDate()")}} メソッドから返される値が使われます。</p>
+
+<p>指定した値が期待される日付の範囲外の場合、それに応じて <code>setMonth()</code> が {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、<code><var>monthValue</var></code> に 15 を指定した場合、年に 1 が加算され、月が 3 になります。</p>
+
+<p>このメソッドの動作は、ある特定の月の日にちに影響を与えます。概念上は、その月の日数を、引数として与えた新しい月の初日に加え、新しい日付を返します。例えば、現在の値が 2016 年 8 月 31 日である場合、1 を引数として setMonth を呼び出すと 2016 年 3 月 2 日が返ってきます。これは、2016 年の 2 月が 29 日間しかないからです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setMonth" name="Using_setMonth">setMonth() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setMonth(6);
+
+//Watch out for end of month transitions
+var endOfMonth = new Date(2016, 7, 31);
+endOfMonth.setMonth(1);
+console.log(endOfMonth); //Wed Mar 02 2016 00:00:00
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setmonth', 'Date.prototype.setMonth')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setMonth")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getMonth()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCMonth()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setseconds/index.html b/files/ja/web/javascript/reference/global_objects/date/setseconds/index.html
new file mode 100644
index 0000000000..ec0a67f989
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setseconds/index.html
@@ -0,0 +1,81 @@
+---
+title: Date.prototype.setSeconds()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setSeconds
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setSeconds
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setSeconds()</code></strong> メソッドは、地方時に基づき、指定された日時の「秒」を設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setseconds.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setSeconds(<var>secondsValue</var>[, <var>msValue</var>])</pre>
+
+<h3 id="Versions_prior_to_JavaScript_1.3" name="Versions_prior_to_JavaScript_1.3">JavaScript 1.3 より前のバージョン</h3>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setSeconds(<var>secondsValue</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>secondsValue</var></code></dt>
+ <dd>日付の「秒」を表す 0 から 59 までの間の整数値。</dd>
+ <dt><code><var>msValue</var></code> {{Optional_inline}}</dt>
+ <dd>日付の「ミリ秒」を表す 0 から 999 までの間の整数。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>msValue</var></code> 引数を指定しなかった場合、{{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}} メソッドから返される値が使われます。</p>
+
+<p>指定した値が期待される日付の範囲外の場合、それに応じて <code>setSeconds()</code> が {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、 <code><var>secondsValue</var></code> に 100 を指定した場合、分に 1 が加算され、秒が 40 になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setSeconds" name="Using_setSeconds">setSeconds() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setSeconds(30);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setseconds', 'Date.prototype.setSeconds')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setSeconds")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getSeconds()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCSeconds()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/settime/index.html b/files/ja/web/javascript/reference/global_objects/date/settime/index.html
new file mode 100644
index 0000000000..0c4ffa06f9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/settime/index.html
@@ -0,0 +1,74 @@
+---
+title: Date.prototype.setTime()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setTime
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setTime
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setTime()</code></strong> メソッドは、{{jsxref("Date")}} オブジェクトを協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 からの経過時間をミリ秒単位で表す時刻に設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-settime.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setTime(<var>timeValue</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>timeValue</var></code></dt>
+ <dd>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 からの経過時間をミリ秒単位で表す整数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値 (更新された日時は、引数の値になります)。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>setTime()</code> メソッドは、日付と時刻を別の {{jsxref("Date")}} オブジェクトに代入するのに役立ちます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setTime" name="Using_setTime">setTime() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date('July 1, 1999');
+var sameAsBigDay = new Date();
+sameAsBigDay.setTime(theBigDay.getTime());
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.settime', 'Date.prototype.setTime')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setTime")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getTime()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCHours()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setutcdate/index.html b/files/ja/web/javascript/reference/global_objects/date/setutcdate/index.html
new file mode 100644
index 0000000000..649ca500a7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setutcdate/index.html
@@ -0,0 +1,73 @@
+---
+title: Date.prototype.setUTCDate()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCDate
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCDate
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setUTCDate()</code></strong> メソッドは、協定世界時に基づき、指定された日付の「日」を設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setutcdate.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setUTCDate(<var>dayValue</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>dayValue</var></code></dt>
+ <dd>任意。「日」を表す 1 から 31 までの間の整数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>指定した値が期待される日付の範囲外の場合、それに応じて <code>setUTCDate()</code> が {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、<code>dayValue</code> に 40 を指定し、{{jsxref("Date")}} に格納された「月」が 6 月の場合、「日」は 10 に変更され、「月」が繰り上がって 7 月になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setUTCDate" name="Using_setUTCDate">setUTCDate() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setUTCDate(20);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setutcdate', 'Date.prototype.setUTCDate')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setUTCDate")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCDate()")}}</li>
+ <li>{{jsxref("Date.prototype.setDate()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setutcfullyear/index.html b/files/ja/web/javascript/reference/global_objects/date/setutcfullyear/index.html
new file mode 100644
index 0000000000..c2d2f205df
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setutcfullyear/index.html
@@ -0,0 +1,79 @@
+---
+title: Date.prototype.setUTCFullYear()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setUTCFullYear()</code></strong> メソッドは、協定世界時に基づき、指定された日付の年を設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setutcmonth.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setUTCFullYear(<var>yearValue</var>[, <var>monthValue</var>[, <var>dayValue</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>yearValue</var></code></dt>
+ <dd>「年」の数字を指定する整数値。例えば、1995。</dd>
+ <dt><code><var>monthValue</var></code></dt>
+ <dd>任意。1 月から 12 月を表す 0 から 11 までの間の整数値。</dd>
+ <dt><code><var>dayValue</var></code></dt>
+ <dd>任意。「日」を表す 1 から 31 までの間の整数値。<code><var>dayValue</var></code> 引数を指定した場合、<code><var>monthValue</var></code> も指定しなければなりません。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>monthValue</var></code> 引数と <code><var>dayValue</var></code> 引数を指定しない場合、{{jsxref("Date.prototype.getUTCMonth()", "getUTCMonth()")}} メソッドと {{jsxref("Date.prototype.getUTCDate()", "getUTCDate()")}} メソッドから返される値が使われます。</p>
+
+<p>指定した値が期待される日付の範囲外の場合、それに応じて <code>setUTCFullYear()</code> が他の引数と {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、<code><var>monthValue</var></code> に 15 を指定した場合、年に 1 が加算 (<code><var>yearValue</var> + 1</code>) され、月が 3 になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setUTCFullYear" name="Using_setUTCFullYear">setUTCFullYear() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setUTCFullYear(1997);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setutcfullyear', 'Date.prototype.setUTCFullYear')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setUTCFullYear")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCFullYear()")}}</li>
+ <li>{{jsxref("Date.prototype.setFullYear()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setutchours/index.html b/files/ja/web/javascript/reference/global_objects/date/setutchours/index.html
new file mode 100644
index 0000000000..9b6fce0056
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setutchours/index.html
@@ -0,0 +1,81 @@
+---
+title: Date.prototype.setUTCHours()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCHours
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCHours
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setUTCHours()</code></strong> メソッドは、協定世界時に基づき、指定された日付の「時」を設定し、協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された {{jsxref("Date")}} インスタンスが表す時刻までの間のミリ秒単位の数値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setutchours.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setUTCHours(<var>hoursValue</var>[, <var>minutesValue</var>[, <var>secondsValue</var>[, <var>msValue</var>]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>hoursValue</var></code></dt>
+ <dd>「時」を表す 0 から 23 までの間の整数値。</dd>
+ <dt><code><var>minutesValue</var></code></dt>
+ <dd>任意。「分」を表す 0 から 59 までの間の整数値。</dd>
+ <dt><code><var>secondsValue</var></code></dt>
+ <dd>任意。「秒」を表す 0 から 59 までの間の整数値。<code><var>secondsValue</var></code> 引数を指定した場合、<code><var>minutesValue</var></code> も指定しなければなりません。</dd>
+ <dt><code><var>msValue</var></code></dt>
+ <dd>任意。ミリ秒を表す 0 から 999 までの間の整数値。<code><var>msValue</var></code> 引数を指定した場合、<code><var>minutesValue</var></code> と <code><var>secondsValue</var></code> も指定しなければなりません。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>minutesValue</var></code>, <code><var>secondsValue</var></code> および <code><var>msValue</var></code> 引数を指定しない場合、{{jsxref("Date.prototype.getUTCMinutes()", "getUTCMinutes()")}} と {{jsxref("Date.prototype.getUTCSeconds()", "getUTCSeconds()")}}、{{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}} メソッドから返される値が使われます。</p>
+
+<p>指定した値が期待される日付の範囲外の場合、それに応じて <code>setUTCHours()</code> が {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、<code><var>secondsValue</var></code> に 100 を指定した場合、分に 1 が加算 (<code><var>minutesValue</var> + 1</code>) され、秒が 40 になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setUTCHours" name="Using_setUTCHours">setUTCHours() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setUTCHours(8);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setutchours', 'Date.prototype.setUTCHours')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setUTCHours")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCHours()")}}</li>
+ <li>{{jsxref("Date.prototype.setHours()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html b/files/ja/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html
new file mode 100644
index 0000000000..268babe40a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html
@@ -0,0 +1,73 @@
+---
+title: Date.prototype.setUTCMilliseconds()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setUTCMilliseconds()</code></strong> メソッドは、協定世界時に基づき、指定された日時の「ミリ秒」を設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setutcmilliseconds.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setUTCMilliseconds(<var>millisecondsValue</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>millisecondsValue</var></code></dt>
+ <dd>「ミリ秒」を表す 0 から 999 までの間の整数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>指定した値が期待される日付の範囲外の場合、それに応じて <code>setUTCMilliseconds()</code> が {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、<code><var>millisecondsValue</var></code> に 1100 を指定した場合、{{jsxref("Date")}} オブジェクトに格納された秒の数値に 1 が加算され、ミリ秒に 100 が使用されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setUTCMilliseconds" name="Using_setUTCMilliseconds">setUTCMilliseconds() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setUTCMilliseconds(500);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setutcmilliseconds', 'Date.prototype.setUTCMilliseconds')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setUTCMilliseconds")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCMilliseconds()")}}</li>
+ <li>{{jsxref("Date.prototype.setMilliseconds()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setutcminutes/index.html b/files/ja/web/javascript/reference/global_objects/date/setutcminutes/index.html
new file mode 100644
index 0000000000..37d4c845f9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setutcminutes/index.html
@@ -0,0 +1,79 @@
+---
+title: Date.prototype.setUTCMinutes()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setUTCMinutes()</code></strong> メソッドは、協定世界時に基づき、指定された日時の「分」を設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setutcminutes.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setUTCMinutes(<var>minutesValue</var>[, <var>secondsValue</var>[, <var>msValue</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>minutesValue</var></code></dt>
+ <dd>「分」を表す 0 から 59 までの間の整数値。</dd>
+ <dt><code><var>secondsValue</var></code></dt>
+ <dd>任意。「秒」を表す 0 から 59 までの間の整数値。<code><var>secondsValue</var></code> 引数を指定した場合、<code><var>minutesValue</var></code> も指定しなければなりません。</dd>
+ <dt><code><var>msValue</var></code></dt>
+ <dd>任意。ミリ秒を表す 0 から 999 までの間の整数値。<code><var>msValue</var></code> 引数を指定した場合、<code><var>minutesValue</var></code> と <code><var>secondsValue</var></code> も指定しなければなりません。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>secondsValue</var></code> および <code><var>msValue</var></code> 引数を指定しない場合、{{jsxref("Date.prototype.getUTCSeconds()", "getUTCSeconds()")}} と {{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}} メソッドから返される値が使われます。</p>
+
+<p>指定した値が期待される日時の範囲外の場合、それに応じて <code>setUTCMinutes()</code> が {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、<code><var>secondsValue</var></code> に 100 を指定した場合、分に 1 が加算 (<code><var>minutesValue</var> + 1</code>) され、秒が 40 になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setUTCMinutes" name="Using_setUTCMinutes">setUTCMinutes() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setUTCMinutes(43);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setutcminutes', 'Date.prototype.setUTCMinutes')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setUTCMinutes")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCMinutes()")}}</li>
+ <li>{{jsxref("Date.prototype.setMinutes()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setutcmonth/index.html b/files/ja/web/javascript/reference/global_objects/date/setutcmonth/index.html
new file mode 100644
index 0000000000..671b969014
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setutcmonth/index.html
@@ -0,0 +1,77 @@
+---
+title: Date.prototype.setUTCMonth()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setUTCMonth()</code></strong> メソッドは、協定世界時に基づき、指定された日時の「月」を設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setutcseconds.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setUTCMonth(<var>monthValue</var>[, <var>dayValue</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>monthValue</var></code></dt>
+ <dd>1 月から 12 月を表す 0 から 11 までの間の整数値。</dd>
+ <dt><code><var>dayValue</var></code></dt>
+ <dd>任意。「日」を表す 1 から 31 までの間の整数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>dayValue</var></code> 引数を指定しない場合、{{jsxref("Date.prototype.getUTCDate()", "getUTCDate()")}} メソッドから返される値が使われます。</p>
+
+<p>指定した値が期待される日時の範囲外の場合、それに応じて <code>setUTCMonth()</code> が {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、<code><var>monthValue</var></code> に 15 を指定した場合、年に 1 が加算され、月が 3 になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setUTCMonth" name="Using_setUTCMonth">setUTCMonth() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setUTCMonth(11);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setutcmonth', 'Date.prototype.setUTCMonth')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setUTCMonth")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCMonth()")}}</li>
+ <li>{{jsxref("Date.prototype.setMonth()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setutcseconds/index.html b/files/ja/web/javascript/reference/global_objects/date/setutcseconds/index.html
new file mode 100644
index 0000000000..88cb29dc5b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setutcseconds/index.html
@@ -0,0 +1,77 @@
+---
+title: Date.prototype.setUTCSeconds()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>setUTCSeconds()</code></strong> メソッドは、協定世界時に基づき、指定された日時の「秒」を設定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-setutcseconds.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setUTCSeconds(<var>secondsValue</var>[, <var>msValue</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>secondsValue</var></code></dt>
+ <dd>「秒」を表す 0 から 59 までの間の整数値。</dd>
+ <dt><code><var>msValue</var></code></dt>
+ <dd>任意。ミリ秒を表す 0 から 999 までの間の整数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>msValue</code> 引数を指定しない場合、{{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}} メソッドから返される値が使われます。</p>
+
+<p>指定した値が期待される日時の範囲外の場合、それに応じて <code>setUTCSeconds()</code> が {{jsxref("Date")}} オブジェクトの日付情報の更新を試みます。例えば、<code>secondsValue</code> に 100 を指定した場合、分に 1 加算され、秒が 40 になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setUTCSeconds" name="Using_setUTCSeconds">setUTCSeconds() の使用</h3>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+theBigDay.setUTCSeconds(20);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setutcseconds', 'Date.prototype.setUTCSeconds')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setUTCSeconds")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getUTCSeconds()")}}</li>
+ <li>{{jsxref("Date.prototype.setSeconds()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/setyear/index.html b/files/ja/web/javascript/reference/global_objects/date/setyear/index.html
new file mode 100644
index 0000000000..18cbf5b5d9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/setyear/index.html
@@ -0,0 +1,77 @@
+---
+title: Date.prototype.setYear()
+slug: Web/JavaScript/Reference/Global_Objects/Date/setYear
+tags:
+ - Date
+ - Deprecated
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/setYear
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>setYear()</code></strong> メソッドは、地方時に基づき、指定された日付の「年」を設定します。 <code>setYear()</code> は完全な桁数の値を設定しないため (いわゆる 2000 年問題)、使用されなくなり、{{jsxref("Date.prototype.setFullYear", "setFullYear()")}} メソッドに置き換えられました。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.setYear(<var>yearValue</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>yearValue</var></code></dt>
+ <dd>整数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から更新された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>yearValue</code> が 0 から 99 までの値の場合、<code>dateObj</code> の「年」には <code>1900 + yearValue</code> が設定されます。そうでない場合、<code>dateObj</code> の「年」には <code>yearValue</code> が設定されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_setYear" name="Using_setYear">setYear() の使用</h3>
+
+<p>最初の 2 行は「年」を 1996 に設定します。3 行目は、「年」を 2000 に設定します。</p>
+
+<pre class="brush: js notranslate">var theBigDay = new Date();
+
+theBigDay.setYear(96);
+theBigDay.setYear(1996);
+theBigDay.setYear(2000);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.setyear', 'Date.prototype.setYear')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.setYear")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.getFullYear()")}}</li>
+ <li>{{jsxref("Date.prototype.getUTCFullYear()")}}</li>
+ <li>{{jsxref("Date.prototype.setFullYear()")}}</li>
+ <li>{{jsxref("Date.prototype.setUTCFullYear()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/todatestring/index.html b/files/ja/web/javascript/reference/global_objects/date/todatestring/index.html
new file mode 100644
index 0000000000..397ca3a281
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/todatestring/index.html
@@ -0,0 +1,84 @@
+---
+title: Date.prototype.toDateString()
+slug: Web/JavaScript/Reference/Global_Objects/Date/toDateString
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/toDateString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toDateString()</code></strong> メソッドは、 {{jsxref("Date")}} オブジェクトの日付部分を英語の次の書式で空白区切りで返します。</p>
+
+<ol>
+ <li>曜日名の最初の3文字</li>
+ <li>月名の最初の3文字</li>
+ <li>2桁の日、必要であれば左に0埋め</li>
+ <li>4桁 (以上) の年、必要であれば左に0埋め</li>
+</ol>
+
+<p>例 "Thu Jan 01 1970".</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-todatestring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.toDateString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた {{jsxref("Date")}} オブジェクトの「日付」部を表す文字列を人間が読める英語の表記で返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Date")}} インスタンスは、特定の時点を参照します。{{jsxref("Date.prototype.toString()", "toString()")}} を呼び出すと、人間が読める英語の表記で日付を返します。<a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> では、この文字列は「日付」部 (日、月、年) と続く「時刻」部 (時、分、秒、タイムゾーン) からなります。時々、時刻の文字列を得たいことがあるでしょう。そのような場合は {{jsxref("Date.prototype.toTimeString()", "toTimeString()")}} メソッドが使えます。</p>
+
+<p><a href="/ja/docs/Web/JavaScript/Language_Resources">ECMA-262</a> に従って実装されたエンジンは、{{jsxref("Date")}} オブジェクトに対して {{jsxref("Date.prototype.toString()", "toString()")}} メソッドから得られる文字列と異なることがあるため、<code>toDateString()</code> メソッドは特に役立ちます。その文字列の表記は実装依存であり、単純に文字列を切り出す方法では、複数のエンジンで一貫した結果を得られない可能性があります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="A_basic_usage_of_toDateString" name="A_basic_usage_of_toDateString">toDateString() の基本的な使い方</h3>
+
+<pre class="brush: js notranslate">var d = new Date(1993, 5, 28, 14, 39, 7);
+
+console.log(d.toString()); // logs Mon Jun 28 1993 14:39:07 GMT-0600 (PDT)
+console.log(d.toDateString()); // logs Mon Jun 28 1993
+</pre>
+
+<div class="note">
+<p><strong>注:</strong> {{jsxref("Date")}} の引数として使用する場合、月は 0 から始まります(よって、 0 は 1 月に、 11 は 12 月 に対応します)。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.todatestring', 'Date.prototype.toDateString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.toDateString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toTimeString()")}}</li>
+ <li>{{jsxref("Date.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/togmtstring/index.html b/files/ja/web/javascript/reference/global_objects/date/togmtstring/index.html
new file mode 100644
index 0000000000..c64628399f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/togmtstring/index.html
@@ -0,0 +1,68 @@
+---
+title: Date.prototype.toGMTString()
+slug: Web/JavaScript/Reference/Global_Objects/Date/toGMTString
+tags:
+ - Date
+ - Deprecated
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/toGMTString
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>toGMTString()</code></strong> メソッドは、インターネットグリニッジ標準時 (GMT) 協定に基づき、日付を文字列へ変換します。<code>toGMTString()</code> が返す値の正確な書式は、プラットフォームやブラウザによって変化しますが、一般に、人間が読める日付の文字列を表します。</p>
+
+<div class="note">
+<p><strong>注:</strong> <code>toGMTString()</code> は非推奨であり、もはや使われていません。後方互換性のためだけに残されています。代わりに、{{jsxref("Date.prototype.toUTCString()", "toUTCString()")}} を使用してください。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.toGMTString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>インターネットグリニッジ標準時 (GMT) 協定に基づき、与えられた日付を表す文字列。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Simple_example" name="Simple_example">簡単な例</h3>
+
+<p>この例では、<code>toGMTString()</code> メソッドは OS のタイムゾーンオフセットを使って、日付を GMT (UTC) に変換し、次の書式に似た文字列値を返します。正確な書式はプラットフォームに依存します。</p>
+
+<pre class="brush: js notranslate">var today = new Date();
+var str = today.toGMTString(); // deprecated! use toUTCString()
+
+console.log(str); // Mon, 18 Dec 1995 17:28:35 GMT
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.togmtstring', 'Date.prototype.toGMTString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.toGMTString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toTimeString()")}}</li>
+ <li>{{jsxref("Date.prototype.toUTCString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/toisostring/index.html b/files/ja/web/javascript/reference/global_objects/date/toisostring/index.html
new file mode 100644
index 0000000000..945302e3d9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/toisostring/index.html
@@ -0,0 +1,96 @@
+---
+title: Date.prototype.toISOString()
+slug: Web/JavaScript/Reference/Global_Objects/Date/toISOString
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/toISOString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toISOString()</code></strong> メソッドは、<em>簡潔な</em>拡張表記の ISO 形式 (<a href="https://ja.wikipedia.org/wiki/ISO_8601">ISO 8601</a>) の文字列を返します。これは、常に 24 文字または 27 文字の長さになります (それぞれ、<code><var>YYYY</var>-<var>MM</var>-<var>DD</var>T<var>HH</var>:<var>mm</var>:<var>ss.sss</var>Z</code> または <code><var>±</var><var>YYYYYY</var>-<var>MM</var>-<var>DD</var>T<var>HH</var>:<var>mm</var>:<var>ss.sss</var>Z</code>)。タイムゾーンは常に 0 UTC オフセットになり、接尾辞 "<code>Z</code>" で表記されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-toisostring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.toISOString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時に基づき、与えられた日付を <a href="https://ja.wikipedia.org/wiki/ISO_8601">ISO 8601</a> 形式で表す文字列。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>このメソッドは、ECMA-262 第 5 版で標準化されました。このメソッドに対応するため、更新されていないエンジンでは、次のコードを用いてこのメソッドの欠落を補うことができます。</p>
+
+<pre class="brush: js notranslate">if (!Date.prototype.toISOString) {
+ (function() {
+
+ function pad(number) {
+ if (number &lt; 10) {
+ return '0' + number;
+ }
+ return number;
+ }
+
+ Date.prototype.toISOString = function() {
+ return this.getUTCFullYear() +
+ '-' + pad(this.getUTCMonth() + 1) +
+ '-' + pad(this.getUTCDate()) +
+ 'T' + pad(this.getUTCHours()) +
+ ':' + pad(this.getUTCMinutes()) +
+ ':' + pad(this.getUTCSeconds()) +
+ '.' + (this.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) +
+ 'Z';
+ };
+
+ })();
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toISOString" name="Using_toISOString">toISOString() の使用</h3>
+
+<pre class="brush: js notranslate">let today = new Date('05 October 2011 14:48 UTC')
+
+console.log(today.toISOString()) // 2011-10-05T14:48:00.000Z を返す
+</pre>
+
+<p>上記の例は、Mozilla 以外のブラウザーでは正しく解析されない、非標準の文字列値を解析するのに使います。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.toisostring', 'Date.prototype.toISOString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.toISOString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toTimeString()")}}</li>
+ <li>{{jsxref("Date.prototype.toUTCString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/tojson/index.html b/files/ja/web/javascript/reference/global_objects/date/tojson/index.html
new file mode 100644
index 0000000000..2370dfc2b7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/tojson/index.html
@@ -0,0 +1,69 @@
+---
+title: Date.prototype.toJSON()
+slug: Web/JavaScript/Reference/Global_Objects/Date/toJSON
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/toJSON
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toJSON()</code></strong> メソッドは、{{jsxref("Date")}} オブジェクトの文字列表現を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-tojson.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.toJSON()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた日付を表す文字列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Date")}} インスタンスは、特定の時点を参照します。<code>toJSON()</code> の呼び出しは、{{jsxref("Date")}} オブジェクトの値を表す文字列 ({{jsxref("Date.prototype.toISOString()", "toISOString()")}} を使用) を返します。このメソッドは、一般的に、{{Glossary("JSON")}} シリアライズを目的として {{jsxref("Date")}} オブジェクトをシリアライズするために使用されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toJSON" name="Using_toJSON">toJSON() を使う</h3>
+
+<pre class="brush:js notranslate">var jsonDate = (new Date()).toJSON();
+var backToDate = new Date(jsonDate);
+
+console.log(jsonDate); //2015-10-26T07:46:36.611Z
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.tojson', 'Date.prototype.toJSON')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.toJSON")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toTimeString()")}}</li>
+ <li>{{jsxref("Date.prototype.toUTCString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/tolocaledatestring/index.html b/files/ja/web/javascript/reference/global_objects/date/tolocaledatestring/index.html
new file mode 100644
index 0000000000..04a1278e49
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/tolocaledatestring/index.html
@@ -0,0 +1,159 @@
+---
+title: Date.prototype.toLocaleDateString()
+slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
+tags:
+ - Date
+ - IANA Timezone Format
+ - Internationalization
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toLocaleDateString()</code></strong> メソッドは、この Date オブジェクトの「日付」部を表す言語に依存した文字列を返します。新しい <code>locales</code> 引数と <code>options</code> 引数により、アプリケーションは、使用される書式変換の言語の指定や、関数の振る舞いのカスタマイズができます。古い実装のアプリケーションは、<code>locales</code> 引数と <code>options</code> 引数を無視します。使用されるロケールや返される文字列の書式は、完全に実装依存です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-tolocaledatestring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.toLocaleDateString([<var>locales</var>[, <var>options</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p><code>locales</code> 引数と <code>options</code> 引数をサポートしているブラウザーは、{{anch("Browser compatibility", "ブラウザーの実装状況")}} セクションを確認してください。機能が使用できるかどうかは、{{anch("Checking_for_support_for_locales_and_options_arguments", "locales 引数と options 引数がサポートされているか確認する")}}で確認してください。</p>
+
+<p>See the <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/DateTimeFormat"><code>Intl.DateTimeFormat()</code> constructor</a> for details on these parameters and how to use them.</p>
+
+<p>日時のそれぞれの部分ののプロパティにおける既定値は、{{jsxref("undefined")}}です。ただし、<code>weekday</code>、 <code>year</code>、<code>month</code>、<code>day</code> プロパティがすべて {{jsxref("undefined")}} のときは、<code>year</code>、<code>month</code>、<code>day</code> は <code>"numeric"</code> とみなされます。</p>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた {{jsxref("Global_Objects/Date", "Date")}} インスタンスの「日付」部を表す、言語特有の慣習による文字列。</p>
+
+<h2 id="Performance" name="Performance">性能</h2>
+
+<p>大量の日付を書式化する場合は、 {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} オブジェクトを生成してその {{jsxref("DateTimeFormat.prototype.format", "format")}} プロパティで提供される関数を使用したほうが得策です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toLocaleDateString" name="Using_toLocaleDateString">toLocaleDateString() の使用</h3>
+
+<p>ロケールを指定しない基本的な使い方では、既定のロケールと既定のオプションによる書式の文字列が返されます。</p>
+
+<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
+
+// toLocaleDateString() に引数を与えなければ実装に依存し、
+// 既定のロケールとタイムゾーンを返す
+console.log(date.toLocaleDateString());
+// → "12/11/2012" : アメリカ/ロサンゼルスのタイムゾーンの en-US ロケールで実行した場合
+</pre>
+
+<h3 id="Checking_for_support_for_locales_and_options_arguments" name="Checking_for_support_for_locales_and_options_arguments">locales と options の各引数に対応しているか確認する</h3>
+
+<p><code>locales</code> および <code>options</code> 引数は、まだすべてのブラウザーが対応しているわけではありません。これらが実装されているかどうかをチェックするには、不適切な言語タグを与えると {{jsxref("RangeError")}} 例外で拒否されるという要件を使用することができます。</p>
+
+<pre class="brush: js notranslate">function toLocaleDateStringSupportsLocales() {
+ try {
+ new Date().toLocaleDateString('i');
+ } catch (e) {
+ return e.name !== 'RangeError';
+ }
+ return true;
+}
+</pre>
+
+<h3 id="Using_locales" name="Using_locales">locales の使用</h3>
+
+<p>この例では、国ごとに異なる日付書式を示します。アプリケーションのユーザーインターフェイスで使用されている言語の書式を得るには、 <code>locales</code> 引数でその言語 (あるいはフォールバック先の言語) を指定してください。</p>
+
+<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// 以下の書式はその地域のタイムゾーンとロケールを想定
+// 米国のアメリカ大陸/ロサンゼルス
+
+// 米国英語は月-日-年の順
+console.log(date.toLocaleDateString('en-US'));
+// → "12/19/2012"
+
+// 英国英語は日-月-年の順
+console.log(date.toLocaleDateString('en-GB'));
+// → "20/12/2012"
+
+// 韓国は年-月-日の順
+console.log(date.toLocaleDateString('ko-KR'));
+// → "2012. 12. 20."
+
+// Event for Persian, It's hard to manually convert date to Solar Hijri
+console.log(date.toLocaleDateString('fa-IR'));
+// → "۱۳۹۱/۹/۳۰"
+
+// 多くのアラビア語圏ではアラビア数字
+console.log(date.toLocaleDateString('ar-EG'));
+// → "<span dir="rtl">٢٠‏/١٢‏/٢٠١٢</span>"
+
+// 日本語では、アプリケーションは元号を用いることがある
+// 2012 年は平成 24 年
+console.log(date.toLocaleDateString('ja-JP-u-ca-japanese'));
+// → "24/12/20"
+
+// 対応していない可能性のある言語を要求した場合、例えば
+// バリ語とし、フォールバック言語にインドネシア語を指定した場合
+console.log(date.toLocaleDateString(['ban', 'id']));
+// → "20/12/2012"
+</pre>
+
+<h3 id="Using_options" name="Using_options">options の使用</h3>
+
+<p><code>toLocaleDateString()</code> メソッドから得られる結果は、 <code>options</code> 引数でカスタマイズできます。</p>
+
+<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// 曜日を加えて月とともに長い書式で表す
+var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+console.log(date.toLocaleDateString('de-DE', options));
+// → "Donnerstag, 20. Dezember 2012"
+
+// アプリケーションで UTC を用いてそれを示したい場合
+options.timeZone = 'UTC';
+options.timeZoneName = 'short';
+console.log(date.toLocaleDateString('en-US', options));
+// → "Thursday, December 20, 2012, GMT"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.tolocaletimestring', 'Date.prototype.toLocaleTimeString')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sup-date.prototype.tolocaletimestring', 'Date.prototype.toLocaleTimeString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.toLocaleDateString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li>
+ <li>{{jsxref("Date.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/tolocalestring/index.html b/files/ja/web/javascript/reference/global_objects/date/tolocalestring/index.html
new file mode 100644
index 0000000000..4de5f6bf2e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/tolocalestring/index.html
@@ -0,0 +1,180 @@
+---
+title: Date.prototype.toLocaleString()
+slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
+tags:
+ - Date
+ - Internationalization
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toLocaleString()</code></strong> メソッドは、言語に合わせた日時の文字列を返します。</p>
+
+<p>新しい <code><var>locales</var></code> と <code><var>options</var></code> の引数により、アプリケーションは使用される書式変換の言語の指定や、関数の振る舞いのカスタマイズをすることができます。</p>
+
+<p>古い実装のアプリケーションは、 <code><var>locales</var></code> と <code><var>options</var></code> の引数を無視します。使用されるロケールや返される文字列の書式は、完全に実装依存です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-tolocalestring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.toLocaleString([<var>locales</var>[, <var>options</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>どのブラウザーが <code><var>locales</var></code> と <code><var>options</var></code> に対応しているのかは、<a href="#Browser_Compatibility">ブラウザーの互換性</a>をご覧ください。 <code><var>locales</var></code> と <code><var>options</var></code> を無視する実装では、使用されるロケールや返される文字列の書式は、完全に実装依存です。</p>
+
+<p>これらの引数の詳細やその使用方法は、 {{jsxref("DateTimeFormat/DateTimeFormat", "Intl.DateTimeFormat()")}} コンストラクターを確認してください。</p>
+
+<p>日時のそれぞれの部分のプロパティにおける既定値は {{jsxref("undefined")}} です。ただし、 <code>weekday</code>, <code>year</code>, <code>month</code>, <code>day</code> の各プロパティがすべて {{jsxref("undefined")}} のときは、 <code>year</code>, <code>month</code>, <code>day</code> は <code>"numeric"</code> とみなされます。</p>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた文字列を言語特有の慣習によって表した文字列です。</p>
+
+<h2 id="Performance" name="Performance">性能</h2>
+
+<p>大量の日付を書式化する場合は、 {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} オブジェクトを生成してその {{jsxref("DateTimeFormat.prototype.format", "format")}} プロパティで提供される関数を使用したほうが得策です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toLocaleString" name="Using_toLocaleString">toLocaleString() の使用</h3>
+
+<p>ロケールを指定しない基本的な使い方では、既定のロケールと既定のオプションによる書式の文字列が返されます。</p>
+
+<pre class="brush: js notranslate">let date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
+
+// toLocaleString() メソッドに引数を与えなければ実装に依存し、
+// 既定のロケールとタイムゾーンを返す
+console.log(date.toLocaleString());
+// → "12/11/2012, 7:00:00 PM" : アメリカ/ロサンゼルスのタイムゾーンの en-US ロケールで実行した場合
+</pre>
+
+<h3 id="Checking_for_support_for_locales_and_options_arguments" name="Checking_for_support_for_locales_and_options_arguments">locales と options に対応しているか確認する</h3>
+
+<p><code><var>locales</var></code> と <code><var>options</var></code> は、まだすべてのブラウザーが対応している訳ではありません。これらが実装されているかどうかは、不適切な言語タグを与えて {{jsxref("RangeError")}} 例外で拒否されるかどうかで確かめられます。</p>
+
+<pre class="brush: js notranslate">function toLocaleStringSupportsLocales() {
+ try {
+ new Date().toLocaleString('i');
+ } catch (e) {
+ return e instanceof RangeError;
+ }
+ return false;
+}
+</pre>
+
+<h3 id="Using_locales" name="Using_locales">locales の使用</h3>
+
+<p>この例では、国ごとに異なる日時の書式を示します。ご使用のアプリケーションのユーザーインターフェイスで使用される言語の書式を得るには、 <code><var>locales</var></code> でその言語 (あるいは代替言語) を指定してください。</p>
+
+<pre class="brush: js notranslate">let date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// 以下の書式はその地域のタイムゾーンとロケールを想定
+// 米国のアメリカ大陸/ロサンゼルス
+
+// 米国英語は月-日-年の順で AM/PM 表記の 12 時間制
+console.log(date.toLocaleString('en-US'));
+// → "12/19/2012, 7:00:00 PM"
+
+// 英国英語は日-月-年の順で AM/PM 表記なしの 24 時間制
+console.log(date.toLocaleString('en-GB'));
+// → "20/12/2012 03:00:00"
+
+// 韓国は年-月-日の順で AM/PM 表記の 12 時間制
+console.log(date.toLocaleString('ko-KR'));
+// → "2012. 12. 20. 오후 12:00:00"
+
+// 多くのアラビア語圏ではアラビア数字を使用
+console.log(date.toLocaleString('ar-EG'));
+// → "<span dir="rtl">٢٠‏/١٢‏/٢٠١٢ ٥:٠٠:٠٠ ص</span>"
+
+// 日本のアプリケーションでは元号を用いることがある
+// 2012 年は平成 24 年
+console.log(date.toLocaleString('ja-JP-u-ca-japanese'));
+// → "24/12/20 12:00:00"
+
+// 対応していない可能性のある言語を要求した場合、たとえば
+// ここではバリ語とし、代替言語にインドネシア語
+console.log(date.toLocaleString(['ban', 'id']));
+// → "20/12/2012 11.00.00"
+</pre>
+
+<h3 id="Using_options" name="Using_options">options の使用</h3>
+
+<p><code>toLocaleString()</code> メソッドから得られる結果は、<code><var>options</var></code> でカスタマイズできます。</p>
+
+<pre class="brush: js notranslate">let date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// 曜日を加えて月とともに長い書式で表す
+let options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+
+console.log(date.toLocaleString('de-DE', options));
+// → "Donnerstag, 20. Dezember 2012"
+
+// アプリケーションで UTC を用いてそれを示したい場合
+options.timeZone = 'UTC';
+options.timeZoneName = 'short';
+
+console.log(date.toLocaleString('en-US', options));
+// → "Thursday, December 20, 2012, GMT"
+
+// 米国でも 24 時間制を使うことがある
+console.log(date.toLocaleString('en-US', { hour12: false }));
+// → "12/19/2012, 19:00:00"
+</pre>
+
+<h3 id="Avoid_comparing_formatted_date_values_to_static_values" name="Avoid_comparing_formatted_date_values_to_static_values">書式化した日付値を固定値と比較しないでください</h3>
+
+<p>たいていの場合、 <code>toLocaleString()</code> が返す書式は一貫しています。しかし、これは将来的に変更される可能性があり、すべての言語で保証されているわけではありません。</p>
+
+<p>特に注目すべきは、IE および Edge ブラウザーは日付の周りに書字方向の制御文字を挿入するため、出力テキストが他のテキストと連結されたときに適切に流れるようになっています。</p>
+
+<p>このことから、 <code>toLocaleString()</code> を固定値と比較できると期待してはいけません。</p>
+
+<pre class="brush: js; example-bad notranslate">"1/1/2019, 01:00:00" === new Date("2019-01-01T01:00:00Z").toLocaleString("en-US");
+// true in Firefox and others
+// false in IE and Edge</pre>
+
+<div class="blockIndicator note">
+<p><strong>注</strong>: 詳細および例についてはこの <a href="https://stackoverflow.com/questions/25574963/ies-tolocalestring-has-strange-characters-in-results">StackOverflow のスレッド</a>をご覧ください。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sup-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.toLocaleString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li>
+ <li>{{jsxref("Date.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/tolocaletimestring/index.html b/files/ja/web/javascript/reference/global_objects/date/tolocaletimestring/index.html
new file mode 100644
index 0000000000..c26afc5c19
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/tolocaletimestring/index.html
@@ -0,0 +1,155 @@
+---
+title: Date.prototype.toLocaleTimeString()
+slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString
+tags:
+ - Date
+ - Internationalization
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - メソッド
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toLocaleTimeString()</code></strong> メソッドは、この Date オブジェクトの「時刻」部を表す言語に依存した文字列を返します。新しい <code>locales</code> 引数と <code>options</code> 引数により、アプリケーションは、使用される書式変換の言語の指定や、関数の振る舞いのカスタマイズができます。古い実装のアプリケーションは、<code>locales</code> 引数と <code>options</code> 引数を無視します。使用されるロケールや返される文字列の書式は、完全に実装依存です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-tolocaletimestring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.toLocaleTimeString([<var>locales</var>[, <var>options</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p><code>locales</code> および <code>options</code> 引数は、関数の動作をカスタマイズし、使用される書式の慣習を言語で指定することができるににします。 <code>locales</code> および <code>options</code> 引数を無視する実装では、使用されるロケールおよび返される文字列の書式は完全に実装依存になります。</p>
+
+<p>これらの引数やその使い方についての詳細は、 {{jsxref("Intl/DateTimeFormat/DateTimeFormat", "Intl.DateTimeFormat()")}} コンストラクターを参照してください。</p>
+
+<p>時刻のそれぞれの部分のプロパティにおける既定値は {{jsxref("undefined")}} ですが、 <code>hour</code>、 <code>minute</code>、<code>second</code> プロパティがすべて {{jsxref("undefined")}} のときは、<code>hour</code>、<code>minute</code>、<code>second</code> は <code>"numeric"</code> とみなされます。</p>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた {{jsxref("Global_Objects/Date", "Date")}} インスタンスの「時刻」部を表す、言語特有の慣習による文字列。</p>
+
+<h2 id="Performance" name="Performance">性能</h2>
+
+<p>大量の日付を書式化する場合は、 {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} オブジェクトを生成してその {{jsxref("DateTimeFormat.prototype.format", "format")}} プロパティで提供される関数を使用したほうが得策です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toLocaleTimeString" name="Using_toLocaleTimeString">toLocaleTimeString() の使用</h3>
+
+<p>ロケールを指定しない基本的な使い方では、既定のロケールと既定のオプションによる書式の文字列が返されます。</p>
+
+<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
+
+// toLocaleTimeString() に引数を与えなければ実装に依存し、
+// 既定のロケールとタイムゾーンを返す
+console.log(date.toLocaleTimeString());
+// → "7:00:00 PM" アメリカ/ロサンゼルスのタイムゾーンの en-US ロケールで実行した場合
+</pre>
+
+<h3 id="Checking_for_support_for_locales_and_options_arguments" name="Checking_for_support_for_locales_and_options_arguments">locales と options の各引数に対応しているか確認する</h3>
+
+<p><code>locales</code> および <code>options</code> 引数は、まだすべてのブラウザーが対応しているわけではありません。これらが実装されているかどうかをチェックするには、不適切な言語タグを与えると {{jsxref("RangeError")}} 例外で拒否されるという要件を使用することができます。</p>
+
+<pre class="brush: js notranslate">function toLocaleTimeStringSupportsLocales() {
+ try {
+ new Date().toLocaleTimeString('i');
+ } catch (e) {
+ return e.name === 'RangeError';
+ }
+ return false;
+}
+</pre>
+
+<h3 id="Using_locales" name="Using_locales">locales の使用</h3>
+
+<p>この例では、国ごとに異なる時刻書式を示します。アプリケーションのユーザーインターフェイスで使用されている言語の書式を得るには、 <code>locales</code> 引数でその言語 (あるいはフォールバック先の言語) を指定してください。</p>
+
+<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// 以下の書式はその地域のタイムゾーンとロケールを想定
+// 米国のアメリカ大陸/ロサンゼルス
+
+// 米国英語は AM/PM 表記の 12 時間制
+console.log(date.toLocaleTimeString('en-US'));
+// → "7:00:00 PM"
+
+// 英国英語は AM/PM 表記なしの 24 時間制
+console.log(date.toLocaleTimeString('en-GB'));
+// → "03:00:00"
+
+// 韓国は AM/PM 表記の 12 時間制
+console.log(date.toLocaleTimeString('ko-KR'));
+// → "오후 12:00:00"
+
+// 多くのアラビア語圏ではアラビア数字を使用
+console.log(date.toLocaleTimeString('ar-EG'));
+// → "<span dir="rtl">٧:٠٠:٠٠ م</span>"
+
+// 対応していない可能性のある言語を要求した場合、例えば
+// バリ語とし、フォールバック言語にインドネシア語を指定した場合
+console.log(date.toLocaleTimeString(['ban', 'id']));
+// → "11.00.00"
+</pre>
+
+<h3 id="Using_options" name="Using_options">options の使用</h3>
+
+<p><code>toLocaleTimeString()</code> メソッドから得られる結果は、 <code>options</code> 引数でカスタマイズできます。</p>
+
+<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// アプリケーションで UTC を用い、それを表示したい場合
+var options = { timeZone: 'UTC', timeZoneName: 'short' };
+console.log(date.toLocaleTimeString('en-US', options));
+// → "3:00:00 AM GMT"
+
+// 米国でも 24 時間制を使うことがある
+console.log(date.toLocaleTimeString('en-US', { hour12: false }));
+// → "19:00:00"
+
+// 既定のロケールのオプション - 空の配列を使用して時と分のみを表示
+console.log(date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }));
+// → "20:01"
+
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.tolocaletimestring', 'Date.prototype.toLocaleTimeString')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sup-date.prototype.tolocaletimestring', 'Date.prototype.toLocaleTimeString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.toLocaleTimeString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date.prototype.toTimeString()")}}</li>
+ <li>{{jsxref("Date.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/tosource/index.html b/files/ja/web/javascript/reference/global_objects/date/tosource/index.html
new file mode 100644
index 0000000000..8d9b5bc578
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/tosource/index.html
@@ -0,0 +1,50 @@
+---
+title: Date.prototype.toSource()
+slug: Web/JavaScript/Reference/Global_Objects/Date/toSource
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/toSource
+---
+<div>{{JSRef}} {{obsolete_header}}</div>
+
+<p><strong><code>toSource()</code></strong> メソッドは、オブジェクトのソースコードを表す文字列を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.toSource()
+Date.toSource()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた {{jsxref("Global_Objects/Date", "Date")}} オブジェクトのソースコードを表す文字列。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Native_function" name="Native_function">ネイティブ関数</h3>
+
+<p>組み込まれた {{jsxref("Date")}} オブジェクトについて、<code>toSource()</code> は、ソースコードが利用できないことを示す次の文字列を返します。</p>
+
+<pre class="brush: js notranslate">function Date() {
+ [native code]
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>仕様の一部ではありません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.toSource")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toSource()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/tostring/index.html b/files/ja/web/javascript/reference/global_objects/date/tostring/index.html
new file mode 100644
index 0000000000..72c5042eac
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/tostring/index.html
@@ -0,0 +1,113 @@
+---
+title: Date.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/Date/toString
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/toString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toString()</code></strong> メソッドは、指定した {{jsxref("Date")}} オブジェクトを表す文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-tostring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.toString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた日付を表す文字列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Date")}} のインスタンスは <code>toString()</code> メソッドを {{jsxref("Date.prototype")}} から継承しており、 {{jsxref("Object.prototype")}} から継承しているわけではありません。 <code>Date.prototype.toString()</code> は Date を表す文字列を、 ECMA-262 で指定された以下のような書式で返します。</p>
+
+<ul>
+ <li>曜日: 3文字の英語の曜日名。例 "Sat"</li>
+ <li>空白</li>
+ <li>月名: 3文字の英語の月名。例 "Sep"</li>
+ <li>空白</li>
+ <li>日: 2桁の日。例 "01"</li>
+ <li>空白</li>
+ <li>年: 4桁の年。例 "2018"</li>
+ <li>空白</li>
+ <li>時: 2桁の時。例 "14"</li>
+ <li>コロン</li>
+ <li>分: 2桁の分。例 "53"</li>
+ <li>コロン</li>
+ <li>秒: 2桁の秒。例 "26"</li>
+ <li>空白</li>
+ <li>文字列 "GMT"</li>
+ <li>タイムゾーンのオフセット記号。以下のどちらかです。
+ <ul>
+ <li>"+" 正のオフセット (0以上)</li>
+ <li>"-" 負のオフセット (0未満)</li>
+ </ul>
+ </li>
+ <li>2桁の時間のオフセット。例 "14"</li>
+ <li>2桁の分のオフセット。例 "00"</li>
+ <li>任意で、以下の形のタイムゾーン名。
+ <ul>
+ <li>空白</li>
+ <li>左括弧、すなわち "("</li>
+ <li>タイムゾーンを表す実装依存の文字列で、省略形の場合も完全な名前の場合もあります (タイムゾーンに名前や省略形の標準はありません。例 "Line Islands Time" または "LINT"</li>
+ <li>右括弧、すなわち ")"</li>
+ </ul>
+ </li>
+</ul>
+
+<p>例 "Sat Sep 01 2018 14:53:26 GMT+1400 (LINT)"</p>
+
+<p>ECMAScript 2018 (第9編) まで、 <code>Date.prototype.toString</code> が返す文字列の書式は実装に依存していました。したがって、指定された書式通りであることに頼ってはいけません。</p>
+
+<p><code>toString()</code> メソッドは、日付がテキスト値で表現されるとき、例えば <code>console.log(new Date())</code>、または日付が文字列に強制変換されるとき、例えば <code>var today = 'Today is ' + new Date()</code> などで自動的に呼び出されます。</p>
+
+<p><code>toString()</code> は汎用メソッドです。 <code>this</code> が {{jsxref("Date")}} インスタンスある必要はありません。しかし、ネイティブの JavaScript を使用して構築することができない内部の <code>[[TimeValue]]</code> プロパティを持っている必要があるため、事実上は {{jsxref("Date")}} インスタンスでの使用に限定されています。日付でないインスタンスで呼び出された場合、 {{jsxref("TypeError")}} が発生します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toString" name="Using_toString">toString() の使用</h3>
+
+<p>次の例は、{{jsxref("Date")}} オブジェクトの <code>toString()</code> 値を <code>myVar</code> に代入します。</p>
+
+<pre class="brush: js notranslate">var x = new Date();
+var myVar = x.toString(); // 次のような値を myVar に代入します:
+ // Mon Sep 08 1998 14:36:22 GMT-0700 (PDT)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.tostring', 'Date.prototype.toString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.toString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toString()")}}</li>
+ <li>{{jsxref("Date.prototype.toDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date.prototype.toTimeString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/totimestring/index.html b/files/ja/web/javascript/reference/global_objects/date/totimestring/index.html
new file mode 100644
index 0000000000..67928ed7a8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/totimestring/index.html
@@ -0,0 +1,71 @@
+---
+title: Date.prototype.toTimeString()
+slug: Web/JavaScript/Reference/Global_Objects/Date/toTimeString
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/toTimeString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toTimeString()</code></strong> メソッドは、英語の人間が読める形式で {{jsxref("Date")}} オブジェクトの「時刻」部を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-totimestring.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.toTimeString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>英語の人間が読める形式で、与えられた日付の「時刻」部を表す文字列を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Date")}} インスタンスは特定の時点を参照します。{{jsxref("Date.prototype.toString()", "toString()")}} を呼び出すと、英語の人間が読める形式の日付を返します。<a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> では、この文字列は「日付」部 (日、月、年) と続く「時刻」部 (時、分、秒、タイムゾーン) から成ります。時々、時刻の文字列を得たいことがあるでしょう。そのような場合に、<code>toTimeString()</code> メソッドが使えます。</p>
+
+<p><a href="/ja/docs/Web/JavaScript/Language_Resources">ECMA-262</a> に従って実装されたエンジンは、{{jsxref("Date")}} オブジェクトに対して {{jsxref("Date.prototype.toString()", "toString()")}} メソッドから得られる文字列と異なることがあるため、<code>toTimeString()</code> メソッドは特に役立ちます。その文字列の表記は実装依存であり、単純に文字列を切り出す方法では、複数のエンジンで一貫した結果を得られない可能性があります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="A_basic_usage_of_toTimeString" name="A_basic_usage_of_toTimeString">toTimeString() の基本的な使い方</h3>
+
+<pre class="brush: js notranslate">var d = new Date(1993, 6, 28, 14, 39, 7);
+
+console.log(d.toString()); // Wed Jul 28 1993 14:39:07 GMT-0600 (PDT)
+console.log(d.toTimeString()); // 14:39:07 GMT-0600 (PDT)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.totimestring', 'Date.prototype.toTimeString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.toTimeString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li>
+ <li>{{jsxref("Date.prototype.toDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/toutcstring/index.html b/files/ja/web/javascript/reference/global_objects/date/toutcstring/index.html
new file mode 100644
index 0000000000..38d3f67926
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/toutcstring/index.html
@@ -0,0 +1,110 @@
+---
+title: Date.prototype.toUTCString()
+slug: Web/JavaScript/Reference/Global_Objects/Date/toUTCString
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/toUTCString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toUTCString()</code></strong> メソッドは、協定世界時 (UTC) のタイムゾーンに基づき、日付を文字列へ変換します。</p>
+
+<p><a href="https://tools.ietf.org/html/rfc7231#section-7.1.1.1">rfc7231</a> と <a href="https://www.ecma-international.org/ecma-262/10.0/index.html#sec-date.prototype.toutcstring">ecma-262 toUTCString</a> の改訂に基づき、 <a href="https://tc39.es/ecma262/#sec-date.prototype.toutcstring">2021 版</a>では負の数が可能になります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-toutcstring.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.toUTCString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>UTC タイムゾーンに基づき、与えられた日付を表す文字列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>toUTCString()</code> から返される文字列は、 <code><var>Www</var>, <var>dd</var> <var>Mmm</var> <var>yyyy</var> <var>hh</var>:<var>mm</var>:<var>ss</var> GMT</code> の形の文字列です。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">書式文字列</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code><var>Www</var></code></td>
+ <td>曜日、3文字で表す (例 Sun, Mon, ...)</td>
+ </tr>
+ <tr>
+ <td><code><var>dd</var></code></td>
+ <td>日、必要に応じて先頭に0が付いた2桁の数字で表す</td>
+ </tr>
+ <tr>
+ <td><code><var>Mmm</var></code></td>
+ <td>月、3文字で表す (例 Jan, Feb, ...)</td>
+ </tr>
+ <tr>
+ <td><code><var>yyyy</var></code></td>
+ <td>年、必要に応じて先頭に0が付いた4桁以上の数字で表す</td>
+ </tr>
+ <tr>
+ <td><code><var>hh</var></code></td>
+ <td>時、必要に応じて先頭に0が付いた2桁の数字で表す</td>
+ </tr>
+ <tr>
+ <td><code><var>mm</var></code></td>
+ <td>分、必要に応じて先頭に0が付いた2桁の数字で表す</td>
+ </tr>
+ <tr>
+ <td><code><var>ss</var></code></td>
+ <td>秒、必要に応じて先頭に0が付いた2桁の数字で表す</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>ECMAScript 2018 以前では、返値の書式はプラットフォームによって様々です。もっとも一般的な返値は RFC-1123 形式の日付であり、これは RFC-822 形式の日付をわずかに改訂したものでした。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toUTCString" name="Using_toUTCString">toUTCString() を使う</h3>
+
+<pre class="brush: js notranslate">let today = new Date('Wed, 14 Jun 2017 00:00:00 PDT');
+let UTCstring = today.toUTCString(); // Wed, 14 Jun 2017 07:00:00 GMT
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.toUTCString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date.prototype.toDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toISOString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/utc/index.html b/files/ja/web/javascript/reference/global_objects/date/utc/index.html
new file mode 100644
index 0000000000..bc1dda2191
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/utc/index.html
@@ -0,0 +1,124 @@
+---
+title: Date.UTC()
+slug: Web/JavaScript/Reference/Global_Objects/Date/UTC
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/UTC
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Date.UTC()</code></strong> メソッドは、コンストラクターと同じ最も長い書式の引数を受け入れ、協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 からの経過時間を表す {{jsxref("Date")}} オブジェクトのミリ秒単位の数値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-utc.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p><strong>ECMAScript 2017 より:</strong></p>
+
+<pre class="syntaxbox">Date.UTC(<var>year</var>[, <var>month</var>[, <var>day</var>[, <var>hour</var>[, <var>minute</var>[, <var>second</var>[, <var>millisecond</var>]]]]]])</pre>
+
+<p><strong>ECMAScript 2016 以前:</strong> <em>(<code><var>month</var></code> が必須であった)</em></p>
+
+<pre class="syntaxbox">Date.UTC(<var>year</var>, <var>month</var>[, <var>day</var>[, <var>hour</var>[, <var>minute</var>[, <var>second</var>[, <var>millisecond</var>]]]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>year</var></code></dt>
+ <dd>完全な形の「年」</dd>
+ <dt><code><var>month</var></code></dt>
+ <dd>「月」を表す <code>0</code> (1 月) から <code>11</code> (12 月) までの整数値。 <em>(ECMAScript 2016 まで、 <code><var>month</var></code> は必須の引数でした。 ES2017 では必須ではなくなりました。)</em></dd>
+ <dt><code><var>day</var></code> {{optional_inline}}</dt>
+ <dd>「日」を表す <code>1</code> から <code>31</code> までの整数値。省略された場合の既定値は <code>1</code> です。</dd>
+ <dt><code>hour</code> {{optional_inline}}</dt>
+ <dd>「時」を表す <code>0</code> から <code>23</code> までの整数値。省略された場合の既定値は <code>0</code> です。</dd>
+ <dt><code>minute</code> {{optional_inline}}</dt>
+ <dd>「分」を表す <code>0</code> から <code>59</code> までの整数値。省略された場合の既定値は <code>0</code> です。</dd>
+ <dt><code>second</code> {{optional_inline}}</dt>
+ <dd>「秒」を表す <code>0</code> から <code>59</code> までの整数値。省略された場合の既定値は <code>0</code> です。</dd>
+ <dt><code>millisecond</code> {{optional_inline}}</dt>
+ <dd>「ミリ秒」を表す <code>0</code> から <code>999</code> までの整数値。省略された場合の既定値は <code>0</code> です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) の 1970 年 1 月 1 日 00:00:00 から指定された日時までの経過時間を表すミリ秒単位の数値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>UTC()</code> はカンマ区切りの日時の引数を取り、世界時の 1970 年 1 月 1 日 00:00:00 から指定した日時までの経過時間を表すミリ秒単位の数値を返します。</p>
+
+<p><code>0</code> から <code>99</code> までの年は、 20 世紀の年 <code>(1900 + year)</code> に変換されます。例えば、 <code>95</code> は 1995 年に変換されます。</p>
+
+<p>この <code>UTC()</code> メソッドは {{jsxref("Date")}} コンストラクターと 2 つの点で異なります。</p>
+
+<ol>
+ <li><code>Date.UTC()</code> は地方時ではなく、協定世界時を用います。</li>
+ <li><code>Date.UTC()</code> は <code>Date</code> オブジェクトを生成せず、時刻値を整数で返します。</li>
+</ol>
+
+<p>引数が日時に期待される範囲を超えている場合、 <code>UTC()</code> メソッドは指定した値を受け入れるよう他の引数を更新します。例えば <code>15</code> が <code><var>month</var></code> に使用された場合、年が 1 つ増加し <code>(<var>year</var> + 1)</code>、月には <code>3</code> が使われます。</p>
+
+<p><code>UTC</code> は {{jsxref("Date")}} の静的メソッドなので、生成した <code>Date</code> オブジェクトのメソッドとしてではなく、常に <code>Date.UTC()</code> のように使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Date.UTC" name="Using_Date.UTC">Date.UTC の使用</h3>
+
+<p>以下の文では、地方時の代わりに UTC を用いて {{jsxref("Date")}} オブジェクトを生成します。</p>
+
+<pre class="brush:js">let utcDate = new Date(Date.UTC(2018, 11, 1, 0, 0, 0));
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.utc', 'Date.UTC')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.UTC")}}</p>
+
+<h3 id="Compatibility_notes" name="Compatibility_notes">互換性ノート</h3>
+
+<h4 id="Date.UTC_with_fewer_than_two_arguments" name="Date.UTC_with_fewer_than_two_arguments">Date.UTC() の引数が2つ未満であった場合</h4>
+
+<p><code>Date.UTC()</code> の引数が 2 つ未満の場合、 ECMAScript 2017 では {{jsxref("NaN")}} を返すよう要求しています。この動作に対応していなかったエンジンも対応済みです (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1050755">bug 1050755</a>, <a href="https://github.com/tc39/ecma262/pull/642">ecma-262 #642</a> を参照)。</p>
+
+<pre class="brush: js">Date.UTC();
+Date.UTC(1);
+
+// Safari: NaN
+// Chrome/Opera/V8: NaN
+
+// Firefox &lt;54: non-NaN
+// Firefox 54+: NaN
+
+// IE: non-NaN
+// Edge: NaN
+</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.parse()")}}</li>
+ <li>{{jsxref("Date")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/date/valueof/index.html b/files/ja/web/javascript/reference/global_objects/date/valueof/index.html
new file mode 100644
index 0000000000..dc80281505
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/date/valueof/index.html
@@ -0,0 +1,68 @@
+---
+title: Date.prototype.valueOf()
+slug: Web/JavaScript/Reference/Global_Objects/Date/valueOf
+tags:
+ - Date
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Date/valueOf
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>valueOf()</code></strong> メソッドは、{{jsxref("Date")}} オブジェクトのプリミティブ値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/date-valueof.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateObj</var>.valueOf()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 から指定された日時までの間のミリ秒単位の数値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>valueOf()</code> メソッドは、{{jsxref("Date")}} オブジェクトのプリミティブ値を数値型で返します。これは、1970 年 1 月 1 日 00:00:00 (UTC) からのミリ秒単位の数値です。</p>
+
+<p>このメソッドは、{{jsxref("Date.prototype.getTime()")}} メソッドと機能的に同等です。</p>
+
+<p>このメソッドは、JavaScript によって内部的に呼ばれ、コード内で明示的に呼ばれることはありません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_valueOf" name="Using_valueOf">valueOf() の使用</h3>
+
+<pre class="brush: js notranslate">var x = new Date(56, 6, 17);
+var myVar = x.valueOf(); // myVar に -424713600000 を代入
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-date.prototype.valueof', 'Date.prototype.valueOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Date.valueOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.valueOf()")}}</li>
+ <li>{{jsxref("Date.prototype.getTime()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/decodeuri/index.html b/files/ja/web/javascript/reference/global_objects/decodeuri/index.html
new file mode 100644
index 0000000000..d9fb342783
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/decodeuri/index.html
@@ -0,0 +1,92 @@
+---
+title: decodeURI()
+slug: Web/JavaScript/Reference/Global_Objects/decodeURI
+tags:
+ - Decode
+ - JavaScript
+ - Method
+ - String
+ - Text
+ - URI
+ - URL
+ - decodeURI
+ - decoding
+translation_of: Web/JavaScript/Reference/Global_Objects/decodeURI
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p><span class="seoSummary"><code><strong>decodeURI()</strong></code> 関数は、{{jsxref("encodeURI", "encodeURI()")}} 関数あるいは同様のルーチンによって事前に作成された URI (Uniform Resource Identifier; 統一資源識別子) をデコードします。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-decodeuri.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>decodeURI(<var>encodedURI</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>encodedURI</var></code></dt>
+ <dd>完全にエンコードされた URI。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられたエンコードされた統一資源識別子 (URI) のエンコードされていないバージョンを表す新しい文字列。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p><code><var>encodedURI</var></code> が無効な文字の並びを含む場合、{{jsxref("URIError")}} ("malformed URI sequence") 例外が発生します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>エンコードされた URI のエスケープシーケンスを、それぞれが表す文字に置き換えます。ただし、{{jsxref("encodeURI")}} によって生成されないエスケープシーケンスはデコードしません。また、"<code>#</code>" の文字はエスケープシーケンスからデコードされません。</p>
+
+<h2 id="Examples" name="Examples">使用例</h2>
+
+<h3 id="Decoding_a_Cyrillic_URL" name="Decoding_a_Cyrillic_URL">キリル文字の URL をデコード</h3>
+
+<pre class="brush: js notranslate">decodeURI('https://developer.mozilla.org/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B');
+// "https://developer.mozilla.org/ru/docs/JavaScript_шеллы"
+</pre>
+
+<h3 id="Catching_errors" name="Catching_errors">エラーの捕捉</h3>
+
+<pre class="notranslate">try {
+ var a = decodeURI('%E0%A4%A');
+} catch(e) {
+ console.error(e);
+}
+
+// URIError: malformed URI sequence</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-decodeuri-encodeduri', 'decodeURI')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.decodeURI")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("decodeURIComponent", "decodeURIComponent()")}}</li>
+ <li>{{jsxref("encodeURI", "encodeURI()")}}</li>
+ <li>{{jsxref("encodeURIComponent", "encodeURIComponent()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/decodeuricomponent/index.html b/files/ja/web/javascript/reference/global_objects/decodeuricomponent/index.html
new file mode 100644
index 0000000000..9202f63e0b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/decodeuricomponent/index.html
@@ -0,0 +1,98 @@
+---
+title: decodeURIComponent()
+slug: Web/JavaScript/Reference/Global_Objects/decodeURIComponent
+tags:
+ - JavaScript
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/decodeURIComponent
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p><code><strong>decodeURIComponent()</strong></code> 関数は、{{jsxref("encodeURIComponent", "encodeURIComponent()")}} 関数あるいは同様のルーチンによって事前に作成された URI (Uniform Resource Identifier; 統一資源識別子) の構成要素をデコードします。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-decodeuricomponent.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">decodeURIComponent(<var>encodedURI</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>encodedURI</var></code></dt>
+ <dd>エンコードされた URI の構成要素です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>エンコードされた統一資源識別子 (URI) の構成要素をデコードしたものを表す新しい文字列です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>不正に利用された場合は {{jsxref("URIError")}} ("malformed URI sequence") 例外が発生します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>エンコードされた URI の構成要素のエスケープシーケンスを、それぞれが表す文字に置き換えます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Decoding_a_Cyrillic_URL_component" name="Decoding_a_Cyrillic_URL_component">キリル文字の URL の構成要素をデコード</h3>
+
+<pre class="brush: js notranslate">decodeURIComponent('JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B');
+// "JavaScript_шеллы"
+</pre>
+
+<h3 id="Catching_errors" name="Catching_errors">エラーの捕捉</h3>
+
+<pre class="brush: js notranslate">try {
+ var a = decodeURIComponent('%E0%A4%A');
+} catch(e) {
+ console.error(e);
+}
+
+// URIError: malformed URI sequence</pre>
+
+<h3 id="Decoding_query_parameters_from_a_URL" name="Decoding_query_parameters_from_a_URL">URL からのクエリパラメータのデコード</h3>
+
+<p>decodeURIComponent は、URL からのクエリパラメータを解析するために直接使用することはできません。少し準備が必要です。</p>
+
+<pre class="brush: js notranslate">function decodeQueryParam(p) {
+  return decodeURIComponent(p.replace(/\+/g, ' '));
+}
+
+decodeQueryParam('search+query%20%28correct%29');
+// 'search query (correct)'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-decodeuricomponent-encodeduricomponent', 'decodeURIComponent')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.decodeURIComponent")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("decodeURI")}}</li>
+ <li>{{jsxref("encodeURI")}}</li>
+ <li>{{jsxref("encodeURIComponent")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/encodeuri/index.html b/files/ja/web/javascript/reference/global_objects/encodeuri/index.html
new file mode 100644
index 0000000000..d3b11e9a44
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/encodeuri/index.html
@@ -0,0 +1,122 @@
+---
+title: encodeURI()
+slug: Web/JavaScript/Reference/Global_Objects/encodeURI
+tags:
+ - Encoding
+ - JavaScript
+ - Method
+ - Text
+ - URI
+ - URL
+ - encodeURI
+translation_of: Web/JavaScript/Reference/Global_Objects/encodeURI
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p><code><strong>encodeURI()</strong></code> 関数は、{{glossary("URI")}} (Uniform Resource Identifier; 統一資源識別子) をエンコードし、各文字のインスタンスをそれぞれ {{glossary("UTF-8")}} 符号の文字を表す 1 個から 4 個のエスケープシーケンスに置き換えます (サロゲート文字のペアのみ 4 個のエスケープシーケンスになります)。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-encodeuri.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">encodeURI(<var>URI</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>URI</var></code></dt>
+ <dd>完全 URI です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>URI (Uniform Resource Identifier) としてエンコードされた指定された文字列を表す新しい文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>encodeURI()</code> 関数では、 URI において特別な意味を持つ文字 (予約文字) はエンコードされません。下記の例は URI "scheme" に含まれる可能性がある全ての箇所を示しています。特定の文字がどのように特殊な意味を表すために使われているかに注意してください。</p>
+
+<pre class="notranslate">http://username:password@www.example.com:80/path/to/file.php?foo=316&amp;bar=this+has+spaces#anchor</pre>
+
+<p>したがって、 <code>encodeURI()</code> は完全な URI を表すのに必要な文字はエンコード<strong>しません</strong>。また、 <code>encodeURI()</code> は "unreserved marks" (予約されていないが "そのまま" URI に使用できる) 文字をエンコード<strong>しません</strong>。 (<a href="https://www.ietf.org/rfc/rfc2396.txt">RFC2396</a> を確認してください。)</p>
+
+<p><code>encodeURI()</code> は下記<strong>以外</strong>の全ての文字をエスケープします。</p>
+
+<pre class="notranslate"><strong>エスケープされないもの</strong>:
+
+ A-Z a-z 0-9 ; , / ? : @ &amp; = + $ - _ . ! ~ * ' ( ) #<code>
+</code>
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="encodeURI_vs_encodeURIComponent" name="encodeURI_vs_encodeURIComponent">encodeURI と encodeURIComponent</h3>
+
+<p><code>encodeURI()</code> は以下のように {{jsxref("encodeURIComponent", "encodeURIComponent()")}} とは異なります。</p>
+
+<pre class="brush: js notranslate">var set1 = ";,/?:@&amp;=+$#"; // 予約文字
+var set2 = "-_.!~*'()"; // 予約されていない記号
+var set3 = "ABC abc 123"; // 英数字 + 空白
+
+console.log(encodeURI(set1)); // ;,/?:@&amp;=+$#
+console.log(encodeURI(set2)); // -_.!~*'()
+console.log(encodeURI(set3)); // ABC%20abc%20123 (空白は %20 にエンコードされる)
+
+console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24%23
+console.log(encodeURIComponent(set2)); // -_.!~*'()
+console.log(encodeURIComponent(set3)); // ABC%20abc%20123 (空白は %20 にエンコードされる)
+</pre>
+
+<p>なお、<code>encodeURI()</code> のみでは、 HTTP の {{HTTPMethod("GET")}} および {{HTTPMethod("POST")}} リクエストを {{domxref("XMLHttpRequest")}} のように適切に構成できません。なぜなら、 "<code>&amp;</code>", "<code>+</code>", "<code>=</code>" は <code>GET</code> および <code>POST</code> リクエストにおいて特別な文字であり、それらがエンコードされないからです。 <code>encodeURIComponent()</code> の場合、それらがエンコードされます。</p>
+
+<h3 id="Encoding_a_lone_high_surrogate_throws" name="Encoding_a_lone_high_surrogate_throws">単独のサロゲート文字のエンコード</h3>
+
+<p>サロゲートペアになっていない 1 個のサロゲート文字をエンコードしようとすると {{jsxref("URIError")}} が発生することに注意してください。例えば、</p>
+
+<pre class="brush: js notranslate">// サロゲートペアは OK
+console.log(encodeURI('\uD800\uDFFF'));
+
+// 上位サロゲートのみだと "URIError: malformed URI sequence" エラーが発生
+console.log(encodeURI('\uD800'));
+
+// 下位サロゲートのみだと "URIError: malformed URI sequence" エラーが発生
+console.log(encodeURI('\uDFFF')); </pre>
+
+<h3 id="Encoding_for_IPv6" name="Encoding_for_IPv6">IPv6 のエンコード</h3>
+
+<p>また、 URL 記述のために最近の <a href="http://tools.ietf.org/html/rfc3986">RFC3986</a> 仕様に従おうとする場合、角括弧 <code>[]</code> は ({{glossary("IPv6")}} 用の) 予約文字となっているため、角括弧が (ホスト名など) URL の一部を形成している場合はエンコードされていないほうがよいでしょう。そういう場合は以下のコードが役に立ちます。</p>
+
+<pre class="brush: js notranslate">function fixedEncodeURI(str) {
+ return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-encodeuri-uri', 'encodeURI')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.encodeURI")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("decodeURI", "decodeURI()")}}</li>
+ <li>{{jsxref("encodeURIComponent", "encodeURIComponent()")}}</li>
+ <li>{{jsxref("decodeURIComponent", "decodeURIComponent()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/encodeuricomponent/index.html b/files/ja/web/javascript/reference/global_objects/encodeuricomponent/index.html
new file mode 100644
index 0000000000..563177efca
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/encodeuricomponent/index.html
@@ -0,0 +1,154 @@
+---
+title: encodeURIComponent()
+slug: Web/JavaScript/Reference/Global_Objects/encodeURIComponent
+tags:
+ - JavaScript
+ - Method
+ - Reference
+ - URI
+translation_of: Web/JavaScript/Reference/Global_Objects/encodeURIComponent
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p><code><strong>encodeURIComponent()</strong></code> 関数は、 {{glossary("URI")}} (Uniform Resource Identifier) 構成要素を特定の文字を {{glossary("UTF-8")}} 文字エンコーディングで表された 1 個から 4 個のエスケープシーケンスに置き換えることでエンコードします (サロゲートペアで構成される文字のみ 4 個のエスケープシーケンスになります)。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-encodeuricomponent.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">encodeURIComponent(<var>str</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>str</var></code></dt>
+ <dd>URI の構成要素となる文字列です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた文字列を表す URI 構成要素としてエンコードされた新しい文字列です。</p>
+
+<h2 id="Description" name="Description">返値</h2>
+
+<p><code>encodeURIComponent</code> は<strong>下記を除く</strong>すべての文字をエスケープします。</p>
+
+<pre class="notranslate"><strong>エスケープされないもの</strong>:
+
+ A-Z a-z 0-9 <code>-</code> <code>_</code> <code>.</code> <code>!</code> <code>~</code> <code>*</code> <code>'</code> <code>(</code> <code>)
+</code>
+</pre>
+
+<p><code>encodeURIComponent()</code> と <strong><code>encodeURI</code></strong> の違いは以下の通りです。</p>
+
+<pre class="brush: js notranslate">var set1 = ";,/?:@&amp;=+$"; // Reserved Characters
+var set2 = "-_.!~*'()"; // Unescaped Characters
+var set3 = "#"; // Number Sign
+var set4 = "ABC abc 123"; // Alphanumeric Characters + Space
+
+console.log(encodeURI(set1)); // ;,/?:@&amp;=+$
+console.log(encodeURI(set2)); // -_.!~*'()
+console.log(encodeURI(set3)); // #
+console.log(encodeURI(set4)); // ABC%20abc%20123 (the space gets encoded as %20)
+
+console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24
+console.log(encodeURIComponent(set2)); // -_.!~*'()
+console.log(encodeURIComponent(set3)); // %23
+console.log(encodeURIComponent(set4)); // ABC%20abc%20123 (the space gets encoded as %20)
+
+</pre>
+
+<p>上位・下位のペアでないサロゲート文字をエンコードしようとした場合 {{jsxref("URIError")}} が発生します。</p>
+
+<pre class="brush: js notranslate">// 上位・下位の正しいペア
+console.log(encodeURIComponent('\uD800\uDFFF'));
+
+// 上位のみであり "URIError: malformed URI sequence" が発生
+console.log(encodeURIComponent('\uD800'));
+
+// 下位のみであり "URIError: malformed URI sequence" が発生
+console.log(encodeURIComponent('\uDFFF'));
+</pre>
+
+<p>フォームからサーバーに {{HTTPMethod("POST")}} されるユーザー入力値には <code>encodeURIComponent</code> を使用してください。これは、特殊な HTML エンティティやエンコード/デコードを必要とする他の文字のデータ入力中に誤って生成される可能性がある <code>&amp;</code> 記号をエンコードします。</p>
+
+<p>例えば、ユーザーが <code>Jack &amp; Jill</code> と入力した場合、テキストは <code>Jack &amp;amp; Jill</code> とエンコードされる可能性があります。<code>encodeURIComponent()</code> を使用しない場合は "&amp;" が新しいフィールドの始まりとしてサーバー上で解釈され、データの完全性が損なわれる可能性があります。</p>
+
+<p><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#application/x-www-form-urlencoded-encoding-algorithm"><code>application/x-www-form-urlencoded</code></a> では、スペースは <code>+</code> に置換されます。そのため、<code>encodeURIComponent()</code> による置換に加えて <code>%20</code> を <code>+</code> に置き換えることが望まれるかもしれません。</p>
+
+<p>( ! ' ( ) * が予約語になっている) <a href="http://tools.ietf.org/html/rfc3986">RFC 3986</a> 仕様を忠実に順守するには、これらの URI 区切り文字としての役目が失われてしまうものの、以下の例が問題なく使用できます。</p>
+
+<pre class="brush: js notranslate">function fixedEncodeURIComponent(str) {
+ return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
+ return '%' + c.charCodeAt(0).toString(16);
+ });
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Encoding_for_Content-Disposition_and_Link_headers" name="Encoding_for_Content-Disposition_and_Link_headers">Content-Disposition とリンクヘッダーのエンコーディング</h3>
+
+<p>次の例は、サーバーレスポンスヘッダー引数の {{HTTPHeader("Content-Disposition")}} や {{HTTPHeader("Link")}} で (UTF-8 からなるファイル名などに) 必要となる特別な UTF-8 エンコーディングを提供します。</p>
+
+<pre class="brush: js notranslate">var fileName = 'my file(2).txt';
+var header = "Content-Disposition: attachment; filename*=UTF-8''"
+ + encodeRFC5987ValueChars(fileName);
+
+console.log(header);
+// logs "Content-Disposition: attachment; filename*=UTF-8''my%20file%282%29.txt"
+
+
+function encodeRFC5987ValueChars(str) {
+ return encodeURIComponent(str).
+ // Note that although RFC3986 reserves "!", RFC5987 does not,
+ // so we do not need to escape it
+ replace(/['()]/g, escape). // i.e., %27 %28 %29
+ replace(/\*/g, '%2A').
+ // The following are not required for percent-encoding per RFC5987,
+ // so we can allow for a little better readability over the wire: |`^
+ replace(/%(?:7C|60|5E)/g, unescape);
+}
+
+// here is an alternative to the above function
+function encodeRFC5987ValueChars2(str) {
+ return encodeURIComponent(str).
+ // Note that although RFC3986 reserves "!", RFC5987 does not,
+ // so we do not need to escape it
+ replace(/['()*]/g, c =&gt; "%" + c.charCodeAt(0).toString(16)). // i.e., %27 %28 %29 %2a (Note that valid encoding of "*" is %2A
+ // which necessitates calling toUpperCase() to properly encode)
+ // The following are not required for percent-encoding per RFC5987,
+ // so we can allow for a little better readability over the wire: |`^
+ replace(/%(7C|60|5E)/g, (str, hex) =&gt; String.fromCharCode(parseInt(hex, 16)));
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-encodeuricomponent-uricomponent', 'encodeURIComponent')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.encodeURIComponent")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("decodeURI")}}</li>
+ <li>{{jsxref("encodeURI")}}</li>
+ <li>{{jsxref("decodeURIComponent")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/error/columnnumber/index.html b/files/ja/web/javascript/reference/global_objects/error/columnnumber/index.html
new file mode 100644
index 0000000000..375680761e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/error/columnnumber/index.html
@@ -0,0 +1,42 @@
+---
+title: Error.prototype.columnNumber
+slug: Web/JavaScript/Reference/Global_Objects/Error/columnNumber
+tags:
+ - Error
+ - JavaScript
+ - Property
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Error/columnNumber
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p><code><strong>columnNumber</strong></code> プロパティは、このエラーを起こしたファイルの行内の列番号が入ります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_columnNumber" name="Using_columnNumber">columnNumber の使用</h3>
+
+<pre class="brush: js notranslate">var e = new Error('Could not parse input');
+throw e;
+console.log(e.columnNumber) // 0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>仕様の一部ではありません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Error.columnNumber")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error.prototype.stack")}}</li>
+ <li>{{jsxref("Error.prototype.lineNumber")}}</li>
+ <li>{{jsxref("Error.prototype.fileName")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/error/error/index.html b/files/ja/web/javascript/reference/global_objects/error/error/index.html
new file mode 100644
index 0000000000..d979fe2f71
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/error/error/index.html
@@ -0,0 +1,69 @@
+---
+title: Error() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Error/Error
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Error/Error
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Error</code></strong> コンストラクターは、エラーオブジェクトを生成します。</span></p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Error([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>message</var></code>{{Optional_Inline}}</dt>
+ <dd>人間が読めるエラーの説明。</dd>
+ <dt><code><var>fileName</var></code> {{Optional_Inline}}{{Non-standard_inline}}</dt>
+ <dd>生成された <code>Error</code> オブジェクト上の <code><var>fileName</var></code> プロパティに設定される値。既定では、<code>Error()</code> コンストラクターを呼び出したコードを含むファイルの名前です。</dd>
+ <dt><code><var>lineNumber</var></code> {{Optional_Inline}}{{Non-standard_inline}}</dt>
+ <dd>生成された <code>Error</code> オブジェクト上の <code><var>lineNumber</var></code> プロパティに設定される値。既定では、<code>Error()</code> コンストラクターの呼び出しを含む行番号。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Function_call_or_new_construction" name="Function_call_or_new_construction">関数呼び出しか new による構築か</h3>
+
+<p><code>Error</code> が関数のように使用された場合 -- {{JSxRef("Operators/new", "new")}} がなかった場合、 <code>Error</code> オブジェクトを返します。したがって、 <code>Error</code> を呼び出すだけで <code>Error</code> オブジェクトを <code>new</code> キーワードから構築した場合と同じものを出力します。</p>
+
+<pre class="brush: js; notranslate">// これは...
+const x = Error('関数呼び出しによって生成されました。')
+
+​​​​// ...これと同じ機能です。
+const y = new Error('"new" キーワードによって生成されました。')</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-error-constructor', 'Error constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Error.Error")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Statements/throw", "throw")}}</li>
+ <li>{{JSxRef("Statements/try...catch", "try...catch")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/error/filename/index.html b/files/ja/web/javascript/reference/global_objects/error/filename/index.html
new file mode 100644
index 0000000000..687b98aeae
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/error/filename/index.html
@@ -0,0 +1,46 @@
+---
+title: Error.prototype.fileName
+slug: Web/JavaScript/Reference/Global_Objects/Error/fileName
+tags:
+ - Error
+ - JavaScript
+ - Property
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Error/fileName
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p><code><strong>fileName</strong></code> プロパティは、このエラーを起こしたファイルへのパスを含みます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>この標準外のプロパティは、このエラーを起こしたファイルへのパスが入ります。デバッガーのコンテキストから呼び出された場合、例えば Firefox 開発ツールでは、"debugger eval code" が返されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_fileName" name="Using_fileName">fileName の使用</h3>
+
+<pre class="brush: js notranslate">var e = new Error('Could not parse input');
+throw e;
+// e.fileName could look like "file:///C:/example.html"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>仕様の一部ではありません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Error.fileName")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error.prototype.stack")}}</li>
+ <li>{{jsxref("Error.prototype.columnNumber")}}</li>
+ <li>{{jsxref("Error.prototype.fileName")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/error/index.html b/files/ja/web/javascript/reference/global_objects/error/index.html
new file mode 100644
index 0000000000..ae3fac6909
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/error/index.html
@@ -0,0 +1,220 @@
+---
+title: Error
+slug: Web/JavaScript/Reference/Global_Objects/Error
+tags:
+ - Error
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Error
+---
+<div>{{JSRef}}</div>
+
+<p><code>Error</code> オブジェクトは、実行時エラーが発生した時に発生します。 <code>Error</code> オブジェクトは、ユーザー定義の例外の基底オブジェクトとして使用することもできます。標準の組み込みエラー型については下記を参照してください。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>実行時エラーが発生すると、新しい <code>Error</code> オブジェクトが生成されスローされます。</p>
+
+<h3 id="Error_types" name="Error_types">エラーの型</h3>
+
+<p>JavaScript には、一般的な <code>Error</code> コンストラクターの他に、中核となる 7 つのエラーコンストラクターがあります。クライアント側の例外については、<a href="/ja/docs/Web/JavaScript/Guide/Statements#Exception_handling_statements">例外処理文</a>を参照してください。</p>
+
+<dl>
+ <dt>{{JSxRef("EvalError")}}</dt>
+ <dd>グローバル関数 {{JSxRef("eval", "eval()")}} に関して発生するエラーを表すインスタンスを生成します。</dd>
+ <dt>{{JSxRef("InternalError")}}</dt>
+ <dd>"too much recursion" (深すぎる再帰) など、JavaScript エンジンで内部エラーが発生した時に発生するエラーを表すインスタンスを生成します。</dd>
+ <dt>{{JSxRef("RangeError")}}</dt>
+ <dd>数値変数または引数が、その有効範囲外である場合に発生するエラーを表すインスタンスを生成します。</dd>
+ <dt>{{JSxRef("ReferenceError")}}</dt>
+ <dd>不正な参照から参照先の値を取得した時に発生するエラーを表すインスタンスを生成します。</dd>
+ <dt>{{JSxRef("SyntaxError")}}</dt>
+ <dd>構文エラーを表すインスタンスを生成します。</dd>
+ <dt>{{JSxRef("TypeError")}}</dt>
+ <dd>変数または引数の型が有効でない場合に発生するエラーを表すインスタンスを生成します。</dd>
+ <dt>{{JSxRef("URIError")}}</dt>
+ <dd>{{JSxRef("encodeURI", "encodeURI()")}} または {{JSxRef("decodeURI", "decodeURI()")}} に不正な引数が渡された時に発生するエラーを表すインスタンスを生成します。</dd>
+</dl>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Error/Error", "Error()")}}</dt>
+ <dd>新しい <code>Error</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{JSxRef("Error.captureStackTrace()")}}</dt>
+ <dd>標準外の <strong>V8</strong> の関数で、 Error インスタンスに {{JSxRef("Error.prototype.stack", "stack")}} プロパティを生成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.message")}}</dt>
+ <dd>エラーメッセージ。</dd>
+ <dt>{{jsxref("Error.prototype.name")}}</dt>
+ <dd>エラーの名称。</dd>
+ <dt>{{jsxref("Error.prototype.description")}}</dt>
+ <dd>標準外の Microsoft のプロパティで、エラーの説明です。 {{jsxref("Error.prototype.message", "message")}} と似ています。</dd>
+ <dt>{{jsxref("Error.prototype.number")}}</dt>
+ <dd>標準外の Microsoft のプロパティで、エラー番号です。</dd>
+ <dt>{{jsxref("Error.prototype.fileName")}}</dt>
+ <dd>標準外の Mozilla のプロパティで、このエラーが発生したファイルへのパスです。</dd>
+ <dt>{{jsxref("Error.prototype.lineNumber")}}</dt>
+ <dd>標準外の Mozilla のプロパティで、このエラーが発生したファイル内の行番号です。</dd>
+ <dt>{{jsxref("Error.prototype.columnNumber")}}</dt>
+ <dd>標準外の Mozilla のプロパティで、このエラーが発生した行内の桁番号です。</dd>
+ <dt>{{jsxref("Error.prototype.stack")}}</dt>
+ <dd>標準外の Mozilla プロパティで、スタックトレースです。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.toString()")}}</dt>
+ <dd>指定したオブジェクトを表す文字列を返します。{{jsxref("Object.prototype.toString()")}} メソッドを上書きします。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Throwing_a_generic_error" name="Throwing_a_generic_error">一般的なエラーを発生させる</h3>
+
+<p>通常、{{JSxRef("Statements/throw", "throw")}} キーワードを使い意図的にエラーを発生させて <code>Error</code> オブジェクトを生成します。 {{JSxRef("Statements/try...catch", "try...catch")}} 構文を使用してエラーを処理してください:</p>
+
+<pre class="brush: js; notranslate">try {
+ throw new Error('Whoops!')
+} catch (e) {
+ console.error(e.name + ': ' + e.message)
+}
+</pre>
+
+<h3 id="Handling_a_specific_error" name="Handling_a_specific_error">特定のエラーを処理する</h3>
+
+<p>エラーの {{JSxRef("Object.prototype.constructor", "constructor")}} プロパティでエラー型をテストすることにより、特定のエラー型だけを選んで処理できます。または、最近の JavaScript エンジン向けに書いているのであれば、{{JSxRef("Operators/instanceof", "instanceof")}} キーワードが使えます:</p>
+
+<pre class="brush: js; notranslate">try {
+ foo.bar()
+} catch (e) {
+ if (e instanceof EvalError) {
+ console.error(e.name + ': ' + e.message)
+ } else if (e instanceof RangeError) {
+ console.error(e.name + ': ' + e.message)
+ }
+ // ... etc
+}
+</pre>
+
+<h3 id="Custom_Error_Types" name="Custom_Error_Types">独自のエラー型</h3>
+
+<p><code>Error</code> から派生した独自のエラー型を定義して <code>throw new CustomError()</code> ができるようにし、<code>instanceof CustomError</code> で例外ハンドラー内のエラーの種類を確認したいでしょう。これを行う一般的な方法の実例を以下に示します。</p>
+
+<p>StackOverflow の突っ込んだ議論、 <a href="http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript">"What's a good way to extend Error in JavaScript?"</a> も参照してください。</p>
+
+<h4 id="ES6_Custom_Error_Class" name="ES6_Custom_Error_Class">ES6 独自のエラークラス</h4>
+
+<div class="warning">
+<p>Babel 7 以前では独自のエラークラスのメソッドを使用することができますが、 <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty()</a> で宣言された場合に限定されます。 そうでない場合、古い Babel やそれ以外のトランスパイラは、下記のコードを正しく処理するために<a href="https://github.com/loganfsmyth/babel-plugin-transform-builtin-extend">追加の設定</a>を必要とします。</p>
+</div>
+
+<div class="blockIndicator note">
+<p>ES2015 クラスを使用した場合、一部のブラウザのスタックトレース上に、 CustomError コンストラクタが含まれます。</p>
+</div>
+
+<pre class="brush: js notranslate">class CustomError extends Error {
+ constructor(foo = 'bar', ...params) {
+ // Pass remaining arguments (including vendor specific ones) to parent constructor
+ super(...params)
+
+ // Maintains proper stack trace for where our error was thrown (only available on V8)
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, CustomError)
+ }
+
+ this.name = 'CustomError'
+ // Custom debugging information
+ this.foo = foo
+ this.date = new Date()
+ }
+}
+
+try {
+ throw new CustomError('baz', 'bazMessage')
+} catch(e) {
+ console.error(e.name) //CustomError
+ console.error(e.foo) //baz
+ console.error(e.message) //bazMessage
+ console.error(e.stack) //stacktrace
+}</pre>
+
+<h4 id="ES5_Custom_Error_Object" name="ES5_Custom_Error_Object">ES5 独自のエラーオブジェクト</h4>
+
+<div class="warning">
+<p><strong>すべて</strong>のブラウザーのスタックトレース上に、 <code>CustomError</code> コンストラクターが含まれます。</p>
+</div>
+
+<pre class="brush: js notranslate">function CustomError(foo, message, fileName, lineNumber) {
+ var instance = new Error(message, fileName, lineNumber);
+ instance.name = 'CustomError';
+ instance.foo = foo;
+ Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(instance, CustomError);
+ }
+ return instance;
+}
+
+CustomError.prototype = Object.create(Error.prototype, {
+ constructor: {
+ value: Error,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+});
+
+if (Object.setPrototypeOf){
+ Object.setPrototypeOf(CustomError, Error);
+} else {
+ CustomError.__proto__ = Error;
+}
+
+try {
+ throw new CustomError('baz', 'bazMessage');
+} catch(e){
+ console.error(e.name); //CustomError
+ console.error(e.foo); //baz
+ console.error(e.message); //bazMessage
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-error-objects', 'Error')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Error")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Statements/throw", "throw")}}</li>
+ <li>{{JSxRef("Statements/try...catch", "try...catch")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/error/linenumber/index.html b/files/ja/web/javascript/reference/global_objects/error/linenumber/index.html
new file mode 100644
index 0000000000..bc0a320786
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/error/linenumber/index.html
@@ -0,0 +1,53 @@
+---
+title: Error.prototype.lineNumber
+slug: Web/JavaScript/Reference/Global_Objects/Error/lineNumber
+tags:
+ - Error
+ - JavaScript
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Error/lineNumber
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p><code><strong>lineNumber</strong></code> プロパティは、このエラーを起こしたファイル内の行番号が入ります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_lineNumber" name="Using_lineNumber">lineNumber の使用</h3>
+
+<pre class="brush: js notranslate">var e = new Error('Could not parse input');
+throw e;
+console.log(e.lineNumber) // 2
+</pre>
+
+<h3 id="Alternative_example_using_error_event" name="Alternative_example_using_error_event">error イベントを使用した他の例</h3>
+
+<pre class="brush: js notranslate">window.addEventListener('error', function(e) {
+ console.log(e.lineNumber); // 5
+});
+var e = new Error('入力を解釈できません');
+throw e;
+</pre>
+
+<p>これは標準の機能ではなく、幅広く対応されていません。下記のブラウザーの互換性の表をご覧ください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>仕様の一部ではありません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Error.lineNumber")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error.prototype.stack")}}</li>
+ <li>{{jsxref("Error.prototype.columnNumber")}}</li>
+ <li>{{jsxref("Error.prototype.fileName")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/error/message/index.html b/files/ja/web/javascript/reference/global_objects/error/message/index.html
new file mode 100644
index 0000000000..c75bb22057
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/error/message/index.html
@@ -0,0 +1,56 @@
+---
+title: Error.prototype.message
+slug: Web/JavaScript/Reference/Global_Objects/Error/message
+tags:
+ - Error
+ - JavaScript
+ - Property
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Error/message
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>message</strong></code> プロパティは、人間が読めるエラーの説明です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このプロパティは、利用可能または設定されている場合、エラーの簡潔な説明を含みます。<a href="/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> は、例外の <code>message</code> プロパティを広範囲に渡って使用します。{{jsxref("Error.prototype.name", "name")}} プロパティは <code>message</code> プロパティとの組み合わせで、Error の文字列表現を生成するために {{jsxref("Error.prototype.toString()")}} メソッドにより使用されます。</p>
+
+<p>既定で <code>message</code> プロパティは空文字列ですが、この振る舞いは、 {{jsxref("Error/Error", "Error")}} コンストラクターの第一引数としてメッセージを指定することにより、インスタンスを上書きできます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Throwing_a_custom_error" name="Throwing_a_custom_error">独自のエラーを発生させる</h3>
+
+<pre class="brush: js notranslate">var e = new Error('Could not parse input');
+// e.message は 'Could not parse input'
+throw e;
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-error.prototype.message', 'Error.prototype.message')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Error.name")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error.prototype.name")}}</li>
+ <li>{{jsxref("Error.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/error/name/index.html b/files/ja/web/javascript/reference/global_objects/error/name/index.html
new file mode 100644
index 0000000000..ba957072b1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/error/name/index.html
@@ -0,0 +1,55 @@
+---
+title: Error.prototype.name
+slug: Web/JavaScript/Reference/Global_Objects/Error/name
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Error/name
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>name</strong></code> プロパティは、エラーの種類の名称を表します。初期値は "Error" です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>既定で {{jsxref("Error")}} インスタンスには "Error" という名称が与えられます。 <code>name</code> プロパティは {{jsxref("Error.prototype.message", "message")}} プロパティに加えて、 Error の文字列表現を生成するため、{{jsxref("Error.prototype.toString()")}} メソッドにより使用されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Throwing_a_custom_error" name="Throwing_a_custom_error">独自のエラーを発生させる</h3>
+
+<pre class="brush: js notranslate">var e = new Error('Malformed input'); // e.name は 'Error'
+
+e.name = 'ParseError';
+throw e;
+// e.toString() would return 'ParseError: Malformed input'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-error.prototype.name', 'Error.prototype.name')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Error.name")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error.prototype.message")}}</li>
+ <li>{{jsxref("Error.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/error/stack/index.html b/files/ja/web/javascript/reference/global_objects/error/stack/index.html
new file mode 100644
index 0000000000..7cfbd46658
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/error/stack/index.html
@@ -0,0 +1,125 @@
+---
+title: Error.prototype.stack
+slug: Web/JavaScript/Reference/Global_Objects/Error/Stack
+tags:
+ - Error
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Error/Stack
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p>{{jsxref("Error")}} オブジェクトの標準外の <strong><code>stack</code></strong> プロパティは、呼び出された関数のトレース、つまり、その呼び出し順、呼び出したファイルの行番号、呼び出した関数の引数を提供します。スタック文字列は、最後の呼び出しから最初の呼び出しへ進み、元のグローバルスコープの呼び出しまで遡ります。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>各ステップは改行で区切られ、行の先頭は関数名 (グローバルスコープからの呼び出しでない場合)、次に <code>@</code> 記号、ファイルの場所 (エラーが投げられている時に関数がエラーコンストラクターである場合を除く)、コロン記号、ファイルの場所がある場合は行番号の順に続きます。(ただし、{{jsxref("Error")}} オブジェクトも、投げられたエラーから取り戻すため <code>fileName</code> および <code>lineNumber</code>、<code>columnNumber</code> プロパティを所有することに注意してください。これはエラーのみであり、そのトレースではありません。)</p>
+
+<p>これは Firefox だけで使用される書式であることに注意してください。スタックトレースに標準の書式はありません。しかし、Safari 6 以降と Opera 12 以前ではとてもよく似た書式を使用します。一方で、V8 JavaScript エンジンを搭載したブラウザー (Chrome、Opera 15 以降、Android Browser など) や IE 10 以降のブラウザーは異なる書式を使用します (<a href="https://web.archive.org/web/20140210004225/http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx">アーカイブされたMSDN の error.stack ドキュメント</a>を参照)。</p>
+
+<p><strong>スタック上の引数の値</strong>: Firefox 14 以前 ({{bug("744842")}}) で、関数名は、文字列に変換され括弧で囲まれた引数の値に続き、<code>@</code> 記号の直前に置かれます。オブジェクト (または配列等) は変換された形式 <code>"[object Object]"</code> で現れるため、これが実際のオブジェクトに戻され評価されることはありません。スカラー値を受け取ります (それにも関わらず、少なくとも Firefox 14 では可能です。<code>arguments.callee.caller.arguments</code> を使用し、<code>arguments.callee.caller.name</code> により、簡単に関数名を取り戻すことが可能です)。<code>"undefined"</code> は、<code>"(void 0)"</code> として記録されます。ただし、<code>"@"</code>、<code>"("</code>, <code>")"</code> (または、これらがファイル名に含まれる場合) を伴う文字列引数が渡された場合、行がそのコンポーネント部分で分かれてしまうため、これらに安易に頼ることができません。従って、Firefox 14 以降では、これが少なからず問題になります。</p>
+
+<p>ブラウザによって値を設定するタイミングが異なります。例えば Firefox は、これを {{jsxref("Error")}} オブジェクトが作成された時に設定し、PhantomJS は、{{jsxref("Error")}} が投げられた時にのみ設定します。<a href="https://web.archive.org/web/20140210004225/http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx">アーカイブされた MSDN のドキュメント</a> によれば、PhantomJS の実装とも一致するようです。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<h3 id="Using_the_stack_property" name="Using_the_stack_property">stack プロパティの使用</h3>
+
+<p>次の HTML マークアップは、<code>stack</code> プロパティの使用を実演します。</p>
+
+<pre class="brush: html notranslate">&lt;!DOCTYPE HTML&gt;
+&lt;meta charset="UTF-8"&gt;
+&lt;title&gt;Stack Trace Example&lt;/title&gt;
+&lt;body&gt;
+&lt;script&gt;
+function trace() {
+ try {
+ throw new Error('myError');
+ }
+ catch(e) {
+ alert(e.stack);
+ }
+}
+function b() {
+ trace();
+}
+function a() {
+ b(3, 4, '\n\n', undefined, {});
+}
+a('first call, firstarg');
+&lt;/script&gt;
+</pre>
+
+<p>上記のマークアップは、Windows ファイルシステム上の <code>C:\example.html</code> に保存されているものと仮定します。これは、次のテキストを含む警告メッセージを生成します:</p>
+
+<p>Firefox 30 以降では、列番号が含まれます。</p>
+
+<pre class="notranslate"><samp>trace@file:///C:/example.html:9:17
+b@file:///C:/example.html:16:13
+a@file:///C:/example.html:19:13
+@file:///C:/example.html:21:9</samp></pre>
+
+<p>Firefox 14 から Firefox 29 まで:</p>
+
+<pre class="notranslate"><samp>trace@file:///C:/example.html:9
+b@file:///C:/example.html:16
+a@file:///C:/example.html:19
+@file:///C:/example.html:21</samp></pre>
+
+<p>Firefox 13 以前は、代わりに次のテキストが生成されます。</p>
+
+<pre class="notranslate"><samp>Error("myError")@:0
+trace()@file:///C:/example.html:9
+b(3,4,"\n\n",(void 0),[object Object])@file:///C:/example.html:16
+a("first call, firstarg")@file:///C:/example.html:19
+@file:///C:/example.html:21</samp></pre>
+
+<h3 id="Stack_of_evaled_code" name="Stack_of_evaled_code">eval によるコードのスタック</h3>
+
+<p>Firefox 30 {{geckoRelease("30")}} 以降、<code>Function()</code> および <code>eval()</code> 呼び出し内のコードのエラースタックは、各呼び出しに、行番号と列番号についての詳細情報を含むスタックを生成するようになりました。関数呼び出しは、<code>"&gt; Function"</code> で示され、eval 呼び出しは、<code>"&gt; eval"</code> で示されます。{{bug("332176")}} を参照してください。</p>
+
+<pre class="brush: js notranslate">try {
+ new Function('throw new Error()')();
+} catch (e) {
+ console.log(e.stack);
+}
+
+// anonymous@file:///C:/example.html line 7 &gt; Function:1:1
+// @file:///C:/example.html:7:6
+
+
+try {
+ eval("eval('FAIL')");
+} catch (x) {
+ console.log(x.stack);
+}
+
+// @file:///C:/example.html line 7 &gt; eval line 1 &gt; eval:1:1
+// @file:///C:/example.html line 7 &gt; eval:1:1
+// @file:///C:/example.html:7:6
+</pre>
+
+<p><code>//# sourceURL</code> ディレクティブを使用して eval ソースに名前を付けることもできます。 <a href="/docs/Tools/Debugger">Debugger</a> ドキュメント内の <a href="/docs/Tools/Debugger/How_to/Debug_eval_sources">eval ソースのデバッグ</a> と <a href="http://fitzgeraldnick.com/weblog/59/" title="Naming `eval` Scripts with the `//# sourceURL` Directive">ブログ記事</a> も参照してください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>仕様の一部ではありません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Error.stack")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Components.stack">Components.stack</a></li>
+ <li>外部プロジェクト: <a class="link-https" href="https://github.com/csnover/TraceKit/">TraceKit</a> および <a class="link-https" href="https://github.com/eriwen/javascript-stacktrace">javascript-stacktrace</a></li>
+ <li>MSDN: <a class="external" href="https://web.archive.org/web/20140210004225/http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx">error.stack</a> のドキュメントのアーカイブ</li>
+ <li><a href="https://github.com/v8/v8/wiki/Stack%20Trace%20API">Overview of the V8 JavaScript stack trace API</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/error/tosource/index.html b/files/ja/web/javascript/reference/global_objects/error/tosource/index.html
new file mode 100644
index 0000000000..52085a0de4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/error/tosource/index.html
@@ -0,0 +1,58 @@
+---
+title: Error.prototype.toSource()
+slug: Web/JavaScript/Reference/Global_Objects/Error/toSource
+tags:
+ - Error
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Error/toSource
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p><code><strong>toSource()</strong></code> メソッドは、同じエラーを評価できるコードを返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>e</var>.toSource()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>エラーのソースコードを含む文字列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<h3 id="Using_toSource">Using toSource</h3>
+
+<p>{{jsxref("Error")}} インスタンス (<em><a href="/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types">NativeErrors</a></em> を含む) の <code>toSource</code> メソッドを呼び出すと、エラーのソースコードを含む文字列を返します。この文字列を評価して (ほぼ) 等しいオブジェクトを生成できます。通常、この文字列には、{{jsxref("Error")}} コンストラクターの構造に続けて下記のようにソースが含まれます。</p>
+
+<pre class="brush: js notranslate">(new<em>name</em>(<em>message</em> ,<em>fileName</em>,<em>lineNumber</em>))
+</pre>
+
+<p>これらの属性は、それぞれのエラーインスタンスの各属性に相当します。</p>
+
+<div class="note">
+<p><strong>注:</strong> この文字列の生成で <code>toSource</code> メソッドにより使用されるプロパティは変更可能であり、エラーインスタンスの生成に使用された関数、または実際にエラーが起こった場所のファイル名、行番号を正確に反映しない可能性があることに注意してください。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>仕様の一部ではありません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Error.toSource")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error.prototype.fileName")}}</li>
+ <li>{{jsxref("Error.prototype.lineNumber")}}</li>
+ <li>{{jsxref("Error.prototype.message")}}</li>
+ <li>{{jsxref("Error.prototype.name")}}</li>
+ <li>{{jsxref("Object.prototype.toSource()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/error/tostring/index.html b/files/ja/web/javascript/reference/global_objects/error/tostring/index.html
new file mode 100644
index 0000000000..c08e5ffc25
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/error/tostring/index.html
@@ -0,0 +1,100 @@
+---
+title: Error.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/Error/toString
+tags:
+ - Error
+ - JavaScript
+ - Method
+ - Prototype
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Error/toString
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>toString()</strong></code> メソッドは、指定した {{jsxref("Error")}} オブジェクトを表す文字列を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><var>e</var>.toString()</code></pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定した {{jsxref("Error")}} オブジェクトを表す文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Error")}} オブジェクトは、すべてのオブジェクトに継承される {{jsxref("Object.prototype.toString()")}} メソッドを上書きします。その意味は、次のようなものです ({{jsxref("Object")}} と {{jsxref("String")}} は元の値を持つと仮定します)。</p>
+
+<pre class="brush: js">Error.prototype.toString = function() {
+ 'use strict';
+
+ var obj = Object(this);
+ if (obj !== this) {
+ throw new TypeError();
+ }
+
+ var name = this.name;
+ name = (name === undefined) ? 'Error' : String(name);
+
+ var msg = this.message;
+ msg = (msg === undefined) ? '' : String(msg);
+
+ if (name === '') {
+ return msg;
+ }
+ if (msg === '') {
+ return name;
+ }
+
+ return name + ': ' + msg;
+};
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toString" name="Using_toString">toString() の使用</h3>
+
+<pre class="brush: js">var e = new Error('fatal error');
+console.log(e.toString()); // 'Error: fatal error'
+
+e.name = undefined;
+console.log(e.toString()); // 'Error: fatal error'
+
+e.name = '';
+console.log(e.toString()); // 'fatal error'
+
+e.message = undefined;
+console.log(e.toString()); // ''
+
+e.name = 'hello';
+console.log(e.toString()); // 'hello'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Error.toString")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error.prototype.toSource()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/escape/index.html b/files/ja/web/javascript/reference/global_objects/escape/index.html
new file mode 100644
index 0000000000..0f96a64a5e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/escape/index.html
@@ -0,0 +1,87 @@
+---
+title: escape()
+slug: Web/JavaScript/Reference/Global_Objects/escape
+tags:
+ - Deprecated
+ - JavaScript
+ - Method
+ - メソッド
+ - 非推奨
+translation_of: Web/JavaScript/Reference/Global_Objects/escape
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<div class="warning"><strong>警告:</strong> <code>escape()</code> は厳密には非推奨ではありませんが (「ウェブ標準から削除された」という意味で)、ECMA-262 標準の <a href="https://www.ecma-international.org/ecma-262/9.0/index.html#sec-additional-ecmascript-features-for-web-browsers">Annex B</a> で定義されており、その導入部には次のように書かれています。
+
+<blockquote>… この付属書で規定されているすべての言語機能と動作は、1つ以上の望ましくない特性を持ち、レガシーな使用例がない場合は、この仕様から削除されます。…<br>
+… プログラマは、新しい ECMAScript コードを書くときに、これらの機能や動作の存在を使用したり、仮定したりしてはいけません。…</blockquote>
+</div>
+
+<p><span class="seoSummary">The <code><strong>escape()</strong></code> 関数は、特定の文字を16進数のエスケープシーケンスで置き換えた新しい文字列を計算します。</span></p>
+
+<div class="blockIndicator note">
+<p><strong>メモ:</strong> この関数は、主に URL クエリ (URL の <code>?</code> に続く部分) に使われていました。 — "<code>\x<var>HH</var></code>" の形式を使用して、ふつうの文字列リテラルをエスケープするためのものでは<em>ありません</em>。 (HHは2桁の16進数であり、より高い面の Unicode 文字には「\xHH\xHHxHH」という形式が使われます。)</p>
+
+<p>文字列リテラル内のエスケープされた文字は、 <code>\x</code> を <code>%</code> に置き換えてから、 <code>decodeURIComponent()</code> 関数を使用することで展開することができます。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">escape(<var>str</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>str</var></code></dt>
+ <dd>エンコードする文字列。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>特定の文字がエスケープされた新しい文字列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>escape</code> 関数は<em>グローバルオブジェクト</em>のプロパティです。特殊文字は <code>@*_+-./</code> 以外の文字が符号化されます。</p>
+
+<p>文字の16進数形式として、文字コードの値が <code>0xFF</code> 以下になる文字は 2 桁のエスケープシーケンス <code>%<var>xx</var></code> が、それ以上の場合は 4 桁のエスケープシーケンス <code>%<strong>u</strong><var>xxxx</var></code><code>%<strong>u</strong><var>xxxx</var></code> が使われます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js">escape('abc123'); // "abc123"
+escape('äöü'); // "%E4%F6%FC"
+escape('ć'); // "%u0107"
+
+// 特殊文字
+escape('@*_+-./'); // "@*_+-./"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-escape-string', 'escape')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<div class="hidden">リファレンスページにポリフィルを追加しないでください。詳しくは、 <a href="https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500">https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500</a> を参照してください。</div>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.escape")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("encodeURI")}}</li>
+ <li>{{jsxref("encodeURIComponent")}}</li>
+ <li>{{jsxref("unescape")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/eval/index.html b/files/ja/web/javascript/reference/global_objects/eval/index.html
new file mode 100644
index 0000000000..658cf6c370
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/eval/index.html
@@ -0,0 +1,307 @@
+---
+title: eval()
+slug: Web/JavaScript/Reference/Global_Objects/eval
+tags:
+ - Evaluating JavaScript
+ - JavaScript
+ - Method
+ - Reference
+ - Warning
+ - eval
+ - メソッド
+ - 警告
+translation_of: Web/JavaScript/Reference/Global_Objects/eval
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p><code><strong>eval()</strong></code> 関数は、文字列として表現された JavaScript コードを評価します。</p>
+
+<div class="blockIndicator warning">
+<p><strong>警告:</strong> 文字列から JavaScript を実行することは、非常に大きなセキュリティリスクを伴います。<code>eval()</code> を使用すると、悪意のある者が任意のコードを実行するのはあまりにも簡単です。下記の <a href="#Never_use_eval!">eval() を使わないでください!</a>を参照してください。</p>
+</div>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-eval.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>eval(<em>string</em>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>string</code></dt>
+ <dd>JavaScript の式、文、または一連の文を表す文字列です。式には、既存オブジェクトの変数およびプロパティを含められます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられたコードの評価結果値を返します。評価結果が空の場合は、{{jsxref("undefined")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>eval()</code> はグローバルオブジェクトの関数プロパティです。</p>
+
+<p><code>eval()</code> 関数の引数は文字列です。その文字列が式に相当する場合、<code>eval()</code> は引数を式として評価します。引数が 1 つ以上の JavaScript 文に相当する場合、<code>eval()</code> は引数を文として評価します。算術式を評価する目的で <code>eval()</code> を呼び出してはいけません。JavaScript は算術式を自動的に評価します。</p>
+
+<p>算術式を文字列として構築した場合、後で <code>eval()</code> を使ってそれを評価することができます。例えば <code>x</code> という変数があるとします。ある変数に "<code>3 * x + 2</code>" といった式の文字列値を代入し、そしてスクリプトの後方で <code>eval()</code> を呼び出すことで、<code>x</code> が関わる式の評価を後回しにできます。</p>
+
+<p><code>eval()</code> の引数が文字列でない場合、<code>eval()</code> は引数を変更せずに返します。次の例では <code>String</code> コンストラクターが指定されているため、<code>eval()</code> は文字列を評価したものではなく <code>String</code> オブジェクトを返します。</p>
+
+<pre class="brush:js notranslate">eval(new String('2 + 2')); // "2 + 2" を含む String オブジェクトを返します
+eval('2 + 2'); // 4 を返します
+</pre>
+
+<p>この制約は、<code>toString</code> を使用する一般的な方法で回避できます。</p>
+
+<pre class="brush:js notranslate">var expression = new String('2 + 2');
+eval(expression.toString()); // 4 を返します
+</pre>
+
+<p><code>eval</code> 関数を <code>eval</code> 以外の名前を参照して呼び出すことで<em>間接的に</em>使用した場合、<a href="http://www.ecma-international.org/ecma-262/5.1/#sec-10.4.2">ECMAScript 5</a> 以降ではローカルスコープではなくグローバルスコープで機能します。これは例えると、関数定義によりグローバル関数が作成されるため、評価されたコードはその呼び出されたスコープ内のローカル変数にアクセスできなくなる、ということです。</p>
+
+<pre class="brush:js notranslate">function test() {
+ var x = 2, y = 4;
+ console.log(eval('x + y')); // 直接呼び出し、ローカルスコープを使用し、結果は 6 となる
+ var geval = eval; // グローバルスコープでの eval呼び出しと同等
+ console.log(geval('x + y')); // 間接呼び出し、グローバルスコープを使用し、x は未定義となるため ReferenceError が発生する
+ (0, eval)('x + y'); // 間接的な呼び出しのもう一つの例
+}
+</pre>
+
+<h2 id="Never_use_eval!" name="Never_use_eval!">eval() を使わないでください!</h2>
+
+<p><code>eval()</code> は呼び出し元の権限で渡されたコードを実行する危険な関数です。悪意のある第三者に影響を受ける可能性のある文字列で <code>eval()</code> を実行すると、あなたのウェブページ / 拡張機能の権限でユーザーのマシン上で悪意のあるコードを実行してしまう可能性があります。さらに重要なことに、サードパーティのコードは <code>eval()</code> が呼び出されたスコープを見ることができるので、類似の {{jsxref("Global_Objects/Function", "Function")}} では影響を受けない方法でも攻撃を受ける可能性があります。</p>
+
+<p>また、ここ最近の JavaScript では多くの構造が JS エンジンによって最適化されているため、<code>eval()</code> は他の方法よりも低速でもあります。</p>
+
+<p>さらに、現代の JavaScript インタープリターは JavaScript を機械語に変換します。これは、変数の名前の概念がすべて消滅することを意味します。したがって、<code>eval()</code> を使用すると、ブラウザーは長い高価な変数名検索を実行して、変数が機械語のどこに存在しているかを把握し、その値を設定します。さらに、<code>eval()</code> が変数の型の変更など、その変数に新しい変数をもたらす可能性もあり、生成されたすべての機械語を再評価して補正させられる可能性があります。</p>
+
+<p>幸い、<code>eval()</code> にはとても良い代替策があります。{{jsxref("Function", "window.Function()")}} を使用することです。危険な <code>eval()</code> を使用したコードから <code>Function()</code> を使用したコードに変換する方法の例として、以下を参照してください。</p>
+
+<p><code>eval()</code> を使用した悪いコード:</p>
+
+<pre class="brush:js notranslate">function looseJsonParse(obj){
+ return eval("(" + obj + ")");
+}
+console.log(looseJsonParse(
+ "{a:(4-1), b:function(){}, c:new Date()}"
+))
+</pre>
+
+<p><code>eval()</code> を使用しないより良いコード:</p>
+
+<pre class="brush:js notranslate">function looseJsonParse(obj){
+ return Function('"use strict";return (' + obj + ')')();
+}
+console.log(looseJsonParse(
+ "{a:(4-1), b:function(){}, c:new Date()}"
+))
+</pre>
+
+<p>上記の 2 つのコードスニペットを比較すると、2 つのコードスニペットが同じように動作するように見えるかもしれませんが、よく考えてみてください。<code>eval()</code> の方は非常に遅いのです。評価されたオブジェクトの中の <code>c: new Date()</code> に注目してください。<code>eval()</code> を使用しない関数では、オブジェクトはグローバルスコープで評価されているので、ブラウザーは <code>Date</code> が <code>window.Date</code> を参照しており、<code>Date</code> というローカル変数ではないと考えて安全です。しかし、コードが次のようになっている場合 <code>eval()</code> を使ったコードでは、ブラウザーがこれを仮定することができません。</p>
+
+<pre class="brush:js notranslate">function Date(n){
+ return ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"][n%7 || 0];
+}
+function looseJsonParse(obj){
+ return eval("(" + obj + ")");
+}
+console.log(looseJsonParse(
+ "{a:(4-1), b:function(){}, c:new Date()}"
+))
+</pre>
+
+<p>したがって、コードの <code>eval()</code> バージョンでは、ブラウザーは高価なルックアップ呼び出しを行い、<code>Date()</code> というローカル変数があるかどうかを確認します。これは <code>Function()</code> と比較して非常に非効率的です。</p>
+
+<p>関連する状況で、実際に <code>Date()</code> 関数を <code>Function()</code> 内のコードから呼び出すことができるようにしたいとしたらどうでしょうか。簡単な方法を取って、<code>eval()</code> に戻るべきでしょうか。いいえ、決してそうではありません。代わりに、以下の方法を試してみてください。</p>
+
+<pre class="brush:js notranslate">function Date(n){
+ return ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"][n%7 || 0];
+}
+function runCodeWithDateFunction(obj){
+ return Function('"use strict";return (' + obj + ')')()(
+ Date
+ );
+}
+console.log(runCodeWithDateFunction(
+ "function(Date){ return Date(5) }"
+))
+</pre>
+
+<p>上記のコードは、三重に入れ子になった関数があるために非効率的で遅いと思えるかもしれませんが、上記の効率的なメソッドの利点を分析してみましょう。</p>
+
+<ul>
+ <li>これにより、<code>runCodeWithDateFunction()</code> に渡される文字列のコードを短縮することができます。</li>
+ <li>関数呼び出しのオーバーヘッドが最小になり、コードサイズがはるかに小さくなるという利点には十分な価値があります。</li>
+ <li><code>Function()</code> を使用することで、コードのパフォーマンスを向上させる <code>"use strict";</code> をより簡単に利用できるようになります。</li>
+ <li>このコードでは <code>eval()</code> を使用しないので、そうでない場合に比べて桁違いに高速になります。</li>
+</ul>
+
+<p>最後に、短縮を検討してみましょう。上記のように <code>Function()</code> を使用すると、<code>runCodeWithDateFunction</code> に渡されたコード文字列をはるかに効率的に縮小することができます。関数の引数名は、下の縮小されたコードで見られるように縮小することができるからです。</p>
+
+<pre class="brush:js notranslate">console.log(Function('"use strict";return(function(a){return a(5)})')()(function(a){
+return"Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" ")[a%7||0]}));</pre>
+
+<p>一般的な用途においては、さらに安全 (そして高速) な <code>eval()</code> または <code>Function()</code> の代替手段があります。</p>
+
+<h3 id="Accessing_member_properties" name="Accessing_member_properties">メンバーのプロパティへのアクセス</h3>
+
+<p>プロパティ名からプロパティ自体への変換を行うのに <code>eval()</code> を使用しないでください。アクセスされるオブジェクトのプロパティがコードが実行されるまでわからない場合の例を考えてみましょう。これは <code>eval()</code> で行うことができます。</p>
+
+<pre class="brush:js notranslate">var obj = { a: 20, b: 30 };
+var propName = getPropName(); // "a" または "b" が返される
+
+eval( 'var result = obj.' + propName );
+</pre>
+
+<p>ただし、ここで <code>eval()</code> は必要ありません。実際、この使い方はお勧めできません。代わりに<a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">プロパティアクセサー</a>を使用したほうが、より速くて安全です。</p>
+
+<pre class="brush:js notranslate">var obj = { a: 20, b: 30 };
+var propName = getPropName(); // "a" または "b" が返される
+var result = obj[ propName ]; // obj[ "a" ] は obj.a と同じ</pre>
+
+<p>このメソッドを使用して子孫プロパティにアクセスすることもできます。<code>eval()</code> を使うと以下のようになります。</p>
+
+<pre class="brush:js notranslate">var obj = {a: {b: {c: 0}}};
+var propPath = getPropPath(); // returns e.g. "a.b.c"
+
+eval( 'var result = obj.' + propPath );
+</pre>
+
+<p>ここで <code>eval()</code> を回避するには、プロパティのパスを分割し、様々なプロパティをループすることで行うことができます。</p>
+
+<pre class="brush:js notranslate">function getDescendantProp(obj, desc) {
+ var arr = desc.split('.');
+ while (arr.length) {
+ obj = obj[arr.shift()];
+ }
+ return obj;
+}
+
+var obj = {a: {b: {c: 0}}};
+var propPath = getPropPath(); // "a.b.c" などを返す
+var result = getDescendantProp(obj, propPath);</pre>
+
+<p>プロパティの設定も同様に行うことができます。</p>
+
+<pre class="brush:js notranslate">function setDescendantProp(obj, desc, value) {
+ var arr = desc.split('.');
+ while (arr.length &gt; 1) {
+ obj = obj[arr.shift()];
+ }
+ return obj[arr[0]] = value;
+}
+
+var obj = {a: {b: {c: 0}}};
+var propPath = getPropPath(); // "a.b.c" などを返す
+var result = setDescendantProp(obj, propPath, 1); // obj.a.b.c will now be 1</pre>
+
+<h3 id="Use_functions_instead_of_evaluating_snippets_of_code" name="Use_functions_instead_of_evaluating_snippets_of_code">コードの断片を評価する場合、代わりに関数を使う</h3>
+
+<p>JavaScript {{interwiki("wikipedia","第一級関数")}}を備えており、関数を他の API の引数としたり、変数やオブジェクトのプロパティに保存したりすることができます。多くの DOM API はこれを考慮して作られているので、次のように書くことができます (また、書くべきです)。</p>
+
+<pre class="brush: js notranslate">// setTimeout(" ... ", 1000) を使う代わりに
+setTimeout(function() { ... }, 1000);
+
+// elt.setAttribute("onclick", " ... ") を使う代わりに
+elt.addEventListener('click', function() { ... } , false); </pre>
+
+<p>文字列を連結せずにパラメーター化した関数を作成する方法としては、<a href="/ja/docs/Web/JavaScript/Closures">クロージャ</a>を使う方法も便利です。</p>
+
+<h3 id="Parsing_JSON_converting_strings_to_JavaScript_objects" name="Parsing_JSON_converting_strings_to_JavaScript_objects">JSON の解析 (文字列を JavaScript オブジェクトに変換)</h3>
+
+<p><code>eval()</code> の呼び出しに使おうとしている文字列がコードではなくデータ (例えば <code>"[1, 2, 3]"</code> で配列を表す) を含むものであれば、{{Glossary("JSON")}} に切り替えることを検討してください。これは JavaScript のサブセットを使用することで、文字列でデータを表現することができます。<a href="/ja/docs/Downloading_JSON_and_JavaScript_in_extensions">Downloading JSON and JavaScript in extensions</a> の記事も参照してください。</p>
+
+<p>JSON の構文は JavaScript の構文に比べて制限があり、多くの有効な JavaScript リテラルが JSON としては解釈されないことに注意してください。例えば、最後にカンマを付けることは JSON では許されておらず、オブジェクトリテラル内のプロパティ名 (キー) は引用符で囲む必要があります。後で JSON として解析される文字列を生成するには、JSON シリアライザーを使うようにしてください。</p>
+
+<h3 id="Pass_data_instead_of_code" name="Pass_data_instead_of_code">コードの代わりにデータを渡す</h3>
+
+<p>例えば、ウェブページの内容を取得できるよう設計された拡張であれば、JavaScript コードの代わりに <a href="/ja/docs/Web/XPath">XPath</a> を使って取得ルールを定義できます。</p>
+
+<h3 id="Run_code_with_limited_privileges" name="Run_code_with_limited_privileges">制限された権限でコードを実行する</h3>
+
+<p>どうしてもコードを実行したければ、制限された権限下での実行を検討しましょう。このアドバイスは、拡張機能や XUL アプリケーション上であれば <a href="/ja/docs/Components.utils.evalInSandbox">Components.utils.evalInSandbox</a> を使用すれば適用できます。</p>
+
+<h2 id="Examples" name="Examples">使用例</h2>
+
+<h3 id="Using_eval" name="Using_eval"><code>eval</code> を使用する</h3>
+
+<p>次のコードでは、<code>eval</code> を含むどちらの文も 42 を返します。最初のコードは文字列 "<code>x + y + 1</code>" を評価します。2 番目のコードは文字列 "<code>42</code>" を評価します。</p>
+
+<pre class="brush:js notranslate">var x = 2;
+var y = 39;
+var z = '42';
+eval('x + y + 1'); // 42 が返される
+eval(z); // 42 が返される
+</pre>
+
+<h3 id="Using_eval_to_evaluate_a_string_of_JavaScript_statements" name="Using_eval_to_evaluate_a_string_of_JavaScript_statements"><code>eval</code> を使用して JavaScript 文の文字列を評価する</h3>
+
+<p>次の例は、<code>eval()</code> を使用して文字列 <code>str</code> を評価しています。この文字列は <code>x</code> が 5 の場合に <code>z</code> に 42 の値を代入し、それ以外の場合は <code>z</code> に 0 を代入する JavaScript 文で構成されています。2 番目の文が実行される時、<code>eval</code> によってこれらの文が実行され、そして一連の文を評価して <code>z</code> に代入される値を返します。</p>
+
+<pre class="brush:js notranslate">var x = 5;
+var str = "if (x == 5) {console.log('z is 42'); z = 42;} else z = 0;";
+
+console.log('z is ', eval(str));</pre>
+
+<p>複数の値を定義した場合、最後の値が返されます。</p>
+
+<pre class="brush:js notranslate">var x = 5;
+var str = "if (x == 5) {console.log('z is 42'); z = 42; x = 420; } else z = 0;";
+
+console.log('x is ', eval(str)); // z is 42 x is 420
+</pre>
+
+<h3 id="Last_expression_is_evaluated" name="Last_expression_is_evaluated">評価される最後の式について</h3>
+
+<p><code>eval()</code> は最後に評価された式の値を返します。</p>
+
+<pre class="brush:js notranslate">var str = 'if ( a ) { 1 + 1; } else { 1 + 2; }';
+var a = true;
+var b = eval(str); // 2 が返される
+
+console.log('b is : ' + b);
+
+a = false;
+b = eval(str); // 3 が返される
+
+console.log('b is : ' + b);</pre>
+
+<h3 id="関数定義の文字列の_eval_には先頭と末尾に_と_が必要">関数定義の文字列の <code>eval</code> には先頭と末尾に "(" と ")" が必要</h3>
+
+<pre class="brush:js notranslate">var fctStr1 = 'function a() {}'
+var fctStr2 = '(function a() {})'
+var fct1 = eval(fctStr1) // undefined が返される
+var fct2 = eval(fctStr2) // 関数が返される
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-eval-x', 'eval')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.eval")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Global_Objects/uneval", "uneval()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">プロパティアクセサー</a></li>
+ <li><a href="/ja/Add-ons/WebExtensions/Content_scripts#Using_eval()_in_content_scripts">WebExtensions: コンテンツスクリプト内で eval() を使う</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/evalerror/evalerror/index.html b/files/ja/web/javascript/reference/global_objects/evalerror/evalerror/index.html
new file mode 100644
index 0000000000..6f5d548878
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/evalerror/evalerror/index.html
@@ -0,0 +1,76 @@
+---
+title: EvalError() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/EvalError/EvalError
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/EvalError/EvalError
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>EvalError</code></strong> コンストラクターは、グローバルの {{jsxref("Global_Objects/eval", "eval()")}} 関数に関する新しいエラーを生成します。この例外はもう JavaScript からは使用されていませんが、 <code>EvalError</code> オブジェクトは互換性のために残っています。object</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new EvalError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>message</var></code> {{optional_inline}}</dt>
+ <dd>人間が読むためのエラーの説明です。</dd>
+ <dt><code><var>fileName</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードを含むファイルの名前です。</dd>
+ <dt><code><var>lineNumber</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードの行番号です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p><code>EvalError</code> は現在の ECMAScript 仕様書では使用されておらず、ランタイムから発生することもありません。しかし、このオブジェクト自身は仕様書の以前のバージョンとの後方互換性のために残っています。</p>
+
+<h3 id="Creating_an_EvalError" name="Creating_an_EvalError">EvalError の生成</h3>
+
+<pre class="brush: js notranslate">try {
+ throw new EvalError('Hello', 'someFile.js', 10);
+} catch (e) {
+ console.log(e instanceof EvalError); // true
+ console.log(e.message); // "Hello"
+ console.log(e.name); // "EvalError"
+ console.log(e.fileName); // "someFile.js"
+ console.log(e.lineNumber); // 10
+ console.log(e.columnNumber); // 0
+ console.log(e.stack); // "@Scratchpad/2:2:9\n"
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-nativeerror-constructors', 'NativeError constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.EvalError.EvalError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+ <li>{{jsxref("Global_Objects/eval", "eval()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/evalerror/index.html b/files/ja/web/javascript/reference/global_objects/evalerror/index.html
new file mode 100644
index 0000000000..f80382b2ad
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/evalerror/index.html
@@ -0,0 +1,87 @@
+---
+title: EvalError
+slug: Web/JavaScript/Reference/Global_Objects/EvalError
+tags:
+ - Class
+ - EvalError
+ - JavaScript
+ - Object
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/EvalError
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>EvalError</code></strong> オブジェクトは、グローバルの {{jsxref("Global_Objects/eval", "eval()")}} 関数に関するエラーを示します。この例外はもう JavaScript からは発生しなくなっていますが、互換性のために <code>EvalError</code> オブジェクトが残っています。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("EvalError/EvalError", "EvalError()")}}</dt>
+ <dd>新しい <code>EvalError</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.message", "EvalError.prototype.message")}}</dt>
+ <dd>エラーメッセージです。 ECMA-262 において {{jsxref("EvalError")}} は自身の <code>message</code> プロパティを提供するべきとされていますが、 <a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> では {{jsxref("Error.prototype.message")}} を継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.name", "EvalError.prototype.name")}}</dt>
+ <dd>エラー名です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.fileName", "EvalError.prototype.fileName")}}</dt>
+ <dd>このエラーが発生したファイルのパスです。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.lineNumber", "EvalError.prototype.lineNumber")}}</dt>
+ <dd>このエラーが発生したファイル内の行番号です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.columnNumber", "EvalError.prototype.columnNumber")}}</dt>
+ <dd>このエラーが発生した行内の桁番号です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.stack", "EvalError.prototype.stack")}}</dt>
+ <dd>スタックトレースです。 {{jsxref("Error")}} から継承しています。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p><code>EvalError</code> は現在の ECMAScript 仕様書では使われておらず、このためランタイムからも投げられません。しかしオブジェクト自体は、以前の仕様書との後方互換性のために残っています。</p>
+
+<h3 id="Creating_an_EvalError" name="Creating_an_EvalError">EvalError の生成</h3>
+
+<pre class="brush: js notranslate">try {
+ throw new EvalError('Hello', 'someFile.js', 10);
+} catch (e) {
+ console.log(e instanceof EvalError); // true
+ console.log(e.message); // "Hello"
+ console.log(e.name); // "EvalError"
+ console.log(e.fileName); // "someFile.js"
+ console.log(e.lineNumber); // 10
+ console.log(e.columnNumber); // 0
+ console.log(e.stack); // "@Scratchpad/2:2:9\n"
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.EvalError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+ <li>{{jsxref("Global_Objects/eval", "eval()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/finalizationregistry/cleanupsome/index.html b/files/ja/web/javascript/reference/global_objects/finalizationregistry/cleanupsome/index.html
new file mode 100644
index 0000000000..c25d3dd476
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/finalizationregistry/cleanupsome/index.html
@@ -0,0 +1,74 @@
+---
+title: FinalizationRegistry.prototype.cleanupSome()
+slug: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/cleanupSome
+tags:
+ - FinalizationRegistry
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/cleanupSome
+---
+<div>{{JSRef}}</div>
+
+<p><strong>cleanupSome()</strong> メソッドは、 {{jsxref("FinalizationRegistry")}} 内のオブジェクトのうち、まだコールバックが呼ばれていないが回収されているオブジェクトの数が実装で選択された場合に、クリーンアップコールバックを起動します。このメソッドはオプションです。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>registry</var>.cleanupSome([<var>callback</var>]);</code>
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code> {{optional_inline}}</dt>
+ <dd>この <code>cleanupSome</code> への呼び出しによって起動されるコールバックだけに使用するコールバックを指定します。指定した場合、このコールバックは <code>FinalizationRegistry</code> で作成されたものの代わりに使用されます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>undefined</code> です。</p>
+
+<h2 id="Notes" name="Notes">注</h2>
+
+<p>通常、この関数を呼び出すことはありません。コールバックを適切に行うためには、 JavaScript エンジンのガベージコレクターに任せてください。この関数は主に、イベントループを発生させない、通常の JavaScript コードよりも WebAssembly で出てくる可能性の高い、長期に実行されるコードに対応するために存在します。また、コールバックが呼び出されない場合があることにも注意してください (例えば、ターゲットが回収されたレジストリ項目が存在しない場合)。</p>
+
+<p>レジストリからクリーンアップされる (クリーンアップコールバックを呼び出す) 回収オブジェクトの項目数は、実装で定義されています。実装によっては、対象となる項目を一つだけ削除したり、対象となるすべての項目を削除したり、あるいはその間のどこかで削除したりすることもあります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_cleanupSome" name="Using_cleanupSome">cleanupSome の使用</h3>
+
+<pre class="brush: js notranslate">registry.cleanupSome?.(heldValue =&gt; {
+ // ...
+});
+</pre>
+
+<p>このメソッドはオプションであり、実装によってはこのメソッドを持たない場合があります。詳細は <a href="https://github.com/whatwg/html/issues/5446">HTML issue #5446</a> を参照してください。このメソッドはオプションなので、それを呼び出す前にそのメソッドが存在することを確認する必要があります。そのための一つの方法は、上の例のように<a href="/ja/docs/Web/JavaScript/Reference/Operators/Optional_chaining">オプション連結</a> (<code>?.</code>) を使用することです。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WeakRefs', '#sec-finalization-registry.prototype.cleanupSome', 'FinalizationRegistry.prototype.cleanupSome')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.FinalizationRegistry.cleanupSome")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("FinalizationRegistry")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/finalizationregistry/finalizationregistry/index.html b/files/ja/web/javascript/reference/global_objects/finalizationregistry/finalizationregistry/index.html
new file mode 100644
index 0000000000..e8ca492f4d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/finalizationregistry/finalizationregistry/index.html
@@ -0,0 +1,66 @@
+---
+title: FinalizationRegistry() コンストラクター
+slug: >-
+ Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/FinalizationRegistry
+tags:
+ - Constructor
+ - FinalizationRegistry
+ - JavaScript
+ - Reference
+ - コンストラクター
+translation_of: >-
+ Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/FinalizationRegistry
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>FinalizationRegistry</code></strong> コンストラクターは、指定されたコールバックを使用する {{jsxref("FinalizationRegistry")}} オブジェクトを生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new FinalizationRegistry([<var>callback</var>]);
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code> {{optional_inline}}</dt>
+ <dd>レジストリが使用するコールバック関数です。指定された場合、関数である必要があります。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_a_new_registry" name="Creating_a_new_registry">新しいレジストリの生成</h3>
+
+<p>コールバックを渡してレジストリを生成します。</p>
+
+<pre class="brush: js notranslate">const registry = new FinalizationRegistry(heldValue =&gt; {
+ // ....
+});
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WeakRefs', '#sec-finalization-registry-constructor', 'FinalizationRegistry constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.FinalizationRegistry.FinalizationRegistry")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("FinalizationRegistry")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/finalizationregistry/index.html b/files/ja/web/javascript/reference/global_objects/finalizationregistry/index.html
new file mode 100644
index 0000000000..0277d4bde9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/finalizationregistry/index.html
@@ -0,0 +1,152 @@
+---
+title: FinalizationRegistry
+slug: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry
+tags:
+ - Class
+ - FinalizationRegistry
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>FinalizationRegistry</code></strong> オブジェクトにより、オブジェクトがガベージコレクションで回収されるときにコールバックを要求することができます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>FinalizationRegistry</code> は、レジストリに登録されているオブジェクトが<em>回収</em>される (ガベージコレクションされる) 時に<em>クリーンアップコールバック</em>を要求する方法を提供します。(クリーンアップコールバックは<em>ファイナライザー</em>と呼ばれることもあります。)</p>
+
+<div class="note">
+<p><strong>注:</strong> Cleanup callbacks should not be used for essential program logic. 詳しくは <a href="#Notes_on_cleanup_callbacks">Notes on cleanup callbacks</a> を見てください。</p>
+</div>
+
+<p>コールバックで渡すレジストリを作成します。</p>
+
+<pre class="brush: js notranslate">const registry = new FinalizationRegistry(heldValue =&gt; {
+ // ....
+});
+</pre>
+
+<p>次に、 <code>register</code> メソッドを呼び出して、クリーンアップコールバックを行いたいオブジェクトを登録し、そのオブジェクトと<em>保持値</em>を渡します。</p>
+
+<pre class="brush: js notranslate">registry.register(theObject, "some value");
+</pre>
+
+<p>レジストリがオブジェクトへの強い参照を保持すると、目的に反してしまうので、 (レジストリが強い参照を保持していれば、そのオブジェクトは決して回収されない)、強い参照は保持はしません。</p>
+
+<p><code>theObject</code> が回収された場合、クリーンアップコールバックは、指定した<em>保持値</em> (上では <code>"some value"</code>) で呼び出される可能性があります。保持値は、プリミティブでもオブジェクトでも、 <code>undefined</code> であっても構いません。保持値がオブジェクトの場合、レジストリはその値への<em>強い</em>参照を保持します (これにより、後でクリーンアップコールバックに渡すことができます)。</p>
+
+<p>オブジェクトの登録を解除したい場合は、三番目の値を渡します。 これは、後でレジストリのレジストリの <code>unregister</code> 関数をコールしてオブジェクトの登録を解除する際に使用する<em>登録解除トークン</em>です。レジストリは、登録解除トークンへの弱い参照のみを保持します。</p>
+
+<p>よくオブジェクト自身が登録解除トークンとして使われ、これは良い結果になります。</p>
+
+<pre class="brush: js notranslate">registry.register(theObject, "some value", theObject);
+// ...some time later, if you don't care about `theObject` anymore...
+registry.unregister(theObject);
+</pre>
+
+<p>ただし、同じオブジェクトである必要はありません。異なるものでも構いません。</p>
+
+<pre class="brush: js notranslate">registry.register(theObject, "some value", tokenObject);
+// ...some time later, if you don't care about `theObject` anymore...
+registry.unregister(tokenObject);
+</pre>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("FinalizationRegistry/FinalizationRegistry", "FinalizationRegistry()")}}</dt>
+ <dd>新しい <code>FinalizationRegistry</code> オブジェクト生成します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("FinalizationRegistry.register", "FinalizationRegistry.prototype.register()")}}</dt>
+ <dd>Registers an object with the registry in order to get a cleanup callback when/if the object is garbage-collected.</dd>
+ <dt>{{jsxref("FinalizationRegistry.unregister", "FinalizationRegistry.prototype.unregister()")}}</dt>
+ <dd>Unregisters an object from the registry.</dd>
+ <dt>{{jsxref("FinalizationRegistry.cleanupSome", "FinalizationRegistry.prototype.cleanupSome()")}}</dt>
+ <dd><em>(Optional method.)</em> Proactively requests cleanup callbacks for reclaimed objects.</dd>
+</dl>
+
+<h2 id="Avoid_where_possible" name="Avoid_where_possible">Avoid where possible</h2>
+
+<p>Correct use of <code>FinalizationRegistry</code> takes careful thought, and it's best avoided if possible. It's also important to avoid relying on any specific behaviors not guaranteed by the specification. When, how, and whether garbage collection occurs is down to the implementation of any given JavaScript engine. Any behavior you observe in one engine may be different in another engine, in another version of the same engine, or even in a slightly different situation with the same version of the same engine. Garbage collection is a hard problem that JavaScript engine implementers are constantly refining and improving their solutions to.</p>
+
+<p>Here are some specific points that the authors of the WeakRef proposal that FinalizationRegistry is part of included in its <a href="https://github.com/tc39/proposal-FinalizationRegistrys/blob/master/README.md">explainer document</a>:</p>
+
+<blockquote>
+<p><a href="https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)">Garbage collectors</a> are complicated. If an application or library depends on GC cleaning up a FinalizationRegistry or calling a finalizer [cleanup callback] in a timely, predictable manner, it's likely to be disappointed: the cleanup may happen much later than expected, or not at all. Sources of variability include:</p>
+
+<ul>
+ <li>One object might be garbage-collected much sooner than another object, even if they become unreachable at the same time, e.g., due to generational collection.</li>
+ <li>Garbage collection work can be split up over time using incremental and concurrent techniques.</li>
+ <li>Various runtime heuristics can be used to balance memory usage, responsiveness.</li>
+ <li>The JavaScript engine may hold references to things which look like they are unreachable (e.g., in closures, or inline caches).</li>
+ <li>Different JavaScript engines may do these things differently, or the same engine may change its algorithms across versions.</li>
+ <li>Complex factors may lead to objects being held alive for unexpected amounts of time, such as use with certain APIs.</li>
+</ul>
+</blockquote>
+
+<h2 id="Notes_on_cleanup_callbacks" name="Notes_on_cleanup_callbacks">Notes on cleanup callbacks</h2>
+
+<p>Some notes on cleanup callbacks:</p>
+
+<ul>
+ <li>Developers shouldn't rely on cleanup callbacks for essential program logic. Cleanup callbacks may be useful for reducing memory usage across the course of a program, but are unlikely to be useful otherwise.</li>
+ <li>A conforming JavaScript implementation, even one that does garbage collection, is not required to call cleanup callbacks. When and whether it does so is entirely down to the implementation of the JavaScript engine. When a registered object is reclaimed, any cleanup callbacks for it may be called then, or some time later, or not at all.</li>
+ <li>It's likely that major implementations will call cleanup callbacks at some point during execution, but those calls may be substantially after the related object was reclaimed.</li>
+ <li>There are also situations where even implementations that normally call cleanup callbacks are unlikely to call them:
+ <ul>
+ <li>When the JavaScript program shuts down entirely (for instance, closing a tab in a browser).</li>
+ <li>When the <code>FinalizationRegistry</code> instance itself is no longer reachable by JavaScript code.</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_a_new_registry" name="Creating_a_new_registry">Creating a new registry</h3>
+
+<p>You create the registry passing in the callback:</p>
+
+<pre class="brush: js notranslate">const registry = new FinalizationRegistry(heldValue =&gt; {
+ // ....
+});
+</pre>
+
+<h3 id="Registering_objects_for_cleanup" name="Registering_objects_for_cleanup">Registering objects for cleanup</h3>
+
+<p>Then you register any objects you want a cleanup callback for by calling the `register` method, passing in the object and a *held value* for it:</p>
+
+<pre class="brush: js notranslate">registry.register(theObject, "some value");</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WeakRefs', '#sec-finalization-registry-objects', 'FinalizationRegistry')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.FinalizationRegistry")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakRef")}}</li>
+ <li>{{jsxref("WeakSet")}}</li>
+ <li>{{jsxref("WeakMap")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/finalizationregistry/register/index.html b/files/ja/web/javascript/reference/global_objects/finalizationregistry/register/index.html
new file mode 100644
index 0000000000..fc8fbe9475
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/finalizationregistry/register/index.html
@@ -0,0 +1,80 @@
+---
+title: FinalizationRegistry.prototype.register()
+slug: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/register
+tags:
+ - FinalizationRegistry
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/register
+---
+<div>{{JSRef}}</div>
+
+<p><code>register()</code> メソッドはオブジェクトを {{jsxref("FinalizationRegistry")}} インスタンスへ登録し、オブジェクトがガベージコレクションで回収された場合、レジストリのコールバックが呼び出されるようになります。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>registry</var>.register(<var>target</var>, <var>heldValue</var>, [<var>unregisterToken</var>]);</code>
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>登録する対象オブジェクトです。</dd>
+ <dt><code><var>heldValue</var></code></dt>
+ <dd>このオブジェクトのためにファイナライザーへ渡す値です。これは <code><var>target</var></code> オブジェクトにすることはできません。</dd>
+ <dt><code><var>unregisterToken</var></code> {{optional_inline}}</dt>
+ <dd>のちに対象オブジェクトを登録解除するために <code>unregister</code> メソッドと共に使用するトークンです。提供された場合 (かつ <code>undefined</code> ではない場合)、これはオブジェクトである必要があります。提供されなかった場合は、対象を登録解除することはできません。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>undefined</code> です。</p>
+
+<h2 id="Notes" name="Notes">注</h2>
+
+<p>重要な注意点については、 {{jsxref("FinalizationRegistry")}} ページの<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry#Avoid_where_possible">可能な限り避ける</a>と<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry#Notes_on_cleanup_callbacks">クリーンアップコールバックに関する注意事項</a>の部分を参照してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_register" name="Using_register">register の使用</h3>
+
+<p>次の例は <code><var>target</var></code> で参照される対象オブジェクトを保持値 <code>"some value"</code> で登録し、対象オブジェクト自身を登録解除トークンとして渡します。</p>
+
+<pre class="brush: js notranslate">registry.register(target, "some value", target);
+</pre>
+
+<p>次の例は <code><var>target</var></code> で参照される対象オブジェクトを他のオブジェクトを保持値として登録し、登録解除トークンを渡していません (すなわち <code><var>target</var></code> は登録解除できません)。</p>
+
+<pre class="brush: js notranslate">registry.register(target, {"useful": "info about target"});
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WeakRefs', '#sec-finalization-registry.prototype.register', 'FinalizationRegistry.prototype.register')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.FinalizationRegistry.register")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("FinalizationRegistry")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/finalizationregistry/unregister/index.html b/files/ja/web/javascript/reference/global_objects/finalizationregistry/unregister/index.html
new file mode 100644
index 0000000000..3b2245b146
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/finalizationregistry/unregister/index.html
@@ -0,0 +1,134 @@
+---
+title: FinalizationRegistry.prototype.unregister()
+slug: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/unregister
+tags:
+ - FinalizationRegistry
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/unregister
+---
+<div>{{JSRef}}</div>
+
+<p><code>unregister</code> は対象のオブジェクトを {{jsxref("FinalizationRegistry")}} インスタンスから登録解除します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>registry</var>.unregister(<var>unregisterToken</var>);</code>
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>unregisterToken</var></code></dt>
+ <dd>対象オブジェクトを登録したときに {{jsxref("FinalizationRegistry.prototype.register", "register")}} メソッドで使用したトークンです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>undefined</code> です。</p>
+
+<h2 id="Notes" name="Notes">注</h2>
+
+<p>対象オブジェクトの回収が完了すると、レジストリに登録された状態ではなくなります。クリーンアップコールバックですべてに <code>unregister</code> を行う必要はありません。クリーンアップコールバックを受信しておらず、クリーンアップコールバックを受信する必要がなくなった場合にのみ <code>unregister</code> を呼び出してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_unregister" name="Using_unregister">unregister の使用</h3>
+
+<p>この例では、登録解除トークンとして同じオブジェクトを使用して対象のオブジェクトを登録し、その後、 <code>unregister</code> を介して対象のオブジェクトの登録を解除します。</p>
+
+<pre class="brush: js notranslate">class Thingy {
+ #cleanup = label =&gt; {
+ // ^^^^^−−−−− held value
+ console.error(
+ `The \`release\` method was never called for the object with the label "${label}"`
+ );
+ };
+ #registry = new FinalizationRegistry(this.#cleanup);
+
+ /**
+ * Constructs a `Thingy` instance. Be sure to call `release` when you're done with it.
+ *
+ * @param label A label for the `Thingy`.
+ */
+ constructor(label) {
+ // vvvvv−−−−− held value
+ this.#registry.register(this, label, this);
+ // target −−−−−^^^^ ^^^^−−−−− unregister token
+ }
+
+ /**
+ * Releases resources held by this `Thingy` instance.
+ */
+ release() {
+ this.#registry.unregister(this);
+ // ^^^^−−−−− unregister token
+ }
+}
+</pre>
+
+<p>この例では、登録解除トークンとして別のオブジェクトを使用して対象のオブジェクトを登録しています。</p>
+
+<pre class="brush: js notranslate"> {
+ // ^^^^−−−−− held value
+ console.error(
+ `The \`release\` method was never called for the \`Thingy\` for the file "${file.name}"`
+ );
+ };
+ #registry = new FinalizationRegistry(this.#cleanup);
+
+ /**
+ * Constructs a `Thingy` instance for the given file. Be sure to call `release` when you're done with it.
+ *
+ * @param filename The name of the file.
+ */
+ constructor(filename) {
+ this.#file = File.open(filename);
+ // vvvvv−−−−− held value
+ this.#registry.register(this, label, this.#file);
+ // target −−−−−^^^^ ^^^^^^^^^^−−−−− unregister token
+ }
+
+ /**
+ * Releases resources held by this `Thingy` instance.
+ */
+ release() {
+ if (this.#file) {
+ this.#registry.unregister(this.#file);
+ // ^^^^^^^^^^−−−−− unregister token
+ File.close(this.#file);
+ this.#file = null;
+ }
+ }
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WeakRefs', '#sec-finalization-registry.prototype.unregister', 'FinalizationRegistry.prototype.unregister')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.FinalizationRegistry.unregister")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("FinalizationRegistry")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/float32array/float32array/index.html b/files/ja/web/javascript/reference/global_objects/float32array/float32array/index.html
new file mode 100644
index 0000000000..e91c259192
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/float32array/float32array/index.html
@@ -0,0 +1,105 @@
+---
+title: Float32Array() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Float32Array/Float32Array
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypedArrays
+ - コンストラクター
+ - 型付き配列
+translation_of: Web/JavaScript/Reference/Global_Objects/Float32Array/Float32Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Float32Array()</code></strong> は型付き配列のコンストラクターで、新しい {{jsxref("Float32Array")}} オブジェクト、すなわち32ビット浮動小数点数 (C 言語の <code>float</code> データ型に相当) の配列をプラットフォームのバイトオーダーで生成します。バイトオーダーを制御する必要がある場合は、代わりに {{jsxref("DataView")}} を使用してください。生成後は、オブジェクトのメソッドや、標準の配列の添字構文 (すなわち角括弧表記) を用いて配列の要素を参照することができます。</p>
+
+<h2 id="Constructors" name="Constructors">構文</h2>
+
+<pre class="syntaxbox">new Float32Array(); // new in ES2017
+new Float32Array(<var>length</var>);
+new Float32Array(<var>typedArray</var>);
+new Float32Array(<var>object</var>);
+new Float32Array(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd><code><var>length</var></code> 引数付きで呼び出された場合、 <code><var>length</var></code> を <em><code>BYTES_PER_ELEMENT</code> バイトで掛けた大きさ</em>で、内部の配列バッファーがメモリ内に生成され、内容がゼロになります。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code><var>typedArray</var></code> 引数は任意の型付き配列 (<code>Int32Array</code> など) で、 <code><var>typedArray</var></code> を付けて呼び出された場合、その内容が新しい型付き配列に複写されます。 <code><var>typedArray</var></code> に含まれるそれぞれの値は、新しい配列にコピーされる前に、このコンストラクターに対応する型に変換されます。新しい型付き配列の長さは、 <code><var>typedArray</var></code> 引数の長さと同じになります。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd><code><var>object</var></code> 引数付きで呼び出された場合、新しい型付き配列は <code><var>TypedArray</var>.from()</code> メソッドのようにして生成されます。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd><code><var>buffer</var></code> 引数と、任意で <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数をつけて呼び出された場合、新しい型付き配列のビューが作成され、そのビューが指定された {{jsxref("ArrayBuffer")}} となります。 <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数は、型付き配列のビューで公開するメモリの範囲を指定します。両方が省略された場合は、 <code><var>buffer</var></code> 全体がビューとなり、 <code><var>length</var></code> のみが省略された場合は、 <code><var>buffer</var></code> の残りがビューとなります。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_Float32Array" name="Different_ways_to_create_a_Float32Array">Float32Array を生成するための様々な方法</h3>
+
+<pre class="brush: js">// From a length
+var float32 = new Float32Array(2);
+float32[0] = 42;
+console.log(float32[0]); // 42
+console.log(float32.length); // 2
+console.log(float32.BYTES_PER_ELEMENT); // 8
+
+// From an array
+var arr = new Float32Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Float32Array([21, 31]);
+var y = new Float32Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(32);
+var z = new Float32Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var float32 = new Float32Array(iterable);
+// Float32Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typedarray-constructors', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Float32Array.Float32Array")}}</p>
+
+<h3 id="Compatibility_notes" name="Compatibility_notes">互換性ノート</h3>
+
+<p>ECMAScript 2015 から、 <code>Float32Array</code> コンストラクターは {{jsxref("Operators/new", "new")}} 演算子を使用して構築する必要があります。 <code>new</code> 演算子を使用せずに <code>Float32Array</code> コンストラクターを呼び出した場合、 {{jsxref("TypeError")}} が発生するようになりました。</p>
+
+<pre class="brush: js example-bad">var dv = Float32Array([1, 2, 3]);
+// TypeError: calling a builtin Float32Array constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good">var dv = new Float32Array([1, 2, 3]);</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/float32array/index.html b/files/ja/web/javascript/reference/global_objects/float32array/index.html
new file mode 100644
index 0000000000..16256ccb1e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/float32array/index.html
@@ -0,0 +1,197 @@
+---
+title: Float32Array
+slug: Web/JavaScript/Reference/Global_Objects/Float32Array
+tags:
+ - Constructor
+ - JavaScript
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/Float32Array
+---
+<div>{{JSRef}}</div>
+
+<p><code>Float32Array タイプは、32 ビット浮動小数点数 (C 言語の float データタイプに相当します) の配列を表します。</code>各要素のバイトオーダーはプラットフォームに依存します。もしコントロールしたい場合は代わりに{{jsxref("DataView")}}を使って下さい。各要素は0で初期化されます。生成された <code>Float32Array</code> オブジェクトのメソッドあるいは配列のような表記法 ("<code>[]</code>") を用いて、要素を参照することができます。</p>
+
+<h2 id="Constructors" name="Constructors">構文</h2>
+
+<pre class="syntaxbox">new Float32Array(); // new in ES2017
+new Float32Array(length);
+new Float32Array(typedArray);
+new Float32Array(object);
+​new Float32Array(buffer [, byteOffset [, length]]);</pre>
+
+<p>コンストラクタの構文とパラメータについての詳しい情報は{{jsxref("TypedArray")}}を参照して下さい。</p>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float32Array.BYTES_PER_ELEMENT")}}</dt>
+ <dd>要素一個あたりのバイト数を返します。<code>Float32Array</code> の場合は<font face="Consolas, Liberation Mono, Courier, monospace">4</font>です。</dd>
+ <dt>Float32Array.length</dt>
+ <dd><code>値は3になります</code>。実際の長さ(要素数)については{{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}}を参照して下さい。</dd>
+ <dt>{{jsxref("TypedArray.name", "Float32Array.name")}}</dt>
+ <dd>コンストラクタ名を文字列値で返します。<code>Float32Array</code> の場合、"Float32Array"<code>です</code>。</dd>
+ <dt>{{jsxref("TypedArray.prototype", "Float32Array.prototype")}}</dt>
+ <dd><em>TypedArray</em> オブジェクトのプロトタイプです。</dd>
+</dl>
+
+<h2 id="メソッド">メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from", "Float32Array.from()")}}</dt>
+ <dd>配列状のオブジェクトやイテレート可能なオブジェクトから、新たな <code>Float32Array</code> オブジェクトを生成します。{{jsxref("Array.from()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.of", "Float32Array.of()")}}</dt>
+ <dd>可変長引数で新しい <code>Float32Array</code> オブジェクトを生成します。{{jsxref("Array.of()")}}も確かめて下さい。</dd>
+</dl>
+
+<h2 id="Float32Array_プロトタイプ"><code>Float32Array</code> プロトタイプ</h2>
+
+<p>全ての <code>Float32Array</code> オブジェクトは {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}} を継承しています。</p>
+
+<h3 id="プロパティ_2">プロパティ</h3>
+
+<dl>
+ <dt><code>Float32Array.prototype.constructor</code></dt>
+ <dd>インスタンスのプロトタイプを作る関数を返します。これは、デフォルトで対応する <code>Float32Array</code> コンストラクタです。</dd>
+ <dt>{{jsxref("TypedArray.prototype.buffer", "Float32Array.prototype.buffer")}} {{readonlyInline}}</dt>
+ <dd><code>Float32Array</code> オブジェクトによって参照される{{jsxref("ArrayBuffer")}}を返します。構築時に設定され、<strong>読取専用</strong>となります。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength", "Float32Array.prototype.byteLength")}} {{readonlyInline}}</dt>
+ <dd>{{jsxref("ArrayBuffer")}}の開始位置からの<code>Float32Array</code> オブジェクトの(バイト単位の)長さを返します。構築時に設定され、<strong>読取専用</strong>となります。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset", "Float32Array.prototype.byteOffset")}} {{readonlyInline}}</dt>
+ <dd>{{jsxref("ArrayBuffer")}}の開始位置からの<code>Float32Array</code> オブジェクトの(バイト単位の)オフセットを返します。構築時に設定され、<strong>読取専用</strong>となります。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}} {{readonlyInline}}</dt>
+ <dd><code>Float32Array</code> オブジェクト内に保持された要素の数を返します。構築時に設定され、<strong>読取専用</strong>となります。</dd>
+ <dt>
+ <h3 id="メソッド_2">メソッド</h3>
+ </dt>
+ <dt>{{jsxref("TypedArray.prototype.copyWithin()", "Float32Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内で一連の配列要素をコピーします。{{jsxref("Array.prototype.copyWithin()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.entries", "Float32Array.prototype.entries()")}}</dt>
+ <dd>配列内で各インデックスに対して、キー/バリュー ペアを含む新しい<code>Array Iterator</code>を返します。{{jsxref("Array.prototype.entries()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.every", "Float32Array.prototype.every()")}}</dt>
+ <dd>配列内のすべての要素が関数によって提供されたテストに合格するかどうかテストを実行します。{{jsxref("Array.prototype.every()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.fill", "Float32Array.prototype.fill()")}}</dt>
+ <dd>開始位置から終了位置までの配列のすべての要素を固定値で設定します。{{jsxref("Array.prototype.fill()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.filter", "Float32Array.prototype.filter()")}}</dt>
+ <dd>与えられたフィルタリング関数がtrueを返す配列のすべての要素をもつ新しい配列を生成します。{{jsxref("Array.prototype.filter()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.find", "Float32Array.prototype.find()")}}</dt>
+ <dd>配列要素が与えられたテスト関数を満足したら、配列の値を返します。満足しなかった場合、<code>undefined</code>を返します。 {{jsxref("Array.prototype.find()")}}を確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.findIndex", "Float32Array.prototype.findIndex()")}}</dt>
+ <dd>配列要素が与えられたテスト関数を満足したら、配列のインデックスを返します。満足しなかった場合、-1を返します。{{jsxref("Array.prototype.findIndex()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.forEach", "Float32Array.prototype.forEach()")}}</dt>
+ <dd>配列内の各要素に対する関数を呼び出します。{{jsxref("Array.prototype.forEach()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.includes", "Float32Array.prototype.includes()")}}  {{experimental_inline}}</dt>
+ <dd>typed arrayがある要素を含むかどうか判断し、それに応じて、<code>true</code> か <code>false</code>を返します。 {{jsxref("Array.prototype.includes()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.indexOf", "Float32Array.prototype.indexOf()")}}</dt>
+ <dd>指定された値に等しい配列内の要素の最初のインデックスを返します。見つからない場合、-1を返します。{{jsxref("Array.prototype.indexOf()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.join", "Float32Array.prototype.join()")}}</dt>
+ <dd>すべての配列要素を文字列に結合します。{{jsxref("Array.prototype.join()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.keys", "Float32Array.prototype.keys()")}}</dt>
+ <dd>配列内の各インデックスに対するキーを含む新しい<code>Array Iterator</code>を返します。{{jsxref("Array.prototype.keys()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.lastIndexOf", "Float32Array.prototype.lastIndexOf()")}}</dt>
+ <dd>指定された値と等しい配列の要素の最後のインデックスを返します。見つからない場合、-1を返します。{{jsxref("Array.prototype.lastIndexOf()")}}を確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.map", "Float32Array.prototype.map()")}}</dt>
+ <dd>この配列のすべての要素で与えられた関数を呼び出した結果をもつ新しい配列を生成します。{{jsxref("Array.prototype.map()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.reduce", "Float32Array.prototype.reduce()")}}</dt>
+ <dd>アキュムレータに対して関数を適用し、隣り合う二つのtyped arrayの要素(左から右へ)は単一の値になります。{{jsxref("Array.prototype.reduce()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.reduceRight", "Float32Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュムレータに対して関数を適用し、隣り合う二つのtyped arrayの要素(右から左へ)は単一の値になります。{{jsxref("Array.prototype.reduceRight()")}}を確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.reverse", "Float32Array.prototype.reverse()")}}</dt>
+ <dd>配列要素の順番を反転させます。— 最初の要素は最後になり、最後の要素は最初になります。{{jsxref("Array.prototype.reverse()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.set", "Float32Array.prototype.set()")}}</dt>
+ <dd>入力値を指定した配列から読み込み、typed array内に複数の値を格納します。</dd>
+ <dt>{{jsxref("TypedArray.slice", "Float32Array.prototype.slice()")}}</dt>
+ <dd>配列の一部を取り出して新しい配列を返します。{{jsxref("Array.prototype.slice()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.some", "Float32Array.prototype.some()")}}</dt>
+ <dd>ある配列の少なくとも 1 つの要素が与えられたテスト関数を満たした場合にtrueを返します。{{jsxref("Array.prototype.some()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.sort", "Float32Array.prototype.sort()")}}</dt>
+ <dd>配列の要素をソートし、その結果を返します。{{jsxref("Array.prototype.sort()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.subarray", "Float32Array.prototype.subarray()")}}</dt>
+ <dd>与えられた開始位置と終了位置の要素インデックスの新しい<code>Float32Array</code> オブジェクトを返します。</dd>
+ <dt>{{jsxref("TypedArray.values", "Float32Array.prototype.values()")}}</dt>
+ <dd>配列内で各インデックスに対する値を含む新しい<code>Array Iterator</code>オブジェクトを返します。{{jsxref("Array.prototype.values()")}}を確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.toLocaleString", "Float32Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列と要素を表すローカライズされた文字列を返します。{{jsxref("Array.prototype.toLocaleString()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.toString", "Float32Array.prototype.toString()")}}</dt>
+ <dd>配列と要素を表す文字列を返します。{{jsxref("Array.prototype.toString()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.@@iterator", "Float32Array.prototype[@@iterator]()")}}</dt>
+ <dd>配列内で各インデックスに対する値を含む新しい<code>Array Iterator</code>オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: js">// From a length
+var float32 = new Float32Array(2);
+float32[0] = 42;
+console.log(float32[0]); // 42
+console.log(float32.length); // 2
+console.log(float32.BYTES_PER_ELEMENT); // 4
+
+// From an array
+var arr = new Float32Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Float32Array([21, 31]);
+var y = new Float32Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(16);
+var z = new Float32Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var float32 = new Float32Array(iterable);
+// Float32Array[1, 2, 3]</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table" style="line-height: 1.5;">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('Typed Array')}}</td>
+ <td>{{Spec2('Typed Array')}}</td>
+ <td>ECMAScript 6 で置き換えられました。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#table-49', 'TypedArray constructors')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td>ECMA 標準では最初の定義。<code>new</code> 演算子が必要なことが仕様書に含まれました。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.Float32Array")}}</p>
+
+<h2 id="互換性について">互換性について</h2>
+
+<p>ECMAScript 2015 (ES6)から、<code>Float32Array</code> コンストラクタでインスタンスを生成する場合、 {{jsxref("Operators/new", "new")}} 演算子が必要となります。 <code>Float32Array</code> を <code>new 演算子を使用せずに関数呼び出しした場合、</code>{{jsxref("TypeError")}} 例外が投げられるでしょう。</p>
+
+<pre class="brush: js example-bad">var dv = Float32Array([1, 2, 3]);
+// TypeError: calling a builtin Float32Array constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good">var dv = new Float32Array([1, 2, 3]);</pre>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/float64array/float64array/index.html b/files/ja/web/javascript/reference/global_objects/float64array/float64array/index.html
new file mode 100644
index 0000000000..3423169624
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/float64array/float64array/index.html
@@ -0,0 +1,105 @@
+---
+title: Float64Array() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Float64Array/Float64Array
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypedArrays
+ - コンストラクター
+ - 型付き配列
+translation_of: Web/JavaScript/Reference/Global_Objects/Float64Array/Float64Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Float64Array()</code></strong> は型付き配列のコンストラクターで、新しい {{jsxref("Float64Array")}} オブジェクト、すなわち64ビット浮動小数点数 (C 言語の <code>double</code> データ型に相当) の配列をプラットフォームのバイトオーダーで生成します。バイトオーダーを制御する必要がある場合は、代わりに {{jsxref("DataView")}} を使用してください。生成後は、オブジェクトのメソッドや、標準の配列の添字構文 (すなわち角括弧表記) を用いて配列の要素を参照することができます。</p>
+
+<h2 id="Constructors" name="Constructors">構文</h2>
+
+<pre class="syntaxbox">new Float64Array(); // new in ES2017
+new Float64Array(<var>length</var>);
+new Float64Array(<var>typedArray</var>);
+new Float64Array(<var>object</var>);
+new Float64Array(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd><code><var>length</var></code> 引数付きで呼び出された場合、 <code><var>length</var></code> を <em><code>BYTES_PER_ELEMENT</code> バイトで掛けた大きさ</em>で、内部の配列バッファーがメモリ内に生成され、内容がゼロになります。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code><var>typedArray</var></code> 引数は任意の型付き配列 (<code>Int32Array</code> など) で、 <code><var>typedArray</var></code> を付けて呼び出された場合、その内容が新しい型付き配列に複写されます。 <code><var>typedArray</var></code> に含まれるそれぞれの値は、新しい配列にコピーされる前に、このコンストラクターに対応する型に変換されます。新しい型付き配列の長さは、 <code><var>typedArray</var></code> 引数の長さと同じになります。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd><code><var>object</var></code> 引数付きで呼び出された場合、新しい型付き配列は <code><var>TypedArray</var>.from()</code> メソッドのようにして生成されます。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd><code><var>buffer</var></code> 引数と、任意で <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数をつけて呼び出された場合、新しい型付き配列のビューが作成され、そのビューが指定された {{jsxref("ArrayBuffer")}} となります。 <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数は、型付き配列のビューで公開するメモリの範囲を指定します。両方が省略された場合は、 <code><var>buffer</var></code> 全体がビューとなり、 <code><var>length</var></code> のみが省略された場合は、 <code><var>buffer</var></code> の残りがビューとなります。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_Float64Array" name="Different_ways_to_create_a_Float64Array">Float64Array を生成するための様々な方法</h3>
+
+<pre class="brush: js">// From a length
+var float64 = new Float64Array(2);
+float64[0] = 42;
+console.log(float64[0]); // 42
+console.log(float64.length); // 2
+console.log(float64.BYTES_PER_ELEMENT); // 8
+
+// From an array
+var arr = new Float64Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Float64Array([21, 31]);
+var y = new Float64Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(32);
+var z = new Float64Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var float64 = new Float64Array(iterable);
+// Float64Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typedarray-constructors', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Float64Array.Float64Array")}}</p>
+
+<h3 id="Compatibility_notes" name="Compatibility_notes">互換性ノート</h3>
+
+<p>ECMAScript 2015 から、 <code>Float64Array</code> コンストラクターは {{jsxref("Operators/new", "new")}} 演算子を使用して構築する必要があります。 <code>new</code> 演算子を使用せずに <code>Float64Array</code> コンストラクターを呼び出した場合、 {{jsxref("TypeError")}} が発生するようになりました。</p>
+
+<pre class="brush: js example-bad">var dv = Float64Array([1, 2, 3]);
+// TypeError: calling a builtin Float64Array constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good">var dv = new Float64Array([1, 2, 3]);</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/float64array/index.html b/files/ja/web/javascript/reference/global_objects/float64array/index.html
new file mode 100644
index 0000000000..5f93139628
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/float64array/index.html
@@ -0,0 +1,197 @@
+---
+title: Float64Array
+slug: Web/JavaScript/Reference/Global_Objects/Float64Array
+tags:
+ - Constructor
+ - JavaScript
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/Float64Array
+---
+<div>{{JSRef}}</div>
+
+<p><code>Float64Array タイプは、64 ビット浮動小数点数 (C 言語の float データタイプに相当します) の配列を表します。</code>各要素のバイトオーダーはプラットフォームに依存します。もしコントロールしたい場合は代わりに{{jsxref("DataView")}}を使って下さい。各要素は0で初期化されます。生成された <code>Float64Array</code> オブジェクトのメソッドあるいは配列のような表記法 ("<code>[]</code>") を用いて、要素を参照することができます。</p>
+
+<h2 id="Constructors" name="Constructors">構文</h2>
+
+<pre class="syntaxbox">new Float64Array(); // new in ES2017
+new Float64Array(length);
+new Float64Array(typedArray);
+new Float64Array(object);
+​new Float64Array(buffer [, byteOffset [, length]]);</pre>
+
+<p>コンストラクタの構文とパラメータについての詳しい情報は{{jsxref("TypedArray")}}を参照して下さい。</p>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float64Array.BYTES_PER_ELEMENT")}}</dt>
+ <dd>要素一個あたりのバイト数を返します。<code>Float64Array</code> の場合は<font face="Consolas, Liberation Mono, Courier, monospace">8</font>です。</dd>
+ <dt>Float64Array.length</dt>
+ <dd><code>値は3になります</code>。実際の長さ(要素数)については{{jsxref("TypedArray.prototype.length", "Float64Array.prototype.length")}}を参照して下さい。</dd>
+ <dt>{{jsxref("TypedArray.name", "Float64Array.name")}}</dt>
+ <dd>コンストラクタ名を文字列値で返します。<code>Float64Array</code> の場合、"Float64Array"<code>です</code>。</dd>
+ <dt>{{jsxref("TypedArray.prototype", "Float64Array.prototype")}}</dt>
+ <dd><em>TypedArray</em> オブジェクトのプロトタイプです。</dd>
+</dl>
+
+<h2 id="メソッド">メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from", "Float64Array.from()")}}</dt>
+ <dd>配列状のオブジェクトやイテレート可能なオブジェクトから、新たな <code>Float64Array</code> オブジェクトを生成します。{{jsxref("Array.from()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.of", "Float64Array.of()")}}</dt>
+ <dd>可変長引数で新しい <code>Float64Array</code> オブジェクトを生成します。{{jsxref("Array.of()")}}も確かめて下さい。</dd>
+</dl>
+
+<h2 id="Float64Array_プロトタイプ"><code>Float64Array</code> プロトタイプ</h2>
+
+<p>全ての <code>Float64Array</code> オブジェクトは {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}} を継承しています。</p>
+
+<h3 id="プロパティ_2">プロパティ</h3>
+
+<dl>
+ <dt><code>Float64Array.prototype.constructor</code></dt>
+ <dd>インスタンスのプロトタイプを作る関数を返します。これは、デフォルトで対応する <code>Float64Array</code> コンストラクタです。</dd>
+ <dt>{{jsxref("TypedArray.prototype.buffer", "Float64Array.prototype.buffer")}} {{readonlyInline}}</dt>
+ <dd><code>Float64Array</code> オブジェクトによって参照される{{jsxref("ArrayBuffer")}}を返します。構築時に設定され、<strong>読取専用</strong>となります。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength", "Float64Array.prototype.byteLength")}} {{readonlyInline}}</dt>
+ <dd>{{jsxref("ArrayBuffer")}}の開始位置からの<code>Float64Array</code> オブジェクトの(バイト単位の)長さを返します。構築時に設定され、<strong>読取専用</strong>となります。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset", "Float64Array.prototype.byteOffset")}} {{readonlyInline}}</dt>
+ <dd>{{jsxref("ArrayBuffer")}}の開始位置からの<code>Float64Array</code> オブジェクトの(バイト単位の)オフセットを返します。構築時に設定され、<strong>読取専用</strong>となります。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length", "Float64Array.prototype.length")}} {{readonlyInline}}</dt>
+ <dd><code>Float64Array</code> オブジェクト内に保持された要素の数を返します。構築時に設定され、<strong>読取専用</strong>となります。</dd>
+ <dt>
+ <h3 id="メソッド_2">メソッド</h3>
+ </dt>
+ <dt>{{jsxref("TypedArray.prototype.copyWithin()", "Float64Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内で一連の配列要素をコピーします。{{jsxref("Array.prototype.copyWithin()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.entries", "Float64Array.prototype.entries()")}}</dt>
+ <dd>配列内で各インデックスに対して、キー/バリュー ペアを含む新しい<code>Array Iterator</code>を返します。{{jsxref("Array.prototype.entries()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.every", "Float64Array.prototype.every()")}}</dt>
+ <dd>配列内のすべての要素が関数によって提供されたテストに合格するかどうかテストを実行します。{{jsxref("Array.prototype.every()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.fill", "Float64Array.prototype.fill()")}}</dt>
+ <dd>開始位置から終了位置までの配列のすべての要素を固定値で設定します。{{jsxref("Array.prototype.fill()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.filter", "Float64Array.prototype.filter()")}}</dt>
+ <dd>与えられたフィルタリング関数がtrueを返す配列のすべての要素をもつ新しい配列を生成します。{{jsxref("Array.prototype.filter()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.find", "Float64Array.prototype.find()")}}</dt>
+ <dd>配列要素が与えられたテスト関数を満足したら、配列の値を返します。満足しなかった場合、<code>undefined</code>を返します。 {{jsxref("Array.prototype.find()")}}を確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.findIndex", "Float64Array.prototype.findIndex()")}}</dt>
+ <dd>配列要素が与えられたテスト関数を満足したら、配列のインデックスを返します。満足しなかった場合、-1を返します。{{jsxref("Array.prototype.findIndex()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.forEach", "Float64Array.prototype.forEach()")}}</dt>
+ <dd>配列内の各要素に対する関数を呼び出します。{{jsxref("Array.prototype.forEach()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.includes", "Float64Array.prototype.includes()")}}  {{experimental_inline}}</dt>
+ <dd>typed arrayがある要素を含むかどうか判断し、それに応じて、<code>true</code> か <code>false</code>を返します。 {{jsxref("Array.prototype.includes()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.indexOf", "Float64Array.prototype.indexOf()")}}</dt>
+ <dd>指定された値に等しい配列内の要素の最初のインデックスを返します。見つからない場合、-1を返します。{{jsxref("Array.prototype.indexOf()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.join", "Float64Array.prototype.join()")}}</dt>
+ <dd>すべての配列要素を文字列に結合します。{{jsxref("Array.prototype.join()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.keys", "Float64Array.prototype.keys()")}}</dt>
+ <dd>配列内の各インデックスに対するキーを含む新しい<code>Array Iterator</code>を返します。{{jsxref("Array.prototype.keys()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.lastIndexOf", "Float64Array.prototype.lastIndexOf()")}}</dt>
+ <dd>指定された値と等しい配列の要素の最後のインデックスを返します。見つからない場合、-1を返します。{{jsxref("Array.prototype.lastIndexOf()")}}を確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.map", "Float64Array.prototype.map()")}}</dt>
+ <dd>この配列のすべての要素で与えられた関数を呼び出した結果をもつ新しい配列を生成します。{{jsxref("Array.prototype.map()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.reduce", "Float64Array.prototype.reduce()")}}</dt>
+ <dd>アキュムレータに対して関数を適用し、隣り合う二つのtyped arrayの要素(左から右へ)は単一の値になります。{{jsxref("Array.prototype.reduce()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.reduceRight", "Float64Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュムレータに対して関数を適用し、隣り合う二つのtyped arrayの要素(右から左へ)は単一の値になります。{{jsxref("Array.prototype.reduceRight()")}}を確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.reverse", "Float64Array.prototype.reverse()")}}</dt>
+ <dd>配列要素の順番を反転させます。— 最初の要素は最後になり、最後の要素は最初になります。{{jsxref("Array.prototype.reverse()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.set", "Float64Array.prototype.set()")}}</dt>
+ <dd>入力値を指定した配列から読み込み、typed array内に複数の値を格納します。</dd>
+ <dt>{{jsxref("TypedArray.slice", "Float64Array.prototype.slice()")}}</dt>
+ <dd>配列の一部を取り出して新しい配列を返します。{{jsxref("Array.prototype.slice()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.some", "Float64Array.prototype.some()")}}</dt>
+ <dd>ある配列の少なくとも 1 つの要素が与えられたテスト関数を満たした場合にtrueを返します。{{jsxref("Array.prototype.some()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.sort", "Float64Array.prototype.sort()")}}</dt>
+ <dd>配列の要素をソートし、その結果を返します。{{jsxref("Array.prototype.sort()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.subarray", "Float64Array.prototype.subarray()")}}</dt>
+ <dd>与えられた開始位置と終了位置の要素インデックスの新しい<code>Float64Array</code> オブジェクトを返します。</dd>
+ <dt>{{jsxref("TypedArray.values", "Float64Array.prototype.values()")}}</dt>
+ <dd>配列内で各インデックスに対する値を含む新しい<code>Array Iterator</code>オブジェクトを返します。{{jsxref("Array.prototype.values()")}}を確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.toLocaleString", "Float64Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列と要素を表すローカライズされた文字列を返します。{{jsxref("Array.prototype.toLocaleString()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.toString", "Float64Array.prototype.toString()")}}</dt>
+ <dd>配列と要素を表す文字列を返します。{{jsxref("Array.prototype.toString()")}}も確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.@@iterator", "Float64Array.prototype[@@iterator]()")}}</dt>
+ <dd>配列内で各インデックスに対する値を含む新しい<code>Array Iterator</code>オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: js">// From a length
+var float64 = new Float64Array(2);
+float64[0] = 42;
+console.log(float64[0]); // 42
+console.log(float64.length); // 2
+console.log(float64.BYTES_PER_ELEMENT); // 8
+
+// From an array
+var arr = new Float64Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Float64Array([21, 31]);
+var y = new Float64Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(32);
+var z = new Float64Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var float64 = new Float64Array(iterable);
+// Float64Array[1, 2, 3]</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table" style="line-height: 1.5;">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('Typed Array')}}</td>
+ <td>{{Spec2('Typed Array')}}</td>
+ <td>ECMAScript 6 で置き換えられました。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#table-49', 'TypedArray constructors')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td>ECMA 標準では最初の定義。<code>new</code> 演算子が必要なことが仕様書に含まれました。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.Float64Array")}}</p>
+
+<h2 id="互換性について">互換性について</h2>
+
+<p>ECMAScript 2015 (ES6)から、<code>Float64Array</code> コンストラクタでインスタンスを生成する場合、 {{jsxref("Operators/new", "new")}} 演算子が必要となります。 <code>Float64Array</code> を <code>new 演算子を使用せずに関数呼び出しした場合、</code>{{jsxref("TypeError")}} 例外が投げられるでしょう。</p>
+
+<pre class="brush: js example-bad">var dv = Float64Array([1, 2, 3]);
+// TypeError: calling a builtin Float64Array constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good">var dv = new Float64Array([1, 2, 3]);</pre>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/function/apply/index.html b/files/ja/web/javascript/reference/global_objects/function/apply/index.html
new file mode 100644
index 0000000000..10f6c025f7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/apply/index.html
@@ -0,0 +1,241 @@
+---
+title: Function.prototype.apply()
+slug: Web/JavaScript/Reference/Global_Objects/Function/apply
+tags:
+ - Function
+ - JavaScript
+ - Method
+ - apply
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/apply
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>apply()</strong></code> メソッドは、 <code>this</code> 値を指定して関数を呼び出し、 <code>arguments</code> は配列 (または<a href="/ja/docs/Web/JavaScript/Guide/Indexed_collections#Working_with_array-like_objects">配列風オブジェクト</a>) として提供します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/function-apply.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="notranslate"><code><var>func</var></code>.apply(<var>thisArg,</var> [ <var>argsArray</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>thisArg</var></code></dt>
+ <dd>
+ <p><code>this</code> の値で、 <code><var>func</var></code> の呼び出しで提供されます。</p>
+
+ <p>このメソッドで指定した <code>this</code> が必ず呼び出したメソッドで参照されるわけではないことに注意してください。もし呼び出したメソッドが{{jsxref("Strict_mode", "厳格モードではない", "", 1)}}コード内の関数であれば、ここで渡した値が {{jsxref("null")}} もしくは {{jsxref("undefined")}} であった場合はグローバルオブジェクトに置き換えられ、プリミティブ型の変数はボックス化されます。この引数は必須です。</p>
+ </dd>
+ <dt><code><var>argsArray</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p>1 つの配列風のオブジェクトであり、 <code><var>func</var></code> 関数が呼ぶことになる引数を列挙したものです。関数に引数が渡されない場合は {{jsxref("null")}} または {{jsxref("undefined")}} となります。</p>
+
+ <p>ECMAScript 5 以降ではこれらの値は配列ではなく配列風のオブジェクトを用いる事になりました。後述の{{anch("Browser_compatibility", "ブラウザーの互換性")}}を参照してください。</p>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定した <code><strong>this</strong></code> と引数で関数を呼び出した結果が返ります。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<div class="note">
+<p><strong>注:</strong> 関数の構文は {{jsxref("Function.call", "call()")}} メソッドとほぼ同じですが、根本的な違いは <code>call()</code> メソッドは<strong>連続した引数のリスト</strong>を受け取るのに対して、 <code>apply()</code> メソッドが<strong>引数の配列を 1 つだけ</strong>受け取るという点です。</p>
+</div>
+
+<div class="note">
+<p><strong>注:</strong> 最初の引数が undefined または null の場合、配列の<a href="/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax">スプレッド構文</a>を使用して同様の結果を得ることができます。</p>
+</div>
+
+<p>存在する関数を呼び出す時は通常と異なる <code>this</code> オブジェクトを渡すことができます。<code>this</code> はカレントオブジェクト、呼び出したオブジェクトを参照します。<code>apply</code> を用いることで、新たなオブジェクトのためにそのメソッドを書き直すことなく継承させることができます。</p>
+
+<p><code>apply</code> は、対応する引数の型を除けば {{jsxref("Function.call", "call()")}} によく似ています。引数のリストの代わりに引数の配列を用いることができます。<code>apply</code> は配列リテラルを引数に用いることもできます。例えば <code><em>func</em>.apply(this, ['eat', 'bananas'])</code> のように利用でき、同様に配列オブジェクトを <code><em>func</em>.apply(this, new Array('eat', 'bananas'))</code> のように利用できます。</p>
+
+<p><code>argsArray</code> で {{jsxref("Functions/arguments", "arguments")}} を利用することもできます。<code>arguments</code> は関数内のローカル変数です。これは、呼び出されたオブジェクトの不特定の引数すべてに対して用いることができます。つまり、 <code>apply</code> メソッドを使うにあたって呼び出されたオブジェクトの引数について知る必要がないのです。<code>arguments</code> を利用することで、引数のすべてを呼び出されたオブジェクトに渡すことができます。引数の扱いは、呼び出されたオブジェクトが受け持ちます。</p>
+
+<p>ECMAScript 第5版以降では、配列風のオブジェクトも使えます。具体的には、<code>length</code> プロパティとその範囲 (0 から length-1 まで) の整数の名称のプロパティを持った、あらゆる種類のオブジェクトの利用を認めています。例えば、{{domxref("NodeList")}} や <code>{ 'length': 2, '0': 'eat', '1': 'bananas' }</code> のような独自のオブジェクトを利用できます。</p>
+
+<div class="note">
+<p><strong>注:</strong> Chrome 14 や Internet Explorer 9 などのブラウザーでは、配列風オブジェクトを扱えずに例外が発生します。</p>
+</div>
+
+<h2 id="例">例</h2>
+
+<h3 id="Using_apply_to_append_an_array_to_another" name="Using_apply_to_append_an_array_to_another">apply で配列を別の配列に追加する</h3>
+
+<p><code>push</code> で 1 つの要素を配列に追加できます。そして、<code>push</code> は可変長引数に対応しているので、複数の要素を一度に追加することもできます。</p>
+
+<p>しかし <code>push</code> に配列を渡すと、配列の要素ごとにではなく配列全体を 1 つの要素として追加してしまいます。配列の中に配列が入るだけなのです。</p>
+
+<p>それを望まない場合はどうすればいいのでしょう? <code>concat</code> ならば望みの結果を得られます。しかし、<em>既存</em>の配列に追加するのではなく、新しい配列を生成して返します。</p>
+
+<p>既存の配列に追加したいのに... では、どうすれば?ループ文を書きますか?おことわりですよね?</p>
+
+<p><code>apply</code> が救ってくれます!</p>
+
+<pre class="brush: js notranslate">const array = ['a', 'b'];
+const elements = [0, 1, 2];
+array.push.apply(array, elements);
+console.info(array); // ["a", "b", 0, 1, 2]
+</pre>
+
+<h3 id="Using_apply_and_built-in_functions" name="Using_apply_and_built-in_functions"><code>apply</code> をビルトイン関数と共に利用する</h3>
+
+<p><code>apply</code> を賢く使うと、本来なら配列のためにループ文を書かなくてはならないような処理に対して、ビルトイン関数をそのまま使えるようになります。</p>
+
+<p>下記の例では、配列の最大値・最小値を求めるために <code>Math.max</code>/<code>Math.min</code> を使っています。</p>
+
+<pre class="brush: js notranslate">// 最小値・最大値を求めたい配列
+const numbers = [5, 6, 2, 3, 7];
+
+// Math.min/Math.max と apply を使う
+let max = Math.max.apply(null, numbers);
+// これは右と同じ Math.max(numbers[0], ...)
+// または Math.max(5, 6, ...)
+
+let min = Math.min.apply(null, numbers);
+
+// 対して、ループ文を使うとこうなる
+max = -Infinity, min = +Infinity;
+
+for (let i = 0; i &lt; numbers.length; i++) {
+ if (numbers[i] &gt; max) {
+ max = numbers[i];
+ }
+ if (numbers[i] &lt; min) {
+ min = numbers[i];
+ }
+}
+</pre>
+
+<p>しかし注意してください。この方法で <code>apply</code> を使う場合、 JavaScript エンジンの引数の長さ上限を超えてしまう危険があります。多すぎる (おおよそ数万個以上だと思って下さい) 引数を与えた結果は、その上限が特に決まっていない (本当に任意の巨大なデータのかたまりに対してさえ) ためエンジンによって (JavaScriptCore ライブラリでは<a class="link-https" href="https://bugs.webkit.org/show_bug.cgi?id=80797">引数の上限は 65536 である</a>とハードコーディングされています) 異なります。</p>
+
+<p>これは、その限界 (実際には、過剰に大きなスタックの挙動の性質さえも) が不特定であるためです。例外を投げるエンジンも存在します。さらに酷い場合では、関数へ実際に渡す引数の数を勝手に制限するものもあります。後者について詳しく解説しますと、そのエンジンの引数の上限が 4 つの場合 (実際の上限値は当然もっと上です)、上の例では、完全な配列でなく <code>5, 6, 2, 3</code> が <code>apply</code> へ渡されたかのような動作をします。</p>
+
+<p>もし実装しているコードで利用する配列の変数の数が数万を超えそうなときは、以下に示すように一度に apply に渡す配列を分割して利用する方法を併用すべきでしょう。</p>
+
+<pre class="brush: js notranslate">function minOfArray(arr) {
+ let min = Infinity;
+ let QUANTUM = 32768;
+
+ for (var i = 0, len = arr.length; i &lt; len; i += QUANTUM) {
+ var submin = Math.min.apply(null,
+ arr.slice(i, Math.min(i+QUANTUM, len)));
+ min = Math.min(submin, min);
+ }
+
+ return min;
+}
+
+let min = minOfArray([5, 6, 2, 3, 7]);
+</pre>
+
+<h3 id="Using_apply_to_chain_constructors" name="Using_apply_to_chain_constructors">apply を利用したコンストラクターチェーン</h3>
+
+<p><code>apply</code> を利用して、Java のように {{jsxref("Operators/new", "constructors")}} の連結を行なうことができます。</p>
+
+<p>以下に示す例ではグローバルな <code>construct</code> という名称の {{jsxref("Function")}} オブジェクトを作成し、引数のリストの代わりに配列風オブジェクトをコンストラクターと共に利用できるようになります。</p>
+
+<pre class="brush: js notranslate">Function.prototype.construct = function(aArgs) {
+ let oNew = Object.create(this.prototype);
+ this.apply(oNew, aArgs);
+ return oNew;
+};
+</pre>
+
+<div class="note" style="height: 250px; overflow: auto;">
+<p><strong>注:</strong> 上記で使用している <code>Object.create()</code> メソッドは比較的新しいです。代わりの方法として、以下の例を検討してください。</p>
+
+<p>{{jsxref("Object/__proto__", "Object.__proto__")}} を利用:</p>
+
+<pre class="brush: js notranslate">Function.prototype.construct = function (aArgs) {
+ let oNew = {};
+ oNew.__proto__ = this.prototype;
+ this.apply(oNew, aArgs);
+ return oNew;
+};
+</pre>
+
+<p><a href="/ja/docs/Web/JavaScript/Closures">クロージャ</a>を利用:</p>
+
+<pre class="brush: js notranslate">Function.prototype.construct = function(aArgs) {
+ let fConstructor = this, fNewConstr = function() {
+ fConstructor.apply(this, aArgs);
+ };
+ fNewConstr.prototype = fConstructor.prototype;
+ return new fNewConstr();
+};</pre>
+
+<p>{{jsxref("Function")}} コンストラクターを利用:</p>
+
+<pre class="brush: js notranslate">Function.prototype.construct = function (aArgs) {
+ let fNewConstr = new Function("");
+ fNewConstr.prototype = this.prototype;
+ let oNew = new fNewConstr();
+ this.apply(oNew, aArgs);
+ return oNew;
+};
+</pre>
+</div>
+
+<p>使用例:</p>
+
+<pre class="brush: js notranslate">function MyConstructor() {
+ for (let nProp = 0; nProp &lt; arguments.length; nProp++) {
+ this['property' + nProp] = arguments[nProp];
+ }
+}
+
+let myArray = [4, 'Hello world!', false];
+let myInstance = MyConstructor.construct(myArray);
+
+console.log(myInstance.property1); // logs 'Hello world!'
+console.log(myInstance instanceof MyConstructor); // logs 'true'
+console.log(myInstance.constructor); // logs 'MyConstructor'
+</pre>
+
+<div class="note">
+<p><strong>注:</strong> この非ネイティブな <code>Function.construct</code> メソッドはいくつかのネイティブ実装されたコンストラクタ (例えば {{jsxref("Date")}} のような物) と併用できません。このようなケースにおいては {{jsxref("Function.bind")}} メソッドを利用する必要があります。</p>
+
+<p>例えば <code>[2012, 11, 4]</code> のような配列を {{jsxref("Global_Objects/Date", "Date")}} コンストラクターに利用する事を考えてみてください。この場合では <code>new (Function.prototype.bind.apply(Date, [null].concat([2012, 11, 4])))()</code> のように書く必要があります。</p>
+
+<p>いずれにせよこれは最適な選択肢とは言えず、実用上はいかなる状況でも用いるべきではないでしょう)</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function.prototype.apply', 'Function.prototype.apply')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function.apply")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Functions/arguments", "arguments")}} オブジェクト</li>
+ <li>{{jsxref("Function.prototype.bind()")}}</li>
+ <li>{{jsxref("Function.prototype.call()")}}</li>
+ <li>{{jsxref("Functions", "関数と関数スコープ", "", 1)}}</li>
+ <li>{{jsxref("Reflect.apply()")}}</li>
+ <li>{{jsxref("Operators/Spread_syntax", "スプレッド構文", "", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/function/arguments/index.html b/files/ja/web/javascript/reference/global_objects/function/arguments/index.html
new file mode 100644
index 0000000000..4219b3dde1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/arguments/index.html
@@ -0,0 +1,66 @@
+---
+title: Function.arguments
+slug: Web/JavaScript/Reference/Global_Objects/Function/arguments
+tags:
+ - Deprecated
+ - Function
+ - JavaScript
+ - Property
+ - arguments
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/arguments
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><code><strong><em>function</em>.arguments</strong></code> プロパティは、関数に渡される引数に対応する、配列風のオブジェクトです。より単純な {{jsxref("Functions/arguments", "arguments")}} 変数を使用してください。このプロパティは厳格モードでは使用できません。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><em>function</em>.arguments</code> の構文は非推奨です。関数内で {{jsxref("Functions/arguments", "arguments")}} オブジェクトにアクセスする方法としては、変数 {{jsxref("Functions/arguments", "arguments")}} が利用できます。</p>
+
+<p>再帰呼び出しの場合、すなわちコールスタックに関数 <code>f</code> が複数回現れる場合に、<code>f.arguments</code> はもっとも直近に実行された関数に対応する引数を表します。</p>
+
+<p>実行中の関数の未処理の呼び出しがない (つまり、関数が呼び出された状態で返してない) 場合、 arguments プロパティの値は通常 null です。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<h3 id="Using_the_arguments_object" name="Using_the_arguments_object">arguments オブジェクトの使用</h3>
+
+<pre class="brush: js notranslate">function f(n) { g(n - 1) }
+
+function g(n) {
+ console.log('before: ' + g.arguments[0])
+ if (n &gt; 0) { f(n) }
+ console.log('after: ' + g.arguments[0])
+}
+
+f(2)
+
+console.log('returned: ' + g.arguments)
+
+// Output
+
+// before: 1
+// before: 0
+// after: 0
+// after: 1
+// returned: null
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p><span class="pl-s">何れかの標準で定義されたものではありません。</span> ECMAScript 3 で {{jsxref("Functions/arguments", "arguments")}} に置き換えられました。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function.arguments")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Functions/arguments", "arguments")}} オブジェクト</li>
+ <li>{{jsxref("Functions", "関数と関数スコープ", "", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/function/bind/index.html b/files/ja/web/javascript/reference/global_objects/function/bind/index.html
new file mode 100644
index 0000000000..1bba8cd72c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/bind/index.html
@@ -0,0 +1,350 @@
+---
+title: Function.prototype.bind()
+slug: Web/JavaScript/Reference/Global_Objects/Function/bind
+tags:
+ - ECMAScript 2015
+ - ECMAScript 5
+ - Function
+ - JavaScript
+ - Method
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/bind
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><code><strong>bind()</strong></code> メソッドは、呼び出された際に <code>this</code> キーワードに指定された値が設定される新しい関数を生成します。この値は新しい関数が呼び出されたとき、一連の引数の前に置かれます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/function-bind.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">let boundFunc = <var>func</var>.bind(<var>thisArg</var>[, <var>arg1</var>[, <var>arg2</var>[, ...<var>argN</var>]]])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>thisArg</var></code></dt>
+ <dd>バインドされた関数が呼び出される際、 <code>this</code> 引数としてターゲット関数 <code><var>func</var></code> に渡される値です。バインドされた関数が {{jsxref("Operators/new", "new")}} 演算子によって構築された場合、この引数は無視されます。 <code>bind</code> を使用して <code>setTimeout</code> の中で (コールバックとして提供する) 関数を生成する場合、 <code><var>thisArg</var></code> として渡されたプリミティブ値はオブジェクトに変換されます。引数が <code>bind</code> に提供されなかった場合、または <code><var>thisArg</var></code> が <code><var>null</var></code> または <code><var>undefined</var></code> であった場合は、実行スコープの <code>this</code> は新しい関数のための <code><var>thisArg</var></code> として扱われます。</dd>
+ <dt><code><var>arg1</var>, <var>arg2</var>, ...<var>argN</var></code> {{optional_inline}}</dt>
+ <dd><code><var>func</var></code> を呼び出す時、バインドされた関数に与えられる引数の前に付けて渡す引数。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><strong><code>this</code></strong> の値と初期の引数を指定された関数のコピーです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><strong>bind()</strong> 関数は、新しい<strong>バインドされた関数</strong>、すなわち元の関数オブジェクトをラップする<em><ruby>特殊関数オブジェクト<rp> (</rp><rt>exotic function object</rt><rp>) </rp></ruby></em> (ECMAScript 2015 からの用語) を生成します。バインドされた関数を呼び出すと、通常はラップされた関数が実行される結果になります。</p>
+
+<p>バインドされた関数は、以下の内部プロパティを持ちます。</p>
+
+<dl>
+ <dt><strong><code>[[BoundTargetFunction]]</code></strong></dt>
+ <dd>ラップされた関数オブジェクト</dd>
+ <dt><code><strong>[[BoundThis]]</strong></code></dt>
+ <dd>ラップされた関数を呼び出す時に常に <strong>this</strong> に渡される値。</dd>
+ <dt><code><strong>[[BoundArguments]]</strong></code></dt>
+ <dd>ラップされた関数を呼び出す時に、その要素が第1引数として使われる値のリスト。</dd>
+ <dt><code><strong>[[Call]]</strong></code></dt>
+ <dd>オブジェクトに関連する実行コード。関数呼び出し式を通じて実行される。内部メソッドへの引数は <code>this</code> 値と呼び出し式によって関数に渡される引数を含むリスト。</dd>
+</dl>
+
+<p>バインドされた関数が呼び出されると、内部メソッド <code>[[Call]]</code> を <code>[[BoundTargetFunction]]</code> 上で、 <code>Call(<var>boundThis</var>, ...<var>args</var>)</code> の引数で呼び出します。ここで <code><var>boundThis</var></code> は <code>[[BoundThis]]</code>、 <code><var>args</var></code> は <code>[[BoundArguments]]</code> で、その後に関数呼び出しで渡された引数が続きます。</p>
+
+<p>バインドされた関数は {{jsxref("Operators/new", "new")}} 演算子でも生成されます。これを行うとターゲット関数が代わりに生成されたようになります。与えられた <code>this</code> の値は無視され、追加された引数はエミュレートされた関数に提供されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_a_bound_function" name="Creating_a_bound_function">バインドされた関数の生成</h3>
+
+<p>最もシンプルな <code>bind()</code> の使い方は、どのように呼び出された場合でも特定の <code>this</code> 値を持つ関数を生成することです。</p>
+
+<p>初心者の JavaScript プログラマーがよくやる間違いは、あるオブジェクトからメソッドを取り出し、後でその関数を呼び出すとき、その内側の <code>this</code> 値が元のオブジェクトになると考えてしまうことです (例えば、そのメソッドをコールバック関数に使う場合)。</p>
+
+<p>特に配慮しなければ、ふつうは元のオブジェクトが見えなくなります。その関数に元々のオブジェクトを <code>bind()</code> してバインドされた関数を生成すれば、この問題をきちんと解決することができます。</p>
+
+<pre class="brush: js notranslate">this.x = 9; // 'this' はここではブラウザーのグローバルな 'window' オブジェクト
+const module = {
+ x: 81,
+ getX: function() { return this.x; }
+};
+
+module.getX();
+// 81 を返します
+
+const retrieveX = module.getX;
+retrieveX();
+// 9 を返します。この関数はグローバルスコープで呼び出されるためです。
+
+// 'this' を module に結びつけた新しい関数を生成
+// 初心者のプログラマーはグローバル変数の x と
+// モジュールプロパティの x とを混同するかもしれません。
+const boundGetX = retrieveX.bind(module);
+boundGetX();
+// 81 を返します
+</pre>
+
+<h3 id="Partially_applied_functions" name="Partially_applied_functions">部分的に適用された関数</h3>
+
+<p>次にシンプルな <code>bind()</code> の使い方は、あらかじめ引数が指定された関数を生成することです。</p>
+
+<p>これらの引数は、<code>this</code> 値の後に続けます (指定しないことも可能)。すると、バインドされた関数がいつ呼ばれても、この指定された引数を先頭にしてバインドされた関数の引数がターゲット関数に渡されます。</p>
+
+<pre class="brush: js notranslate">function list() {
+ return Array.prototype.slice.call(arguments);
+}
+
+function addArguments(arg1, arg2) {
+ return arg1 + arg2
+}
+
+const list1 = list(1, 2, 3);
+// [1, 2, 3]
+
+const result1 = addArguments(1, 2);
+// 3
+
+// 先頭の引数が設定済みの関数を生成します。
+const leadingThirtysevenList = list.bind(null, 37);
+
+// 第一引数が設定済みの関数を生成します。
+const addThirtySeven = addArguments.bind(null, 37);
+
+const list2 = leadingThirtysevenList();
+// [37]
+
+const list3 = leadingThirtysevenList(1, 2, 3);
+// [37, 1, 2, 3]
+
+const result2 = addThirtySeven(5);
+// 37 + 5 = 42
+
+const result3 = addThirtySeven(5, 10);
+// 37 + 5 = 42
+// (the second argument is ignored)
+</pre>
+
+<h3 id="With_setTimeout" name="With_setTimeout"><code>setTimeout</code> での利用</h3>
+
+<p>既定では、 {{domxref("WindowOrWorkerGlobalScope.setTimeout()", "window.setTimeout()")}} 内部の <code>this</code> キーワードは {{domxref("window")}} (または <code>global</code> オブジェクト) に設定されます。クラスインスタンスを参照する <code>this</code> が必要なクラスメソッドを使う場合、 <code>this</code> をコールバック関数と明確に結びつけて (バインドして)、インスタンスを維持することができます。</p>
+
+<pre class="brush: js notranslate">function LateBloomer() {
+ this.petalCount = Math.floor(Math.random() * 12) + 1;
+}
+
+// 1 秒遅延させてから bloom を宣言する
+LateBloomer.prototype.bloom = function() {
+ window.setTimeout(this.declare.bind(this), 1000);
+};
+
+LateBloomer.prototype.declare = function() {
+ console.log(`I am a beautiful flower with ${this.petalCount} petals!`);
+};
+
+const flower = new LateBloomer();
+flower.bloom();
+// after 1 second, calls 'flower.declare()'
+</pre>
+
+<h3 id="Bound_functions_used_as_constructors" name="Bound_functions_used_as_constructors">コンストラクターとして使用するバインドされた関数</h3>
+
+<div class="warning">
+<p><strong>警告</strong>: この節では、 JavaScript の機能性を実演するため、 <code>bind()</code> メソッドの極端な例を説明しています。</p>
+
+<p>以下の方法は何かを実現するのに最適な方法ではなく、むしろ本番環境では使用するべきでない方法です。</p>
+</div>
+
+<p>バインドされた関数は自動的に、 {{jsxref("Operators/new", "new")}} 演算子を使ってターゲット関数の新しいインスタンスを構築できるようになっています。新たな値を構築するために束縛された関数を使った場合、 <code>this</code> を与えても無視されます。</p>
+
+<p>しかし、同時に与える引数はコンストラクター呼び出しの先頭部分に挿入されます:</p>
+
+<pre class="brush: js notranslate">function Point(x, y) {
+ this.x = x;
+ this.y = y;
+}
+
+Point.prototype.toString = function() {
+ return `${this.x},${this.y}`;
+};
+
+const p = new Point(1, 2);
+p.toString();
+// '1,2'
+
+
+// 以下のポリフィルには対応していません。
+
+// ネイティブの bind ではうまく動作します。
+
+const YAxisPoint = Point.bind(null, 0/*x*/);
+
+
+const emptyObj = {};
+const YAxisPoint = Point.bind(emptyObj, 0/*x*/);
+
+const axisPoint = new YAxisPoint(5);
+axisPoint.toString(); // '0,5'
+
+axisPoint instanceof Point; // true
+axisPoint instanceof YAxisPoint; // true
+new YAxisPoint(17, 42) instanceof Point; // true
+</pre>
+
+<p>バインドされた関数を {{jsxref("Operators/new", "new")}} で使えるように生成するのに特別なことをする必要は無いので注意してください。</p>
+
+<p>当然、普通に呼び出されるバインドされた関数を生成する際も特別なことは必要ありません。もしその関数を {{jsxref("Operators/new", "new")}} 演算子とともに呼び出すことにしか使いたくないと思っても、普通に呼び出すことはできてしまいます。</p>
+
+<pre class="brush: js notranslate">// この例は JavaScript コンソールで直接実行できます
+// ...上の例のつづき
+
+// 普通の関数としても実行できます
+// (あまり必要にはなりませんが)
+YAxisPoint(13);
+
+`${emptyObj.x},${emptyObj.y}`;
+// &gt; '0,13'
+</pre>
+
+<p>バインドされた関数を {{jsxref("Operators/new", "new")}} でしか使えないように制限したい場合、または通常の呼び出しだけに制限したい場合には、ターゲット関数がその制限を強制するようにしなければなりません。</p>
+
+<h3 id="Creating_shortcuts" name="Creating_shortcuts">ショートカットを作成する</h3>
+
+<p><code>bind()</code> は、特定の <code>this</code> を必須とするような関数のショートカットを作成するのにも便利です。</p>
+
+<p>例として、{{jsxref("Array.prototype.slice()")}} を取り上げます。この関数は、配列に似たオブジェクトを本物の配列へ変換するために使えます。まず、次のようにショートカットを作成するとします。</p>
+
+<pre class="brush: js notranslate">const slice = Array.prototype.slice;
+
+// ...
+
+slice.apply(arguments);
+</pre>
+
+<p><code>bind()</code> を使うと、さらにシンプルにできます。</p>
+
+<p>次のコードでは、 <code>slice()</code> が {{jsxref("Function.prototype")}} の {{jsxref("Function.prototype.apply()", "apply()")}} 関数に結びつけられた関数になり、その内側の <code>this</code> 値は {{jsxref("Array.prototype")}} の{{jsxref("Array.prototype.slice()", "slice()")}} 関数にセットされます。こうすると、いちいち <code>apply()</code> を呼び出す必要がなくなります。</p>
+
+<pre class="brush: js notranslate">// ひとつ前の例の "slice" と同じ
+const unboundSlice = Array.prototype.slice;
+const slice = Function.prototype.apply.bind(unboundSlice);
+
+// ...
+
+slice(arguments);
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>古いブラウザーは一般的に遅いブラウザーでもあるので、古いブラウザーでのブラウジングを少しでも悪くなくすために、性能の良いポリフィルを作成することは、多くの人が認識しているよりもはるかに重要なことです。</p>
+
+<p>したがって、 <code>Function.prototype.bind()</code> のポリフィルの選択肢を二つ示します。</p>
+
+<ol>
+ <li>最初の方の方がずっと小さくて性能が良いのですが、 <code>new</code> 演算子を使うとうまくいきません。</li>
+ <li>2 番目の方が大きくて性能が低いですが、<code>new</code>演算子を使ってバインドされた関数を使用することができます。</li>
+</ol>
+
+<p>一般的に、ほとんどのコードでは、バインドされた関数で <code>new</code> が使用されることはとても稀なので、一般的には最初の選択肢を使用するのがベストです。</p>
+
+<pre class="brush: js notranslate">// Does not work with `new (funcA.bind(thisArg, args))`
+if (!Function.prototype.bind) (function(){
+ var slice = Array.prototype.slice;
+ Function.prototype.bind = function() {
+ var thatFunc = this, thatArg = arguments[0];
+ var args = slice.call(arguments, 1);
+ if (typeof thatFunc !== 'function') {
+ // closest thing possible to the ECMAScript 5
+ // internal IsCallable function
+ throw new TypeError('Function.prototype.bind - ' +
+ 'what is trying to be bound is not callable');
+ }
+ return function(){
+ var funcArgs = args.concat(slice.call(arguments))
+ return thatFunc.apply(thatArg, funcArgs);
+ };
+ };
+})();</pre>
+
+<p>以下のコードをスクリプトの先頭に挿入すれば、その状況をいくらか変えることができます。ネイティブで対応されていない実装において、 <code>bind()</code> の多くの機能を使えるようになります。</p>
+
+<pre class="brush: js notranslate">// Yes, it does work with `new (funcA.bind(thisArg, args))`
+if (!Function.prototype.bind) (function(){
+ var ArrayPrototypeSlice = Array.prototype.slice;
+ Function.prototype.bind = function(otherThis) {
+ if (typeof this !== 'function') {
+ // closest thing possible to the ECMAScript 5
+ // internal IsCallable function
+ throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
+ }
+
+ var baseArgs= ArrayPrototypeSlice.call(arguments, 1),
+ baseArgsLength = baseArgs.length,
+ fToBind = this,
+ fNOP = function() {},
+ fBound = function() {
+ baseArgs.length = baseArgsLength; // reset to default base arguments
+ baseArgs.push.apply(baseArgs, arguments);
+ return fToBind.apply(
+ fNOP.prototype.isPrototypeOf(this) ? this : otherThis, baseArgs
+ );
+ };
+
+ if (this.prototype) {
+ // Function.prototype doesn't have a prototype property
+ fNOP.prototype = this.prototype;
+ }
+ fBound.prototype = new fNOP();
+
+ return fBound;
+ };
+})();
+</pre>
+
+<p>このアルゴリズムと仕様上のアルゴリズムとの間には、いくつか大きな違いがあります (真剣に網羅することを目指したわけではないので、他にも差はあるかもしれません)。</p>
+
+<ul>
+ <li>この部分的な実装は、 {{jsxref("Array.prototype.slice()")}}, {{jsxref("Array.prototype.concat()")}}, {{jsxref("Function.prototype.call()")}}, {{jsxref("Function.prototype.apply()")}} という、それぞれオリジナルの値を持つ組み込みメソッドに依存している。</li>
+ <li>この不完全な実装がつくり出す関数は、不変の (immutable) "poison pill" {{jsxref("Function.caller", "caller")}} プロパティと <code>arguments</code> プロパティ (get, set, delete の際に {{jsxref("Global_Objects/TypeError", "TypeError")}} を投げる{{訳注("strict mode での話をしているようだ")}}) を持たない ({{jsxref("Object.defineProperty")}} をサポートする実装の上ではこれを追加することができる。あるいは {{jsxref("Object.__defineGetter__", "__defineGetter__")}} と {{jsxref("Object.__defineSetter__", "__defineSetter__")}} に対応する実装上でも部分的に実装可能だが、 delete の際に例外を投げるようにはできない)。</li>
+ <li>この不完全な実装は <code>prototype</code> プロパティを持つ関数をつくり出す (正規の束縛された関数には存在しない)。</li>
+ <li>この不完全な実装でつくられた束縛された関数の <code>length</code> プロパティは、 ECMA-262 で示されているものと一致しない。この実装がつくる関数の <code>length</code> は常に 0 だが、完全な実装においては、ターゲット関数と先行定義引数の長さ次第で、0 ではない長さになりうる。</li>
+ <li>この部分的な実装では、生成されたバインドされた関数の {{jsxref("Function.name", "name")}} プロパティが元の関数名から派生したものではありません。 ECMA-262 によれば、返されるバインドされた関数の名前は "bound " + ターゲット関数の名前です (空白文字に注意してください)。</li>
+</ul>
+
+<p>この部分的な実装を使用することを選択した場合、<strong>ECMA-262 第5版から動作が逸脱している場合には、それに頼ってはいけません!</strong> ありがたいことに、このような仕様からの逸脱は、ほとんどのコーディングの状況では (今までにも) ほとんど出てきません。上記の仕様からの逸脱を理解していない場合は、この特定のケースでは、これらの非準拠の逸脱の詳細を気にしないのが安全です。</p>
+
+<p>どうしても必要で、性能が気にならない場合は、はるかに遅い (しかし、より仕様に準拠した) 解決法が <a href="https://github.com/Raynos/function-bind">https://github.com/Raynos/function-bind</a> にあります。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function.prototype.bind', 'Function.prototype.bind')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function.bind")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Function.prototype.apply()")}}</li>
+ <li>{{jsxref("Function.prototype.call()")}}</li>
+ <li>{{jsxref("Functions", "Functions", "", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/function/call/index.html b/files/ja/web/javascript/reference/global_objects/function/call/index.html
new file mode 100644
index 0000000000..22febfb7f2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/call/index.html
@@ -0,0 +1,181 @@
+---
+title: Function.prototype.call()
+slug: Web/JavaScript/Reference/Global_Objects/Function/call
+tags:
+ - Call
+ - Function
+ - JavaScript
+ - Method
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/call
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><code><strong>call()</strong></code> メソッドは、 <code>this</code> の値と、独立して提供された引数によって関数を呼び出します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/function-call.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>func</var>.call([<var>thisArg</var>[, <var>arg1</var>, <var>arg2</var>, ...<var>argN</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>thisArg</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p><code><var>func</var></code> が呼び出されたときに <code>this</code> として使用される値です。</p>
+
+ <div class="blockIndicator note">
+ <p><strong>注意:</strong> 特定の場面では、 <code><var>thisArg</var></code> はメソッドから見える実際の値でない場合があります。</p>
+
+ <p>もし、そのメソッドが{{jsxref("Strict_mode", "厳格モード", "", 1)}}の関数ではなかった場合、 {{jsxref("Global_Objects/null", "null")}} と {{jsxref("Global_Objects/undefined", "undefined")}} はグローバルオブジェクトで置き換えられ、プリミティブ値はオブジェクトに変換されます。</p>
+ </div>
+ </dd>
+ <dt><code><var>arg1</var>, <var>arg2</var>, ...<var>argN</var></code> {{optional_inline}}</dt>
+ <dd>呼び出し先の関数に渡される引数です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code><strong>this</strong></code> の値と引数を指定して関数を呼び出した結果です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>call()</code> はあるオブジェクトに所属する関数やメソッドを、別なオブジェクトに割り当てて呼び出すことができます。</p>
+
+<p><code>call()</code> は関数やメソッドに <code>this</code> の新しい値を提供します。 <code>call()</code> によって、いったんメソッドを書いてから、新しいオブジェクトへメソッドを描き直さずに他のオブジェクトへと継承することができます。</p>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> このメソッドの構文は {{jsxref("Function.prototype.apply", "apply()")}} とほぼ同じですが、基本的な違いは <code>call()</code> が<strong>引数リスト</strong>を受け取るのに対して、 <code>apply()</code> は<strong>引数の単一の配列</strong>を受け取る点です。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_call_to_chain_constructors_for_an_object" name="Using_call_to_chain_constructors_for_an_object">call メソッドを使用してオブジェクトのコンストラクターを連鎖させる</h3>
+
+<p><code>call</code> を使用して (Java と同様に) オブジェクトのコンストラクターを連鎖させることができます。</p>
+
+<p>下記の例では、 <code>Product</code> オブジェクトのコンストラクターは <code>name</code> と <code>price</code> の二つの引数で定義されています。</p>
+
+<p>他の <code>Food</code> と <code>Toy</code> の二つの関数は、 <code>Product</code> を呼び出して <code>this</code> と <code>name</code> と <code>price</code> を渡します。 <code>Product</code> は <code>name</code> と <code>price</code> プロパティを初期化し、どちらも特化した関数が <code>category</code> を定義します。</p>
+
+<pre class="brush: js notranslate">function Product(name, price) {
+ this.name = name;
+ this.price = price;
+}
+
+function Food(name, price) {
+ Product.call(this, name, price);
+ this.category = 'food';
+}
+
+function Toy(name, price) {
+ Product.call(this, name, price);
+ this.category = 'toy';
+}
+
+const cheese = new Food('feta', 5);
+const fun = new Toy('robot', 40);
+</pre>
+
+<h3 id="Using_call_to_invoke_an_anonymous_function" name="Using_call_to_invoke_an_anonymous_function">call メソッドを使用した無名関数の呼び出し</h3>
+
+<p>次の例では、無名関数を作成して <code>call</code> を使用して配列内の各オブジェクトに対して呼び出しを行います。</p>
+
+<p>ここでの無名関数の主な目的は、 print 関数をすべてのオブジェクトに追加することで、配列内のオブジェクトの正しいインデックスを表示できるようにします。実際には <code>this</code> の値としてオブジェクトを渡す必要ありませんが、例示の目的で使用しています。</p>
+
+<div class="blockIndicator note">
+<p>オブジェクトを <code>this</code> の値として渡すことは厳密には必要ではありませんが、説明のために使用しました。</p>
+</div>
+
+<pre class="brush: js notranslate">const animals = [
+ { species: 'Lion', name: 'King' },
+ { species: 'Whale', name: 'Fail' }
+];
+
+for (let i = 0; i &lt; animals.length; i++) {
+ (function(i) {
+ this.print = function() {
+ console.log('#' + i + ' ' + this.species
+ + ': ' + this.name);
+ }
+ this.print();
+ }).call(animals[i], i);
+}
+</pre>
+
+<h3 id="Using_call_to_invoke_a_function_and_specifying_the_context_for_this" name="Using_call_to_invoke_a_function_and_specifying_the_context_for_'this'">call を使用した関数を呼び出しと 'this' のコンテキストの指定</h3>
+
+<p>次の例では、<code>greet</code> メソッドを呼ぶとき、<code>this</code> の値を <code>obj</code> オブジェクトにバインドしています。</p>
+
+<pre class="brush: js notranslate">function greet() {
+ const reply = [this.animal, 'typically sleep between', this.sleepDuration].join(' ');
+ console.log(reply);
+}
+
+const obj = {
+ animal: 'cats', sleepDuration: '12 and 16 hours'
+};
+
+greet.call(obj); // cats typically sleep between 12 and 16 hours
+</pre>
+
+<h3 id="Using_call_to_invoke_a_function_and_without_specifying_the_first_argument" name="Using_call_to_invoke_a_function_and_without_specifying_the_first_argument"><code>call</code> を使用した最初の引数を指定しない関数の呼び出し</h3>
+
+<p>下記の例では、 <code>display</code> 関数を、最初の引数を渡さずに呼び出しています。最初の引数が渡されないと、 <code>this</code> の値はグローバルオブジェクトに結び付けられます。</p>
+
+<pre class="brush: js notranslate">var sData = 'Wisen';
+
+function display() {
+ console.log('sData value is %s ', this.sData);
+}
+
+display.call(); // sData value is Wisen</pre>
+
+<div class="note">
+<p><strong>注:</strong> 厳格モードでは <code>this</code> の値は <code>undefined</code> になります。以下を参照してください。</p>
+</div>
+
+<pre class="brush: js notranslate">'use strict';
+
+var sData = 'Wisen';
+
+function display() {
+ console.log('sData value is %s ', this.sData);
+}
+
+display.call(); // undefined の 'sData' のプロパティは読めない</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function.prototype.call', 'Function.prototype.call')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function.call")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Function.prototype.bind()")}}</li>
+ <li>{{jsxref("Function.prototype.apply()")}}</li>
+ <li>
+ <p><a href="/ja/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript">オブジェクト指向 JavaScript 入門</a></p>
+ </li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/function/caller/index.html b/files/ja/web/javascript/reference/global_objects/function/caller/index.html
new file mode 100644
index 0000000000..0261d4f48d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/caller/index.html
@@ -0,0 +1,84 @@
+---
+title: Function.caller
+slug: Web/JavaScript/Reference/Global_Objects/Function/caller
+tags:
+ - Deprecated
+ - Function
+ - JavaScript
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/caller
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code><var>function</var>.caller</code></strong> プロパティは、指定した関数の呼び出し元の関数を返します。厳格モード、非同期関数、ジェネレーター関数の呼び出し元については <code>null</code> を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>関数 <code>f</code> が最上位のコードで呼び出された場合、 <code>f.caller</code> の値は {{jsxref("null")}} に、それ以外の場合の値は <code>f</code> を呼び出した関数になります。厳格モード、非同期関数、ジェネレーター関数の呼び出し元についても <code>null</code> を返します。</p>
+
+<p>このプロパティは、廃止された {{jsxref("Functions/arguments", "arguments")}} オブジェクトの {{jsxref("Functions/arguments/caller", "arguments.caller")}} プロパティを置き換えます。</p>
+
+<p>特殊プロパティである <code>__caller__</code> は呼び出し元の activation オブジェクトを返し、スタックの再現に利用できましたが、セキュリティ上の理由により削除されました。</p>
+
+<h3 id="Notes" name="Notes">注</h3>
+
+<p>再帰呼び出しの場合、このプロパティを用いてコールスタックを再現することはできません。以下について考えてみましょう。</p>
+
+<pre class="brush: js notranslate">function f(n) { g(n - 1); }
+function g(n) { if (n &gt; 0) { f(n); } else { stop(); } }
+f(2);
+</pre>
+
+<p><code>stop()</code> が呼び出された時点のコールスタックは以下のようになるでしょう。</p>
+
+<pre class="brush: js notranslate">f(2) -&gt; g(1) -&gt; f(1) -&gt; g(0) -&gt; stop()
+</pre>
+
+<p>以下は真になります。</p>
+
+<pre class="brush: js notranslate">stop.caller === g &amp;&amp; f.caller === g &amp;&amp; g.caller === f
+</pre>
+
+<p>従って、<code>stop()</code> 関数のスタックトレースを以下のようにして取得するとします。</p>
+
+<pre class="brush: js notranslate">var f = stop;
+var stack = 'Stack trace:';
+while (f) {
+ stack += '\n' + f.name;
+ f = f.caller;
+}
+</pre>
+
+<p>これは無限ループになります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Checking_the_value_of_a_functions_caller_property" name="Checking_the_value_of_a_functions_caller_property">関数の caller プロパティの値を確認する</h3>
+
+<p>以下のコードは、関数の <code>caller</code> プロパティの値を確認します。</p>
+
+<pre class="brush: js notranslate">function myFunc() {
+ if (myFunc.caller == null) {
+ return 'The function was called from the top!';
+ } else {
+ return 'This function\'s caller was ' + myFunc.caller;
+ }
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>いずれの標準仕様でも定義されていません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function.caller")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Function.name", "Function.name")}}</li>
+ <li>{{jsxref("Functions/arguments", "arguments")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/function/displayname/index.html b/files/ja/web/javascript/reference/global_objects/function/displayname/index.html
new file mode 100644
index 0000000000..d197df7952
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/displayname/index.html
@@ -0,0 +1,90 @@
+---
+title: Function.displayName
+slug: Web/JavaScript/Reference/Global_Objects/Function/displayName
+tags:
+ - Function
+ - JavaScript
+ - Non-standard
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/displayName
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p><strong><code><var>function</var>.displayName</code></strong> プロパティは、関数の表示名を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Setting_a_displayName" name="Setting_a_displayName">displayName の設定</h3>
+
+<p>通常、コンソールやプロファイラーでは関数名を表示するのに {{jsxref("Function.name", "func.name")}} よりも好まれます。</p>
+
+<p>以下のものをコンソールに入力すると、 "<code>function My Function()</code>" のように表示されます。</p>
+
+<pre class="brush: js notranslate">var a = function() {};
+a.displayName = 'My Function';
+
+a; // "function My Function()"</pre>
+
+<p><code>displayName</code> プロパティが定義されると、関数の表示名が返されます。</p>
+
+<pre class="brush: js notranslate">function doSomething() {}
+
+console.log(doSomething.displayName); // "undefined"
+
+var popup = function(content) { console.log(content); };
+
+popup.displayName = 'Show Popup';
+
+console.log(popup.displayName); // "Show Popup"
+</pre>
+
+<h3 id="Defining_a_displayName_in_function_expressions" name="Defining_a_displayName_in_function_expressions">関数式の displayName の定義</h3>
+
+<p>{{jsxref("Functions_and_function_scope", "関数式", "", 1)}}内で、関数と同時に表示名を定義できます。</p>
+
+<pre class="brush: js notranslate">var object = {
+ someMethod: function() {}
+};
+
+object.someMethod.displayName = 'someMethod';
+
+console.log(object.someMethod.displayName); // logs "someMethod"
+
+try { someMethod } catch(e) { console.log(e); }
+// ReferenceError: someMethod is not defined
+</pre>
+
+<h3 id="Changing_displayName_dynamically" name="Changing_displayName_dynamically">動的な displayName の変更</h3>
+
+<p>関数の <code>displayName</code> を動的に変更できます。</p>
+
+<pre class="brush: js notranslate">var object = {
+ // anonymous
+ someMethod: function(value) {
+ arguments.callee.displayName = 'someMethod (' + value + ')';
+ }
+};
+
+console.log(object.someMethod.displayName); // "undefined"
+
+object.someMethod('123')
+console.log(object.someMethod.displayName); // "someMethod (123)"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>どの仕様にも含まれていません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function.displayName")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Function.name")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/function/function/index.html b/files/ja/web/javascript/reference/global_objects/function/function/index.html
new file mode 100644
index 0000000000..0cc3ed2489
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/function/index.html
@@ -0,0 +1,91 @@
+---
+title: Function() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Function/Function
+tags:
+ - Constructor
+ - Function
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/Function
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Function</code> コンストラクター</strong>は、新しい <code>Function</code> <strong>オブジェクト</strong>を生成します。コンストラクターを直接呼び出すと動的に関数を生成することができますが、セキュリティや、 {{jsxref("eval")}} と似た性能の (ただし、はるかに重要性の低い) 問題を抱えます。ただし eval とは異なり、 <code>Function</code> コンストラクターはグローバルスコープで実行される関数のみを生成します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/function-constructor.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>new Function([<var>arg1 </var>[, <var>arg2 </var>[, ...<var>argN</var>]] ,] <var>functionBody</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>arg1</var>, <var>arg2</var>, ... <var>argN</var></code></dt>
+ <dd>仮引数の名前として関数で用いるための名前。各々は、妥当な JavaScript の識別子と一致する文字列か、カンマで区切られた文字列などのリストでなければなりません。例えば、 "<code>x</code>", "<code>theValue</code>", "<code>x,theValue</code>" などです。</dd>
+ <dt><code><var>functionBody</var></code></dt>
+ <dd>関数定義を形成する JavaScript の文を含む文字列。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Function</code> コンストラクターで生成された <code>Function</code> オブジェクトは、関数が作成されたときに解釈されます。これは、関数を{{jsxref("Operators/function", "関数式", "", 1)}}や{{jsxref("Statements/function", "関数文", "", 1)}}を使って定義してコード内で呼び出した場合に比べ、コードの他の部分と一緒に解釈されるため、効率が落ちます。</p>
+
+<p>関数に渡されるすべての引数は、関数のパラメーター識別名として、渡される順番どおりに作成されます。引数を省略すると、その引数の値は <code>undefined</code> になります。</p>
+
+<p>(<code>new</code> 演算子を用いずに) 関数として、<code>Function</code> コンストラクターを実行することは、コンストラクターとして実行することと同じです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Specifying_arguments_with_the_Function_constructor" name="Specifying_arguments_with_the_Function_constructor">Function コンストラクターに引数を指定する</h3>
+
+<p>以下のコードは二つの引数を取る <code>Function</code> オブジェクトを生成します。</p>
+
+<pre class="brush: js notranslate">// この例は JavaScript コンソールで直接実行することができます
+
+// 二つの引数を取り、その合計を返す関数を生成します
+const adder = new Function('a', 'b', 'return a + b');
+
+// 関数を呼び出します
+adder(2, 6);
+// 8
+</pre>
+
+<p>引数 "<code>a</code>" および "<code>b</code>" は関数の本体 "<code>return a + b</code>" の中で使用される形式的な引数名です。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function-constructor', 'Function constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Functions", "関数と関数スコープ", "", 1)}}</li>
+ <li>{{jsxref("Statements/function", "function")}} 文</li>
+ <li>{{jsxref("Operators/function", "function")}} 式</li>
+ <li>{{jsxref("Statements/function*", "function*")}} 文</li>
+ <li>{{jsxref("Operators/function*", "function*")}} 式</li>
+ <li>{{jsxref("AsyncFunction")}}</li>
+ <li>{{jsxref("GeneratorFunction")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/function/index.html b/files/ja/web/javascript/reference/global_objects/function/index.html
new file mode 100644
index 0000000000..25856fcd15
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/index.html
@@ -0,0 +1,114 @@
+---
+title: Function
+slug: Web/JavaScript/Reference/Global_Objects/Function
+tags:
+ - Class
+ - Function
+ - JavaScript
+translation_of: Web/JavaScript/Reference/Global_Objects/Function
+---
+<div>{{JSRef}}</div>
+
+<p>JavaScript の関数は、実際にはすべて <code>Function</code> オブジェクトです。これは、 <code>(function(){}).constructor === Function</code> というコードが true を返すことで確認することができます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Function/Function", "Function()")}}</dt>
+ <dd>新しい <code>Function</code> オブジェクトを生成します。コンストラクターを直接呼び出すと関数を動的に生成することができますが、セキュリティや、 {{jsxref("eval")}} と似た性能の (ただし、はるかに重要性の低い) 問題を抱えます。ただし eval とは異なり、 <code>Function</code> コンストラクターはグローバルスコープで実行される関数のみを生成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Function.arguments")}}</dt>
+ <dd>関数に渡した引数に対応する配列です。<br>
+ これは {{jsxref("Function")}} オブジェクトのプロパティとしては非推奨です。代わりに関数内に用意されている {{jsxref("Functions/arguments", "arguments")}} オブジェクト (関数内で使用可能) を使用してください。</dd>
+ <dt>{{jsxref("Function.caller")}}</dt>
+ <dd>現在実行している関数を呼び出した関数を返します。<br>
+ このプロパティは非推奨であり、一部の厳格モードではない関数でのみ機能します。</dd>
+ <dt>{{jsxref("Function.displayName")}}</dt>
+ <dd>関数の表示名です。</dd>
+ <dt>{{jsxref("Function.length")}}</dt>
+ <dd>関数によって期待される引数の数を指定します。</dd>
+ <dt>{{jsxref("Function.name")}}</dt>
+ <dd>関数の名前です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Function.prototype.apply()", "Function.prototype.apply(<var>thisArg</var> [, <var>argsArray</var>])")}}</dt>
+ <dd>関数を呼び出し、 <code>this</code> を提供された <code><var>thisArg</var></code> に設定します。引数は {{jsxref("Array")}} として渡すことができます。</dd>
+ <dt>{{jsxref("Function.prototype.bind()", "Function.prototype.bind(<var>thisArg</var>[, <var>arg1</var>[, <var>arg2</var>[, ...<var>argN</var>]]])")}}</dt>
+ <dd>新しい関数を作成し、呼び出されたときに、 <code>this</code> を提供された <code><var>thisArg</var></code> に設定します。任意で、指定された一連の引数が、新しく結びつけられた関数が呼び出されたときに与えられた引数の前に付加されます。</dd>
+ <dt>{{jsxref("Function.prototype.call()", "Function.prototype.call(<var>thisArg</var>[, <var>arg1</var>, <var>arg2</var>, ...<var>argN</var>])")}}</dt>
+ <dd>関数を呼び出して、 <code>this</code> に提供した値を設定します。引数は、指定するオブジェクトのものとして渡すことができます。</dd>
+ <dt>{{jsxref("Function.prototype.toString()", "Function.prototype.toString()")}}</dt>
+ <dd>関数のソースコードを表す文字列を返します。<br>
+ {{jsxref("Object.prototype.toString")}} メソッドを上書きします。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Difference_between_Function_constructor_and_function_declaration" name="Difference_between_Function_constructor_and_function_declaration">Funciton コンストラクターと関数宣言の違い</h3>
+
+<p><code>Function</code> コンストラクターで生成された関数は、生成コンテキストにクロージャを作りません。つまり常にグローバルスコープで生成されます。これを実行すると、 <code>Function</code> コンストラクターの呼び出し元のスコープは入らず、自身のローカル変数とグローバル変数だけにアクセスできます。これは関数式のコードに {{jsxref("eval")}} を使うのとは異なります。</p>
+
+<pre class="brush: js notranslate">var x = 10;
+
+function createFunction1() {
+ var x = 20;
+ return new Function('return x;'); // この |x| はグローバルの |x| を表す
+}
+
+function createFunction2() {
+ var x = 20;
+ function f() {
+ return x; // この |x| は上記のローカルの |x| を表す
+ }
+ return f;
+}
+
+var f1 = createFunction1();
+console.log(f1()); // 10
+var f2 = createFunction2();
+console.log(f2()); // 20
+</pre>
+
+<p>このコードはウェブブラウザーでは動作しますが、 Node.js では <code>f1()</code> で <code>ReferenceError</code> が発生します。 <code>x</code> が見つからないためです。これは Node の最上位のスコープがグローバルスコープではなく、 <code>x</code> はモジュールのローカルになるからです。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function-objects', 'Function')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Functions", "関数と関数スコープ", "", 1)}}</li>
+ <li>{{jsxref("Statements/function", "function")}} 文</li>
+ <li>{{jsxref("Operators/function", "function")}} 式</li>
+ <li>{{jsxref("Statements/function*", "function*")}} 文</li>
+ <li>{{jsxref("Operators/function*", "function*")}} 式</li>
+ <li>{{jsxref("AsyncFunction")}}</li>
+ <li>{{jsxref("GeneratorFunction")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/function/length/index.html b/files/ja/web/javascript/reference/global_objects/function/length/index.html
new file mode 100644
index 0000000000..f64e2ee9d7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/length/index.html
@@ -0,0 +1,76 @@
+---
+title: Function.length
+slug: Web/JavaScript/Reference/Global_Objects/Function/length
+tags:
+ - Function
+ - JavaScript
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/length
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>length</code></strong> プロパティは、関数が期待する引数の数を示します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/function-length.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0,0,1)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>length</code> は function オブジェクトのプロパティであり、関数が期待する引数の数、つまり形式上の引数の数を示します。この数に{{jsxref("rest_parameters", "残余引数", "", 1)}}は含まれず、既定値を持つ引数が最初に登場する前までしか含みません。これに対し、 {{jsxref("Functions_and_function_scope/arguments/length", "arguments.length")}} は関数のローカルスコープ内で用いられ、関数が実際に受け取った引数の数、つまり実引数の数を参照するのに用いるものです。</p>
+
+<h3 id="Data_property_of_the_Function_constructor" name="Data_property_of_the_Function_constructor">Function コンストラクターのデータプロパティ</h3>
+
+<p>{{jsxref("Function")}} コンストラクター自体は、{{jsxref("Function")}} オブジェクトです。この <code>length</code> データプロパティの値は 1 です。プロパティの属性は、 Writable: <code>false</code>、Enumerable: <code>false</code>、Configurable: <code>true</code> です。</p>
+
+<h3 id="Property_of_the_Function_prototype_object" name="Property_of_the_Function_prototype_object">Function プロトタイプのオブジェクトのプロパティ</h3>
+
+<p>{{jsxref("Function")}} プロトタイプオブジェクトの length プロパティの値は 0 です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_function_length" name="Using_function_length">関数の length の使用</h3>
+
+<pre class="brush: js notranslate">console.log(Function.length); /* 1 */
+
+console.log((function() {}).length); /* 0 */
+console.log((function(a) {}).length); /* 1 */
+console.log((function(a, b) {}).length); /* 2 etc. */
+
+console.log((function(...args) {}).length);
+// 0, rest parameter は数に含まれない
+
+console.log((function(a, b = 1, c) {}).length);
+// 1, 既定値を持つ引数が最初に登場する前までの
+// 引数だけが数に含まれる</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function-instances-length', 'Function.length')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function.length")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Function")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/function/name/index.html b/files/ja/web/javascript/reference/global_objects/function/name/index.html
new file mode 100644
index 0000000000..bdc6731b70
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/name/index.html
@@ -0,0 +1,233 @@
+---
+title: Function.name
+slug: Web/JavaScript/Reference/Global_Objects/Function/name
+tags:
+ - ECMAScript6
+ - Function
+ - JavaScript
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/name
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary">{{jsxref("Function")}} オブジェクトの <strong><code>name</code></strong> プロパティは読み取り専用で、作成時に付けられた関数の名前、もしくは無名関数の場合は <code>anonymous</code> または <code>''</code> (空文字列) を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/function-name.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<div>{{js_property_attributes(0,0,1)}}</div>
+
+<div class="note">
+<p>標準外であった ES2015 以前の実装では、<code>configurable</code> 属性も <code>false</code> であることに注意してください。</p>
+</div>
+
+<h2 id="JavaScript_compressors_and_minifiers" name="JavaScript_compressors_and_minifiers">JavaScript の圧縮とミニファイ</h2>
+
+<div class="warning">
+<p><strong>警告:</strong> <code>Function.name</code> を使用しているときに、 JavaScript の圧縮 (ミニファイ) や難読化のような変換を行う際には注意が必要です。これらのツールは JavaScript ビルドパイプラインの一部として、本番環境に設置する前にプログラムのサイズを縮小するためによく使用されます。それらの変換は、ビルド時に関数名を変更することがあります。</p>
+</div>
+
+<p>次のようなソースコードは、</p>
+
+<pre class="brush: js notranslate">function Foo() {};
+let foo = new Foo();
+
+if (foo.constructor.name === 'Foo') {
+ console.log("'foo' は 'Foo' のインスタンスである");
+} else {
+ console.log('おおっと!');
+}
+</pre>
+
+<p>このように圧縮されるかもしれません。</p>
+
+<pre class="brush: js notranslate">function a() {};
+let b = new a();
+if (b.constructor.name === 'Foo') {
+ console.log("'foo' は 'Foo' のインスタンスである");
+} else {
+ console.log('おおっと!');
+}
+</pre>
+
+<p>非圧縮版では、プログラムは真の方の分岐を実行し、「<code>'foo' は 'Foo' のインスタンスである</code>」と表示するのに対し、圧縮版は異なる振る舞いをし、偽の方の分岐を実行します。それゆえ、上述の例のように <code>Function.name</code> に依存するならば、ビルドパイプラインが関数名を変更しないようにするか、特定の関数名を想定しない構造にする必要があります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Function_statement_name" name="Function_statement_name">関数文の名前</h3>
+
+<p><code>name</code> プロパティは関数文の名前を返します。</p>
+
+<pre class="brush: js notranslate">function doSomething() {}
+doSomething.name; // "doSomething"
+</pre>
+
+<h3 id="Function_constructor_name" name="Function_constructor_name">Function コンストラクターの名前</h3>
+
+<p>構文 <code>new Function(...)</code> または単に <code>Function(...)</code> で関数を作成すると、 {{jsxref("Function")}} オブジェクトが作成され、その名前は "anonymous" になります。</p>
+
+<pre class="brush: js notranslate">(new Function).name; // "anonymous"</pre>
+
+<h3 id="Anonymous_function_expression" name="Anonymous_function_expression">無名関数式</h3>
+
+<p><code>function</code> キーワードを使用して生成された関数式またはアロー関数は、名前が <code>""</code> (空文字列) になっています。</p>
+
+<pre class="brush: js notranslate">(function() {}).name; // ""
+(() =&gt; {}).name; // ""
+</pre>
+
+<h3 id="Inferred_function_names" name="Inferred_function_names">関数名の推測</h3>
+
+<p>変数とメソッドは、構文上の位置から無名関数の名前を推論できます (ECMAScript 2015 から)。</p>
+
+<pre class="brush: js notranslate">let f = function() {};
+let object = {
+ someMethod: function() {}
+};
+
+console.log(f.name); // "f"
+console.log(object.someMethod.name); // "someMethod"
+</pre>
+
+<p>{{jsxref("Operators/Function", "関数式", "", 1)}} で名前を持つ関数を定義することができます。</p>
+
+<pre class="brush: js notranslate">let object = {
+ someMethod: function object_someMethod() {}
+};
+console.log(object.someMethod.name); // "object_someMethod" と表示
+
+try { object_someMethod } catch(e) { console.log(e); }
+// ReferenceError: object_someMethod is not defined
+</pre>
+
+<p>name プロパティは読み取り専用であり、代入演算子で変更することはできません。</p>
+
+<div class="hidden">
+<p>以下の例は、この節の冒頭で言われていることと矛盾しており、記述通りには動作しません。</p>
+</div>
+
+<pre class="brush: js notranslate"> let object = {
+ // anonymous
+ someMethod: function() {}
+};
+
+object.someMethod.name = 'otherMethod';
+console.log(object.someMethod.name); // someMethod
+</pre>
+
+<p>変更したければ、{{jsxref("Object.defineProperty()")}} を使ってください。</p>
+
+<h3 id="Shorthand_method_names" name="Shorthand_method_names">短縮メソッドの名前</h3>
+
+<pre class="brush: js notranslate">var o = {
+ foo(){}
+};
+o.foo.name; // "foo";</pre>
+
+<h3 id="Bound_function_names" name="Bound_function_names">バインドされた関数の名前</h3>
+
+<p>{{jsxref("Function.bind()")}} が関数を作成する時、その名前は "bound " とその関数名を合わせたものとなります。</p>
+
+<pre class="brush: js notranslate">function foo() {};
+foo.bind({}).name; // "bound foo"
+</pre>
+
+<h3 id="Function_names_for_getters_and_setters" name="Function_names_for_getters_and_setters">ゲッターとセッターの関数名</h3>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Operators/get">get</a></code> と <code><a href="/ja/docs/JavaScript/Reference/Operators/set">set</a></code> を使う時は、 "get" や "set" が関数名に含まれます。</p>
+
+<pre class="brush: js notranslate">let o = {
+ get foo(){},
+ set foo(x){}
+};
+
+var descriptor = Object.getOwnPropertyDescriptor(o, "foo");
+descriptor.get.name; // "get foo"
+descriptor.set.name; // "set foo";</pre>
+
+<h3 id="Function_names_in_classes" name="Function_names_in_classes">クラスでの関数名</h3>
+
+<p><code>obj.constructor.name</code> でオブジェクトの「クラス」を知ることができます (ただし、下記の警告を確認してください)。</p>
+
+<pre class="brush: js notranslate">function Foo() {} // ES2015 構文の場合: class Foo {}
+
+var fooInstance = new Foo();
+console.log(fooInstance.constructor.name); // "Foo" と表示
+</pre>
+
+<div class="warning">
+<p><strong>警告:</strong> スクリプトインタープリターは、関数が自身の <em>name</em> プロパティを持っていない場合に限り、組み込みの <code>Function.name</code> プロパティを設定します (<a href="http://www.ecma-international.org/ecma-262/6.0/#sec-setfunctionname">9.11.2. of the ECMAScript2015 Language Specification</a> セクションをご覧ください)。しかし ES2015 では、<em>static</em> キーワードを指定すると、その静的メソッドはクラスのコンストラクタ関数の OwnProperty として設定されます (ECMAScript2015, <a href="https://www.ecma-international.org/ecma-262/6.0/#sec-runtime-semantics-classdefinitionevaluation">14.5.14.21.b</a> + <a href="https://www.ecma-international.org/ecma-262/6.0/#sec-object-initializer-runtime-semantics-propertydefinitionevaluation">12.2.6.9</a>)。</p>
+</div>
+
+<p>従って、<code>name()</code> という静的メソッドを持つクラスでは、事実上そのクラス名を取得することはできません:</p>
+
+<pre class="brush: js notranslate">class Foo {
+ constructor() {}
+ static name() {}
+}
+</pre>
+
+<p><code>static name()</code> メソッドが存在する場合、<code>Foo.name</code> はクラス名ではなく、 <code>name()</code> 関数オブジェクトへの参照を持つことになります。Chrome や Firefox では、上記の ES2015 の構文によるクラス定義は、下記の ES5 構文のコードと同じような挙動をします:</p>
+
+<pre class="brush: js notranslate">function Foo() {}
+Object.defineProperty(Foo, 'name', { writable: true });
+Foo.name = function() {};
+</pre>
+
+<p><code>fooInstance.constructor.name</code> で <code>fooInstance</code> のクラスを取得しようとしても、得られるのはクラス名ではなく静的メソッドへの参照です。例えば:</p>
+
+<pre class="brush: js notranslate">let fooInstance = new Foo();
+console.log(fooInstance.constructor.name); // 関数 name() を表示
+</pre>
+
+<p>先ほどの ES5 の構文の例では、Chrome や Firefox での <code>Foo.name</code> の静的な定義の際に <em>writable</em> を指定しています。このような独自の手法を用いなければ、デフォルトでは <em>read-only</em> となります:</p>
+
+<pre class="brush: js notranslate">Foo.name = 'Hello';
+console.log(Foo.name); // Foo が static name() を持つ場合は "Hello"、そうでなければ "Foo" と表示する。
+</pre>
+
+<p>従って、<code>Function.name</code> プロパティが常にクラス名を保持しているとは考えないほうがいいでしょう。</p>
+
+<h3 id="Symbols_as_function_names" name="Symbols_as_function_names">関数名としての Symbol</h3>
+
+<p>{{jsxref("Symbol")}} を関数名として使用し、Symbol が description を持っている場合、関数名はブラケット <code>[ ]</code> 内の description となります。</p>
+
+<pre class="brush: js notranslate">let sym1 = Symbol("foo");
+let sym2 = Symbol();
+let o = {
+ [sym1]: function(){},
+ [sym2]: function(){}
+};
+
+o[sym1].name; // "[foo]"
+o[sym2].name; // ""</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function-instances-name', 'name')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function.name")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Function")}}</li>
+</ul>
+</div>
diff --git a/files/ja/web/javascript/reference/global_objects/function/tosource/index.html b/files/ja/web/javascript/reference/global_objects/function/tosource/index.html
new file mode 100644
index 0000000000..6fdc0141be
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/tosource/index.html
@@ -0,0 +1,69 @@
+---
+title: Function.prototype.toSource()
+slug: Web/JavaScript/Reference/Global_Objects/Function/toSource
+tags:
+ - Function
+ - JavaScript
+ - Method
+ - Non-standard
+ - Obsolete
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/toSource
+---
+<div>{{JSRef}} {{obsolete_header}}</div>
+
+<p><strong><code>toSource()</code></strong> メソッドは、オブジェクトのソースコードを表す文字列を返します。このメソッドは通常、コード中で明示的に呼び出されるのではなく、 JavaScript から内部的に呼び出されます。デバッグ中にオブジェクトの内容を調査する目的で <code>toSource()</code> を呼び出すことができます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>function</var>.toSource();
+</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>オブジェクトのソースコードを表す文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<h3 id="Native_functions" name="Native_functions">ネイティブ関数</h3>
+
+<p>組込みの {{jsxref("Function")}} オブジェクトでは、 <code>toSource()</code> は次の文字列を返してソースコードが使用できないことを示します。</p>
+
+<pre class="brush: js notranslate">function Function() {
+ [native code]
+}
+</pre>
+
+<h3 id="Custom_functions" name="Custom_functions">独自の関数</h3>
+
+<p>独自に作成した関数では、 <code>toSource()</code> はオブジェクトを定義する JavaScript のソースコードを文字列として返します。</p>
+
+<pre class="brush: js notranslate">// 例:
+function hello() {
+ console.log("Hello, World!");
+}
+
+hello.toSource();
+</pre>
+
+<pre class="brush: js notranslate">// 結果:
+"function hello() {
+ console.log(\"Hello, World!\");
+}"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>いずれの標準仕様でも定義されていません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function.toSource")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toSource()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/function/tostring/index.html b/files/ja/web/javascript/reference/global_objects/function/tostring/index.html
new file mode 100644
index 0000000000..bd433a5b99
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/function/tostring/index.html
@@ -0,0 +1,216 @@
+---
+title: Function.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/Function/toString
+tags:
+ - Function
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/toString
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>toString()</strong></code> メソッドは、関数のソースコードを表す文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/function-tostring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>function</var>.toString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>関数のソースコードを表す文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Function")}} オブジェクトは、 {{jsxref("Object")}} から継承した {{jsxref("Object.prototype.toString", "toString")}} メソッドをオーバーライドします。つまり、 {{jsxref("Object.prototype.toString")}} を継承しません。 {{jsxref("Function")}} オブジェクトについて、 <code>toString</code> メソッドは関数宣言を表現するオブジェクトを表す文字列を返します。</p>
+
+<p>{{jsxref("Function")}} を文字列値として表現するとき、JavaScript は自動的に <code>toString</code> メソッドを呼び出します。例えば、関数が文字列と連結されるときです。</p>
+
+<p><code>this</code> 値のオブジェクトが <code>Function</code> オブジェクトでない場合、 <code>toString()</code> メソッドは {{jsxref("TypeError")}} 例外 ("Function.prototype.toString called on incompatible object") を発生します。</p>
+
+<pre class="brush: js example-bad notranslate">Function.prototype.toString.call('foo'); // TypeError
+</pre>
+
+<p><code>toString()</code> メソッドが組込み関数オブジェクトや <code>Function.prototype.bind</code> 作成された関数に対して呼び出されると、 <code>toString()</code> は、次のような<em>ネイティブ関数文字列</em>を返します。</p>
+
+<pre class="brush: js notranslate">"function () {\n [native code]\n}"
+</pre>
+
+<p><code>toString()</code> メソッドが <code>Function</code> コンストラクターで生成された関数に対して呼び出されると、 <code>toString()</code> は "anonymous" という名前の関数宣言に、提供された引数と関数の本体を合成したソースコードを返します。</p>
+
+<p><code>+</code> 演算子を使用して、関数の文字列表現を明示的に取得することもできます。</p>
+
+<pre class="brush: js notranslate">function foo() { return 'bar' }
+console.log(foo + ''); // "function foo() { return 'bar' }"</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Comparing_actual_source_code_and_toString_results" name="Comparing_actual_source_code_and_toString_results">実際のソースコードと toString の結果との比較</h3>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Function</th>
+ <th scope="col">Function.prototype.toString の結果</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <pre class="notranslate">
+function f(){}</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"function f(){}"</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="notranslate">
+class A { a(){} }</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"class A { a(){} }"</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="notranslate">
+function* g(){}</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"function* g(){}"</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="notranslate">
+a =&gt; a</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"a =&gt; a"</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="notranslate">
+({ a(){} }.a)</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"a(){}"</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="notranslate">
+({ *a(){} }.a)</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"*a(){}"</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="notranslate">
+({ [0](){} }[0])</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"[0](){}"</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="notranslate">
+Object.getOwnPropertyDescriptor({
+ get a(){}
+}, "a").get</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"get a(){}"</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="notranslate">
+Object.getOwnPropertyDescriptor({
+ set a(x){}
+}, "a").set</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"set a(x){}"</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="notranslate">
+Function.prototype.toString</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"function toString() { [native code] }"</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="notranslate">
+(function f(){}.bind(0))</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"function () { [native code] }"</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="notranslate">
+Function("a", "b")</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+"function anonymous(a\n) {\nb\n}"</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function.prototype.tostring', 'Function.prototype.toString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Function.toString")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/generator/index.html b/files/ja/web/javascript/reference/global_objects/generator/index.html
new file mode 100644
index 0000000000..3a182f7fa3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/generator/index.html
@@ -0,0 +1,86 @@
+---
+title: Generator
+slug: Web/JavaScript/Reference/Global_Objects/Generator
+tags:
+ - Class
+ - ECMAScript 2015
+ - Generator
+ - JavaScript
+ - Legacy Generator
+ - Legacy Iterator
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Generator
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Generator</strong></code> オブジェクトは{{JSxRef("Statements/function*", "ジェネレーター関数", "", 1)}}によって返され、<a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">反復可能プロトコル</a>と<a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterator_protocol">反復子プロトコル</a>の両方に準拠しています。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<p>このオブジェクトを直接インスタンス化することはできません。代わりに、<a href="/ja/docs/Web/JavaScript/Reference/Statements/function*">ジェネレーター関数</a>から <code>Generator</code> のインスタンスを返すことができます。</p>
+
+<pre class="syntaxbox notranslate">function* generator() {
+ yield 1;
+ yield 2;
+ yield 3;
+}
+
+const gen = generator(); // "Generator { }"</pre>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{JSxRef("Generator.prototype.next()")}}</dt>
+ <dd>{{JSxRef("Operators/yield", "yield")}} 式で得られた値を返します。</dd>
+ <dt>{{JSxRef("Generator.prototype.return()")}}</dt>
+ <dd>与えられた値を返し、ジェネレーターを終了します。</dd>
+ <dt>{{JSxRef("Generator.prototype.throw()")}}</dt>
+ <dd>ジェネレーターにエラーを投げます。(そのジェネレーターの中からキャッチされない限り、ジェネレーターも終了します)</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="An_infinite_iterator" name="An_infinite_iterator">無限イテレーター</h3>
+
+<pre class="brush: js; notranslate">function* infinite() {
+ let index = 0;
+
+ while (true) {
+ yield index++;
+ }
+}
+
+const generator = infinite(); // "Generator { }"
+
+console.log(generator.next().value); // 0
+console.log(generator.next().value); // 1
+console.log(generator.next().value); // 2
+// ...</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-generator-objects', 'Generator objects')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.Generator")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Statements/function*", "function*")}}</li>
+ <li>{{JSxRef("Operators/function*", '<code>function*</code> 式', "", 1)}}</li>
+ <li>{{JSxRef("GeneratorFunction")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/The_Iterator_protocol">反復処理プロトコル </a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/generator/next/index.html b/files/ja/web/javascript/reference/global_objects/generator/next/index.html
new file mode 100644
index 0000000000..f94c013421
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/generator/next/index.html
@@ -0,0 +1,137 @@
+---
+title: Generator.prototype.next()
+slug: Web/JavaScript/Reference/Global_Objects/Generator/next
+tags:
+ - ECMAScript 2015
+ - Generator
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Generator/next
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>next()</code></strong> メソッドは、2つのプロパティ <code>done</code> と <code>value</code> を持つオブジェクトを返します。 <code>next</code> メソッドに引数を提供して、ジェネレーターへ値を送ることもできます。</span></p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>gen</var>.next(<var>value</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>ジェネレーターへ送る値です。</dd>
+ <dd>この値は <code>yield</code> 式の結果として代入されます。例えば <code><var>variable</var> = yield <var>expression</var></code> の場合、 <code>.next()</code> 関数に渡された値は <code><var>variable</var></code> に代入されます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>以下の2つのプロパティを持った {{jsxref("Object")}} です。</p>
+
+<dl>
+ <dt><code>done</code> (boolean)</dt>
+ <dd>イテレーターが反復処理の末尾を過ぎている場合、値は <code>true</code> になります。この場合、 <code>value</code> はオプションでそのイテレーターの<em>返値</em>を指定します。</dd>
+ <dd>イテレーターが反復処理の次の値を生成することができた場合、値は <code>false</code> になります。これは <code>done</code> プロパティを指定しない場合も同等です。</dd>
+ <dt><code>value</code></dt>
+ <dd>イテレーターが返す何らかの JavaScript の値です。 <code>done</code> が <code>true</code> の場合は省略可能です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_test" name="Using_test">next() の使用</h3>
+
+<p>次の例では、 <code>next</code> メソッドが返す簡単なジェネレーターとオブジェクトを示します。</p>
+
+<pre class="brush: js notranslate">function* gen() {
+ yield 1;
+ yield 2;
+ yield 3;
+}
+
+const g = gen(); // "Generator { }"
+g.next(); // "Object { value: 1, done: false }"
+g.next(); // "Object { value: 2, done: false }"
+g.next(); // "Object { value: 3, done: false }"
+g.next(); // "Object { value: undefined, done: true }"
+</pre>
+
+<h3 id="Using_next_with_a_list" name="Using_next_with_a_list">リストでの next() の使用</h3>
+
+<pre class="notranslate">function* getPage(pageSize = 1, list) {
+ let output = [];
+ let index = 0;
+
+ while (index &lt; list.length) {
+ output = [];
+ for (let i = index; i &lt; index + pageSize; i++) {
+ if (list[i]) {
+ output.push(list[i]);
+ }
+ }
+
+ yield output;
+ index += pageSize;
+ }
+}
+
+list = [1, 2, 3, 4, 5, 6, 7, 8]
+var page = getPage(3, list); // Generator { }
+
+page.next(); // Object {value: (3) [1, 2, 3], done: false}
+page.next(); // Object {value: (3) [4, 5, 6], done: false}
+page.next(); // Object {value: (2) [7, 8], done: false}
+page.next(); // Object {value: undefined, done: true}
+</pre>
+
+<h3 id="Sending_values_to_the_generator" name="Sending_values_to_the_generator">ジェネレーターへ値を送る</h3>
+
+<p>この例では <code>next</code> を値付きで呼び出しています。</p>
+
+<p>なお、最初の呼び出しではジェネレーターが何も生成していないため、何もログを記録しないことに注意してください。</p>
+
+<pre class="brush: js notranslate">function* gen() {
+ while (true) {
+ let value = yield null;
+ console.log(value);
+ }
+}
+
+const g = gen();
+g.next(1);
+// "{ value: null, done: false }"
+g.next(2);
+// 2
+// "{ value: null, done: false }"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-generator.prototype.next', 'Generator.prototype.next')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Generator.next")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/function*", "function*")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators">イテレーターとジェネレーター</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/generator/return/index.html b/files/ja/web/javascript/reference/global_objects/generator/return/index.html
new file mode 100644
index 0000000000..2086277b7a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/generator/return/index.html
@@ -0,0 +1,97 @@
+---
+title: Generator.prototype.return()
+slug: Web/JavaScript/Reference/Global_Objects/Generator/return
+tags:
+ - ECMAScript 2015
+ - Generator
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Generator/return
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>return()</code></strong> メソッドは、指定された値を返してジェネレーターを終了します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>gen</var>.return(<var>value</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>返却する値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>この関数に引数として与えられている値を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_return" name="Using_return">return() の使用</h3>
+
+<p>次の例では簡単なジェネレーターと <code>return</code> メソッドを示します。</p>
+
+<pre class="brush: js notranslate">function* gen() {
+ yield 1;
+ yield 2;
+ yield 3;
+}
+
+const g = gen();
+
+g.next(); // { value: 1, done: false }
+g.return('foo'); // { value: "foo", done: true }
+g.next(); // { value: undefined, done: true }
+</pre>
+
+<p><code>return(<var>value</var>)</code> がすでに "完了" の状態のジェネレーターで呼び出されると、ジェネレーターは "完了" の状態のままになります。</p>
+
+<p>引数が提供されなかった場合、返却されるオブジェクトの <code>value</code> プロパティは <code>.next()</code> の場合と同じになります。引数が提供された場合は、返却されるオブジェクトの <code>value</code> プロパティの値に設定されます。</p>
+
+<pre class="brush: js notranslate">function* gen() {
+ yield 1;
+ yield 2;
+ yield 3;
+}
+
+const g = gen();
+g.next(); // { value: 1, done: false }
+g.next(); // { value: 2, done: false }
+g.next(); // { value: 3, done: false }
+g.next(); // { value: undefined, done: true }
+g.return(); // { value: undefined, done: true }
+g.return(1); // { value: 1, done: true }
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-generator.prototype.return', 'Generator.prototype.return')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Generator.return")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/function*", "function*")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/generator/throw/index.html b/files/ja/web/javascript/reference/global_objects/generator/throw/index.html
new file mode 100644
index 0000000000..9c00115cee
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/generator/throw/index.html
@@ -0,0 +1,95 @@
+---
+title: Generator.prototype.throw()
+slug: Web/JavaScript/Reference/Global_Objects/Generator/throw
+tags:
+ - ECMAScript 2015
+ - Generator
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Generator/throw
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>throw()</code></strong> メソッドは、ジェネレーターの例外を、エラーを発生させることで再開し、 <code>done</code> と <code>value</code> の2つのプロパティを持ったオブジェクトを返します。</span></p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>gen</var>.throw(<var>exception</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>exception</var></code></dt>
+ <dd>発生させる例外。デバッグ時には <code>instanceof</code> {{jsxref("Error")}} を行うと便利です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>2つのプロパティを持つ {{jsxref("Global_Objects/Object", "Object")}} です。</p>
+
+<dl>
+ <dt><code>done</code> (boolean)</dt>
+ <dd>
+ <ul>
+ <li>イテレーターが反復処理の末尾を過ぎている場合、値は <code>true</code> になります。この場合、 <code>value</code> はオプションでそのイテレーターの<em>返値</em>を指定します。</li>
+ <li>イテレーターが反復処理の次の値を生成することができた場合、値は <code>false</code> になります。これは <code>done</code> プロパティを指定しない場合も同等です。</li>
+ </ul>
+ </dd>
+ <dt><code>value</code></dt>
+ <dd>イテレーターが返す何らかの JavaScript の値です。 <code>done</code> が <code>true</code> の場合は省略可能です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_throw" name="Using_throw">throw() の使用</h3>
+
+<p>次の例では、簡単なジェネレーターと、 <code>throw</code>メソッドを用いて発生させるエラーを示します。エラーは通常 {{jsxref("Statements/try...catch", "try...catch")}} ブロックによって受け取られます。</p>
+
+<pre class="brush: js notranslate">function* gen() {
+ while(true) {
+ try {
+ yield 42;
+ } catch(e) {
+ console.log('Error caught!');
+ }
+ }
+}
+
+const g = gen();
+g.next();
+// { value: 42, done: false }
+g.throw(new Error('Something went wrong'));
+// "Error caught!"
+// { value: 42, done: false }
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Generator.throw")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/function*", "function*")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/generatorfunction/index.html b/files/ja/web/javascript/reference/global_objects/generatorfunction/index.html
new file mode 100644
index 0000000000..bb95e73d7d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/generatorfunction/index.html
@@ -0,0 +1,94 @@
+---
+title: GeneratorFunction
+slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction
+tags:
+ - Constructor
+ - ECMAScript 2015
+ - GeneratorFunction
+ - Iterator
+ - JavaScript
+ - Reference
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>GeneratorFunction</code> コンストラクター</strong>は、新しい{{jsxref("Statements/function*", "ジェネレーター関数", "", 1)}}オブジェクトを生成します。 JavaScript では、すべてのジェネレーター関数が実際に <code>GeneratorFunction</code> オブジェクトです。</p>
+
+<p><code>GeneratorFunction</code> はグローバルオブジェクトではないことに注意してください。次のコードを評価することによって得られます。</p>
+
+<pre class="brush: js">Object.getPrototypeOf(function*(){}).constructor
+</pre>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">new GeneratorFunction ([<var>arg1</var>[, <var>arg2</var>[, ...<var>argN</var>]],] <var>functionBody</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>arg1, arg2, ... arg<em>N</em></code></dt>
+ <dd>形式的な引数名として関数に使用される名前です。それぞれが有効な JavaScript の識別子であるか、カンマで区切った文字列のリストで、例えば "<code>x</code>", "<code>theValue</code>", "<code>a,b</code>" などです。</dd>
+ <dt><code>functionBody</code></dt>
+ <dd>関数定義を構成する JavaScript 文を含む文字列。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>GeneratorFunction</code> コンストラクターで生成された{{jsxref("Statements/function*", "ジェネレーター関数", "", 1)}}オブジェクトは、関数が生成されたときにパースされます。これは、ジェネレーター関数を {{jsxref("Statements/function*", "function* 式")}}で定義してからコード内で呼び出す方法ほど効率的ではありません。というのも、そのような関数はコードの残りの部分と共にパースされるからです。</p>
+
+<p>関数に渡されたすべての引数は、渡された順に、作成される関数内の引数の識別子の名前として扱われます。</p>
+
+<div class="note">
+<p><strong>注:</strong> {{jsxref("Statements/function*", "ジェネレーター関数")}}が <code>GeneratorFunction</code> コンストラクターによって生成された場合、生成コンテキストのクロージャは作成されません。常にグローバルスコープに生成されます。</p>
+
+<p>実行すると、ローカル変数とグローバルグローバル変数にのみアクセスでき、 <code>GeneratorFunction</code> コンストラクターが呼び出されたスコープの変数にはアクセスできません。</p>
+
+<p>これは、ジェネレーター関数式のコードで {{jsxref("Global_Objects/eval", "eval")}} を使用した場合とは異なります。</p>
+</div>
+
+<p><code>GeneratorFunction</code> コンストラクターを (<code>new</code> 演算子を使用せずに) 関数として呼び出した場合、コンストラクターとして呼び出したときと同じ効果があります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_a_generator_function_from_a_GeneratorFunction_constructor" name="Creating_a_generator_function_from_a_GeneratorFunction_constructor">GeneratorFunction() コンストラクターからジェネレーター関数を生成する</h3>
+
+<pre class="brush: js">var GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
+var g = new GeneratorFunction('a', 'yield a * 2');
+var iterator = g(10);
+console.log(iterator.next().value); // 20
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-generatorfunction-objects', 'GeneratorFunction')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.GeneratorFunction")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/function*", "function* 関数", "", 1)}}</li>
+ <li>{{jsxref("Operators/function*", "function* 式", "", 1)}}</li>
+ <li>{{jsxref("Global_Objects/Function", "Function")}}</li>
+ <li>{{jsxref("Statements/function", "関数文", "", 1)}}</li>
+ <li>{{jsxref("Operators/function", "関数式", "", 1)}}</li>
+ <li>{{jsxref("Functions_and_function_scope", "関数と関数スコープ", "", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/globalthis/index.html b/files/ja/web/javascript/reference/global_objects/globalthis/index.html
new file mode 100644
index 0000000000..cecf714961
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/globalthis/index.html
@@ -0,0 +1,95 @@
+---
+title: globalThis
+slug: Web/JavaScript/Reference/Global_Objects/globalThis
+tags:
+ - JavaScript
+ - Property
+ - Reference
+ - global
+ - globalThis
+ - this
+translation_of: Web/JavaScript/Reference/Global_Objects/globalThis
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p><span class="seoSummary"><code><strong>globalThis</strong></code> はグローバルプロパティで、グローバルオブジェクトと同等であるグローバルな <code>this</code> が格納されています。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-globalthis.html","shorter")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<p>{{JS_Property_Attributes(1, 0, 1)}}</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>従来、グローバルスコープにアクセスするには、JavaScript 環境ごとに異なる構文を必要としていました。ウェブ上では {{domxref("Window.window", "window")}}, {{domxref("Window.self", "self")}}, {{domxref("Window.frames", "frames")}} を使うことができます。しかし <a href="/ja/docs/Web/API/Worker">Web Worker</a> は <code>self</code> のみを利用することができます。Node.js はこれらのいずれも利用できず、代わりに <code>global</code> を使用する必要があります。<br>
+ <code>this</code> キーワードは、strict でないモードで実行されている関数の中で使用することもできますが、strict モードで実行されているモジュールや関数の中では <code>undefined</code> になります。<code>Function('return this')()</code> を使用することもできますが、{{Glossary("CSP")}} などによって {{jsxref("eval", "eval()")}} を無効にしている環境では、この方法でも {{jsxref("Function")}} の使用が抑制されます。</p>
+
+<p><code>globalThis</code> プロパティは、環境を越えてグローバルな <code>this</code> 値 (すなわちグローバルオブジェクト自身) にアクセスするための標準的な方法を提供します。<code>window</code> や <code>self</code> などの同様のプロパティとは異なり、これはウィンドウのコンテキストでも非ウィンドウのコンテキストでも動作することが保証されています。この方法では、コードがどの環境で実行されているのかを知らなくても、一貫した方法でグローバルオブジェクトにアクセスすることができます。名前を覚えやすくするために、グローバルスコープでは <code>this</code> の値は <code>globalThis</code> であることを忘れないでください。</p>
+
+<h3 id="HTML_and_the_WindowProxy" name="HTML_and_the_WindowProxy">HTML と WindowProxy</h3>
+
+<p>多くのエンジンでは <code>globalThis</code> は実在のグローバルオブジェクトの参照になりますが、ウェブブラウザーにおいては、iframe およびウィンドウ間のセキュリティ上の配慮から、これは (直接アクセスできない) 実在のグローバルオブジェクトに関する {{jsxref("Proxy")}} になります。一般的な利用に関わることは稀ですが、認識しておくことは重要です。</p>
+
+<h3 id="Naming" name="Naming">命名</h3>
+
+<p><code>self</code> や <code>global</code> のような他の一般的な名前の選択肢は、既存のコードとの互換性を損なう可能性があるため、候補から除外されました。詳しくは <a href="https://github.com/tc39/proposal-global/blob/master/NAMING.md">language proposal's "naming" document</a> を参照してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Search_for_the_global_across_environments" name="Search_for_the_global_across_environments">異なる環境間でグローバルの検索</h3>
+
+<p><code>globalThis</code> 以前は、その環境のグローバルオブジェクトを取得する信頼性の高い方法は <code>Function('return this')()</code> だけでした。ただし、これは設定によっては <a href="/en-US/docs/Web/HTTP/CSP">CSP</a> 違反が発生するため、<a href="https://github.com/paulmillr/es6-shim">es6-shim</a> では次のようなチェックを使用します。</p>
+
+<pre class="brush: js notranslate">var getGlobal = function () {
+ if (typeof self !== 'undefined') { return self; }
+ if (typeof window !== 'undefined') { return window; }
+ if (typeof global !== 'undefined') { return global; }
+ throw new Error('unable to locate global object');
+};
+
+var globals = getGlobal();
+
+if (typeof globals.setTimeout !== 'function') {
+ // no setTimeout in this environment!
+}
+</pre>
+
+<p><code>globalThis</code> が利用可能になったため、異なる環境間でグローバルを追加で検索する必要がなくなりました。</p>
+
+<pre class="brush: js notranslate">if (typeof globalThis.setTimeout !== 'function') {
+ // no setTimeout in this environment!
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-globalthis", "globalThis")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.globalThis")}}</p>
+
+<h3 id="Implementation_progress" name="Implementation_progress">実装の進捗状況</h3>
+
+<p>この機能はまだブラウザー間で相互運用できる安定度に達していないため、以下の表では、この機能の日次の実装状況を示しています。このデータは JavaScript の標準テストスイートである <a href="https://github.com/tc39/test262">Test262</a> で、各ブラウザーの JavaScript エンジンのナイトリービルドまたは最新リリースで関連する機能を実行して見ることにより生成しています。</p>
+
+<div>{{EmbedTest262ReportResultsTable("globalThis")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Operators/this", "this")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/index.html b/files/ja/web/javascript/reference/global_objects/index.html
new file mode 100644
index 0000000000..44c08eeb57
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/index.html
@@ -0,0 +1,210 @@
+---
+title: 標準組込みオブジェクト
+slug: Web/JavaScript/Reference/Global_Objects
+tags:
+ - JavaScript
+ - Landing page
+ - Overview
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects
+---
+<p>{{JSSidebar("Objects")}}</p>
+
+<p><span class="seoSummary">本章では JavaScript の標準組込みオブジェクトについて、それらのメソッドやプロパティと共にすべて文書化しています。</span></p>
+
+<p>ここでいう「<ruby>グローバルオブジェクト<rp> (</rp><rt>global objects</rt><rp>)</rp></ruby>」 (または標準組込みオブジェクト) という用語を<ruby><strong>グローバルオブジェクト</strong><rp> (</rp><rt>the global object</rt><rp>) </rp></ruby>と混同しないでください。ここで、『グローバルオブジェクト』は<strong>グローバルスコープにあるオブジェクト</strong>を指します。 (訳注: 日本語では複数形や the による区別ができないため、ここでは後者の <strong>the global object</strong> を『グローバルオブジェクト』と表記して区別します。)</p>
+
+<p>後者の『グローバルオブジェクト』自体は、グローバルスコープ中で {{JSxRef("Operators/this", "this")}} 演算子を使ってアクセスすることができます。実際、グローバルスコープは『グローバルオブジェクト』 (継承されたプロパティがあればそれらも含む) のプロパティから<strong>構成されています</strong>。</p>
+
+<p>グローバルスコープ内のその他のオブジェクトは、<a href="/ja/docs/Web/JavaScript/Guide/Working_with_Objects#Creating_new_objects">ユーザースクリプトによって作られる</a>か、あるいはホストアプリによって提供されます。ブラウザー上で提供されている利用可能なオブジェクトについては、<a href="/ja/docs/Web/API/Reference">API リファレンス</a> で文書化されています。</p>
+
+
+
+<p><a href="/ja/docs/DOM/DOM_Reference">DOM</a> と中核の <a href="/ja/docs/Web/JavaScript">JavaScript</a> との違いについての詳しい情報は、<a href="/ja/docs/Web/JavaScript/JavaScript_technologies_overview">JavaScript 技術概説</a>をご覧ください。</p>
+
+<h2 id="Standard_objects_by_category" name="Standard_objects_by_category">標準オブジェクト (カテゴリ別)</h2>
+
+<h3 id="Value_properties" name="Value_properties">値プロパティ</h3>
+
+<p>これらのグローバルプロパティは、単なる値を返します。これらはプロパティもメソッドも持ちません。</p>
+
+<ul>
+ <li>{{JSxRef("Infinity")}}</li>
+ <li>{{JSxRef("NaN")}}</li>
+ <li>{{JSxRef("undefined")}}</li>
+ <li>{{JSxRef("globalThis")}}</li>
+</ul>
+
+<h3 id="Function_properties" name="Function_properties">関数プロパティ</h3>
+
+<p>これらのグローバル関数 (オブジェクト上ではなくグローバルに呼ばれる関数) は、呼び出し元に直接結果を返します。</p>
+
+<div class="twocolumns">
+<ul>
+ <li>{{JSxRef("Global_Objects/eval", "eval()")}}</li>
+ <li>{{Non-Standard_Inline}} {{JSxRef("Global_Objects/uneval", "uneval()")}} </li>
+ <li>{{JSxRef("Global_Objects/isFinite", "isFinite()")}}</li>
+ <li>{{JSxRef("Global_Objects/isNaN", "isNaN()")}}</li>
+ <li>{{JSxRef("Global_Objects/parseFloat", "parseFloat()")}}</li>
+ <li>{{JSxRef("Global_Objects/parseInt", "parseInt()")}}</li>
+ <li>{{JSxRef("Global_Objects/encodeURI", "encodeURI()")}}</li>
+ <li>{{JSxRef("Global_Objects/encodeURIComponent", "encodeURIComponent()")}}</li>
+ <li>{{JSxRef("Global_Objects/decodeURI", "decodeURI()")}}</li>
+ <li>{{JSxRef("Global_Objects/decodeURIComponent", "decodeURIComponent()")}}</li>
+ <li><strong>Deprecated</strong>
+ <ul>
+ <li>{{deprecated_inline}} {{JSxRef("Global_Objects/escape", "escape()")}}</li>
+ <li>{{deprecated_inline}} {{JSxRef("Global_Objects/unescape", "unescape()")}}</li>
+ </ul>
+ </li>
+</ul>
+</div>
+
+<h3 id="Fundamental_objects" name="Fundamental_objects">基本オブジェクト</h3>
+
+<p>これらは、他のすべてのオブジェクトの基礎となる、主要な基本オブジェクトです。これらには、一般的なオブジェクト、関数、そしてエラーを表すオブジェクトが含まれます。</p>
+
+<ul>
+ <li>{{JSxRef("Object")}}</li>
+ <li>{{JSxRef("Function")}}</li>
+ <li>{{JSxRef("Boolean")}}</li>
+ <li>{{JSxRef("Symbol")}}</li>
+</ul>
+
+<h3 id="Error_objects" name="Error_objects">エラーオブジェクト</h3>
+
+<p>エラーオブジェクトは基本オブジェクトの特殊型です。これらのオブジェクトには、基本的な {{JSxRef("Error")}} 型の他に、いくつかの特殊なエラー型があります。</p>
+
+<div class="twocolumns">
+<ul>
+ <li>{{JSxRef("Error")}}</li>
+ <li>{{Experimental_Inline}} {{JSxRef("AggregateError")}} </li>
+ <li>{{JSxRef("EvalError")}}</li>
+ <li>{{JSxRef("InternalError")}}</li>
+ <li>{{JSxRef("RangeError")}}</li>
+ <li>{{JSxRef("ReferenceError")}}</li>
+ <li>{{JSxRef("SyntaxError")}}</li>
+ <li>{{JSxRef("TypeError")}}</li>
+ <li>{{JSxRef("URIError")}}</li>
+</ul>
+</div>
+
+<h3 id="Numbers_and_dates" name="Numbers_and_dates">数と日付</h3>
+
+<p>これらは数、日付、数学計算を表す基本的なオブジェクトです。</p>
+
+<ul>
+ <li>{{JSxRef("Number")}}</li>
+ <li>{{JSxRef("BigInt")}}</li>
+ <li>{{JSxRef("Math")}}</li>
+ <li>{{JSxRef("Date")}}</li>
+</ul>
+
+<h3 id="Text_processing" name="Text_processing">テキスト処理</h3>
+
+<p>これらのオブジェクトは、文字列表現および文字列操作をサポートします。</p>
+
+<ul>
+ <li>{{JSxRef("String")}}</li>
+ <li>{{JSxRef("RegExp")}}</li>
+</ul>
+
+<h3 id="Indexed_collections" name="Indexed_collections">索引付きコレクション</h3>
+
+<p>これらのオブジェクトは、インデックス値で順序付けされたデータのコレクションを表します。これには、(型付けされた) 配列や配列に似た構造体も含まれます。</p>
+
+<div class="twocolumns">
+<ul>
+ <li>{{JSxRef("Array")}}</li>
+ <li>{{JSxRef("Int8Array")}}</li>
+ <li>{{JSxRef("Uint8Array")}}</li>
+ <li>{{JSxRef("Uint8ClampedArray")}}</li>
+ <li>{{JSxRef("Int16Array")}}</li>
+ <li>{{JSxRef("Uint16Array")}}</li>
+ <li>{{JSxRef("Int32Array")}}</li>
+ <li>{{JSxRef("Uint32Array")}}</li>
+ <li>{{JSxRef("Float32Array")}}</li>
+ <li>{{JSxRef("Float64Array")}}</li>
+ <li>{{JSxRef("BigInt64Array")}}</li>
+ <li>{{JSxRef("BigUint64Array")}}</li>
+</ul>
+</div>
+
+<h3 id="Keyed_collections" name="Keyed_collections">キー付きコレクション</h3>
+
+<p>これらのオブジェクトは、キーを使ったコレクションを表します。これらは、挿入順に反復可能な要素で構成されています。</p>
+
+<ul>
+ <li>{{JSxRef("Map")}}</li>
+ <li>{{JSxRef("Set")}}</li>
+ <li>{{JSxRef("WeakMap")}}</li>
+ <li>{{JSxRef("WeakSet")}}</li>
+</ul>
+
+<h3 id="Structured_data" name="Structured_data">構造化データ</h3>
+
+<p>これらのオブジェクトは、構造化データバッファおよび JavaScript Object Notation (JSON) を用いて書かれたデータを表現、操作します。</p>
+
+<ul>
+ <li>{{JSxRef("ArrayBuffer")}}</li>
+ <li>{{JSxRef("SharedArrayBuffer")}}</li>
+ <li>{{JSxRef("Atomics")}}</li>
+ <li>{{JSxRef("DataView")}}</li>
+ <li>{{JSxRef("JSON")}}</li>
+</ul>
+
+<h3 id="Control_abstraction_objects" name="Control_abstraction_objects">制御抽象化オブジェクト</h3>
+
+<p>制御抽象化オブジェクトは、特に非同期のコードを構造化するために役立ちます (例えば深く入り組んだコールバックを使用しないなど)。</p>
+
+<ul>
+ <li>{{JSxRef("Promise")}}</li>
+ <li>{{JSxRef("Generator")}}</li>
+ <li>{{JSxRef("GeneratorFunction")}}</li>
+ <li>{{JSxRef("AsyncFunction")}}</li>
+</ul>
+
+<h3 id="Reflection" name="Reflection">リフレクション</h3>
+
+<ul>
+ <li>{{JSxRef("Reflect")}}</li>
+ <li>{{JSxRef("Proxy")}}</li>
+</ul>
+
+<h3 id="Internationalization" name="Internationalization">国際化</h3>
+
+<p>ECMAScript コアに追加された言語の扱いに影響する機能です。</p>
+
+<div class="twocolumns">
+<ul>
+ <li>{{JSxRef("Intl")}}</li>
+ <li>{{JSxRef("Global_Objects/Collator", "Intl.Collator")}}</li>
+ <li>{{JSxRef("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+ <li>{{JSxRef("Global_Objects/ListFormat", "Intl.ListFormat")}}</li>
+ <li>{{JSxRef("Global_Objects/NumberFormat", "Intl.NumberFormat")}}</li>
+ <li>{{JSxRef("Global_Objects/PluralRules", "Intl.PluralRules")}}</li>
+ <li>{{JSxRef("Global_Objects/RelativeTimeFormat", "Intl.RelativeTimeFormat")}}</li>
+ <li>{{JSxRef("Global_Objects/Locale", "Intl.Locale")}}</li>
+</ul>
+</div>
+
+<h3 id="WebAssembly" name="WebAssembly">WebAssembly</h3>
+
+<div class="twocolumns">
+<ul>
+ <li>{{JSxRef("WebAssembly")}}</li>
+ <li>{{JSxRef("WebAssembly.Module")}}</li>
+ <li>{{JSxRef("WebAssembly.Instance")}}</li>
+ <li>{{JSxRef("WebAssembly.Memory")}}</li>
+ <li>{{JSxRef("WebAssembly.Table")}}</li>
+ <li>{{JSxRef("WebAssembly.CompileError")}}</li>
+ <li>{{JSxRef("WebAssembly.LinkError")}}</li>
+ <li>{{JSxRef("WebAssembly.RuntimeError")}}</li>
+</ul>
+</div>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>{{JSxRef("Functions/arguments", "arguments")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/infinity/index.html b/files/ja/web/javascript/reference/global_objects/infinity/index.html
new file mode 100644
index 0000000000..eb4a83f375
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/infinity/index.html
@@ -0,0 +1,70 @@
+---
+title: Infinity
+slug: Web/JavaScript/Reference/Global_Objects/Infinity
+tags:
+ - JavaScript
+ - Property
+ - Reference
+ - プロパティ
+translation_of: Web/JavaScript/Reference/Global_Objects/Infinity
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p>グローバルプロパティ <code><strong>Infinity</strong></code> は無限大を表す数値です。</p>
+
+<p>{{js_property_attributes(0,0,0)}}</p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-infinity.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Infinity</code> は<em>グローバルオブジェクト</em>のプロパティです。言い換えればグローバルスコープ内の変数です。</p>
+
+<p><code>Infinity</code> の初期値は {{jsxref("Number.POSITIVE_INFINITY")}} です。<code>Infinity</code> という値 (正の無限大) は他のあらゆる数より大きい数です。</p>
+
+<p>この値は数学的に無限大のように振る舞います。詳しくは {{jsxref("Number.POSITIVE_INFINITY")}} を参照してください。</p>
+
+<p>ECMAScript 5 の仕様では、<code>Infinity</code> は読み取り専用です (JavaScript 1.8.5 / Firefox 4 にて実装)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Infinity" name="Using_Infinity">Infinity を使う</h3>
+
+<pre class="brush: js notranslate">console.log(Infinity ); /* Infinity */
+console.log(Infinity + 1 ); /* Infinity */
+console.log(Math.pow(10, 1000)); /* Infinity */
+console.log(Math.log(0) ); /* -Infinity */
+console.log(1 / Infinity ); /* 0 */
+console.log(1 / 0 ); /* Infinity */
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-infinity', 'Infinity')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.parseInt")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.NEGATIVE_INFINITY")}}</li>
+ <li>{{jsxref("Number.POSITIVE_INFINITY")}}</li>
+ <li>{{jsxref("Number.isFinite")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/int16array/index.html b/files/ja/web/javascript/reference/global_objects/int16array/index.html
new file mode 100644
index 0000000000..75c8cef269
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/int16array/index.html
@@ -0,0 +1,167 @@
+---
+title: Int16Array
+slug: Web/JavaScript/Reference/Global_Objects/Int16Array
+tags:
+ - Class
+ - JavaScript
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/Int16Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Int16Array</code></strong> は型付き配列であり、プラットフォームのバイト順による 2 の補数形式の 16 ビット符号付き整数値の配列を表します。バイト順の制御が必要な場合は、代わりに {{jsxref("DataView")}} を使用してください。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Int16Array/Int16Array", "Int16Array()")}}</dt>
+ <dd>新しい <code>Int16Array</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int16Array.BYTES_PER_ELEMENT")}}</dt>
+ <dd>要素の大きさの数値を返します。 <code>Int16Array</code> の場合は <code>2</code> になります。</dd>
+ <dt>{{jsxref("TypedArray.name", "Int16Array.name")}}</dt>
+ <dd>コンストラクターの名前を文字列値で返します。 <code>Int16Array</code> 型の場合は "<code>Int16Array</code>" です。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from", "Int16Array.from()")}}</dt>
+ <dd>新しい <code>Int16Array</code> を、配列風オブジェクトや反復可能オブジェクトから生成します。 {{jsxref("Array.from()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.of", "Int16Array.of()")}}</dt>
+ <dd>新しい <code>Int16Array</code> を、可変長引数で生成します。 {{jsxref("Array.of()")}} も参照してください。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.prototype.buffer", "Int16Array.prototype.buffer")}}</dt>
+ <dd><code>Int16Array</code> オブジェクトによって参照される {{jsxref("ArrayBuffer")}} を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength", "Int16Array.prototype.byteLength")}}</dt>
+ <dd><code>Int16Array</code> の長さを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset", "Int16Array.prototype.byteOffset")}}</dt>
+ <dd><code>Int16Array</code> のオフセットを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length", "Int16Array.prototype.length")}}</dt>
+ <dd><code>Int16Array</code> オブジェクト内に保持されている要素の数を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.copyWithin", "Int16Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内で一連の配列要素をコピーします。 {{jsxref("Array.prototype.copyWithin()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.entries", "Int16Array.prototype.entries()")}}</dt>
+ <dd>配列内の各添字に対するキーと値の組を含む、新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.entries()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.every", "Int16Array.prototype.every()")}}</dt>
+ <dd>配列内のすべての要素に対して、指定された関数によるテストに合格するかどうかをテストします。 {{jsxref("Array.prototype.every()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.fill", "Int16Array.prototype.fill()")}}</dt>
+ <dd>配列の先頭から末尾までのすべての要素を固定値で設定します。 {{jsxref("Array.prototype.fill()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.filter", "Int16Array.prototype.filter()")}}</dt>
+ <dd>この配列のすべての要素のうち、指定されたフィルタリング関数が与えられたフィルタリング関数が <code>true</code> を返すすべての要素で、新しい配列を生成します。 {{jsxref("Array.prototype.filter()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.find", "Int16Array.prototype.find()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その値を返します。見つからなかった場合は <code>undefined</code> を返します。 {{jsxref("Array.prototype.find()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.findIndex", "Int16Array.prototype.findIndex()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その添字を返します。見つからなかった場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.findIndex()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.forEach", "Int16Array.prototype.forEach()")}}</dt>
+ <dd>配列内の各要素に対してある関数を呼び出します。 {{jsxref("Array.prototype.forEach()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.includes", "Int16Array.prototype.includes()")}}</dt>
+ <dd>型付き配列にある要素が含まれているかどうかを判断し、それに応じて <code>true</code> または <code>false</code> を返します。 {{jsxref("Array.prototype.includes()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.indexOf", "Int16Array.prototype.indexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最初の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.indexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.join", "Int16Array.prototype.join()")}}</dt>
+ <dd>すべての配列要素を1つの文字列に結合します。 {{jsxref("Array.prototype.join()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.keys", "Int16Array.prototype.keys()")}}</dt>
+ <dd>配列内のすべての添字に対するキーを含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.keys()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.lastIndexOf", "Int16Array.prototype.lastIndexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最後の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.lastIndexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.map", "Int16Array.prototype.map()")}}</dt>
+ <dd>この配列のすべての要素を引数として指定された関数を呼び出し、その結果で新しい配列を生成します。 {{jsxref("Array.prototype.map()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduce", "Int16Array.prototype.reduce()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (左から右へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduce()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduceRight", "Int16Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (右から左へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduceRight()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reverse", "Int16Array.prototype.reverse()")}}</dt>
+ <dd>配列要素の順番を反転させます。 — 最初の要素は最後になり、最後の要素は最初になります。 {{jsxref("Array.prototype.reverse()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.set", "Int16Array.prototype.set()")}}</dt>
+ <dd>指定された配列から複数の入力値を読み込み、型付き配列に格納します。</dd>
+ <dt>{{jsxref("TypedArray.slice", "Int16Array.prototype.slice()")}}</dt>
+ <dd>配列の一区間を取り出して新しい配列を返します。 {{jsxref("Array.prototype.slice()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.some", "Int16Array.prototype.some()")}}</dt>
+ <dd>この配列内で、指定されたテスト関数を満たす要素が1つでもあった場合に <code>true</code> を返します。 {{jsxref("Array.prototype.some()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.sort", "Int16Array.prototype.sort()")}}</dt>
+ <dd>配列の要素をその場でソートし、その配列を返します。 {{jsxref("Array.prototype.sort()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.subarray", "Int16Array.prototype.subarray()")}}</dt>
+ <dd>指定された開始位置と終了位置の間にある要素から新しい <code>Int16Array</code> を返します。</dd>
+ <dt>{{jsxref("TypedArray.values", "Int16Array.prototype.values()")}}</dt>
+ <dd>配列内の各添字に対する値を含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.values()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toLocaleString", "Int16Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列と要素を表すローカライズされた文字列を返します。 {{jsxref("Array.prototype.toLocaleString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toString", "Int16Array.prototype.toString()")}}</dt>
+ <dd>配列と要素を表す文字列を返します。 {{jsxref("Array.prototype.toString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.@@iterator", "Int16Array.prototype[@@iterator]()")}}</dt>
+ <dd>配列内のそれぞれの添字の値を含む新しい<em>配列イテレーター</em>オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_an_Int16Array" name="Different_ways_to_create_an_Int16Array">Int16Array を生成する様々な方法</h3>
+
+<pre class="brush: js notranslate">// 長さを指定
+var int16 = new Int16Array(2);
+int16[0] = 42;
+console.log(int16[0]); // 42
+console.log(int16.length); // 2
+console.log(int16.BYTES_PER_ELEMENT); // 2
+
+// 配列から
+var arr = new Int16Array([21,31]);
+console.log(arr[1]); // 31
+
+// 他の型付き配列から
+var x = new Int16Array([21, 31]);
+var y = new Int16Array(x);
+console.log(y[0]); // 21
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(8);
+var z = new Int16Array(buffer, 0, 4);
+
+// 反復可能オブジェクトから
+var iterable = function*(){ yield* [1,2,3]; }();
+var int16 = new Int16Array(iterable);
+// Int16Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Int16Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/int16array/int16array/index.html b/files/ja/web/javascript/reference/global_objects/int16array/int16array/index.html
new file mode 100644
index 0000000000..6a8e36da0e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/int16array/int16array/index.html
@@ -0,0 +1,103 @@
+---
+title: Int16Array() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Int16Array/Int16Array
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypedArray
+translation_of: Web/JavaScript/Reference/Global_Objects/Int16Array/Int16Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Int16Array()</code></strong> は型付き配列のコンストラクターで、プラットフォームのバイト順による 2 の補数形式の 16 ビット符号付き整数値の配列を生成します。バイト順の制御が必要な場合は、代わりに {{jsxref("DataView")}} を使用してください。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Int16Array(); // new in ES2017
+new Int16Array(<var>length</var>);
+new Int16Array(<var>typedArray</var>);
+new Int16Array(<var>object</var>);
+new Int16Array(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd><code><var>length</var></code> 引数付きで呼び出されると、メモリ内に内部的な配列バッファーを作成し、大きさは <code><var>length</var></code><em> を <code>BYTES_PER_ELEMENT</code></em> で乗じたバイト数になり、ゼロになることもあります。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code>typedArray</code> 引数付きで呼び出されると、これはあらゆる型付き配列型 (例えば <code>Int32Array</code>) にすることができますが、 <code><var>typedArray</var></code> を新しい型付き配列にコピーします。 <code><var>typedArray</var></code> の中のそれぞれの値は、新しい配列にコピーされる前にコンストラクターの対応する型に変換されます。新しい型付き配列の長さは <code><var>typedArray</var></code> 引数の長さと同じになります。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd><code><var>object</var></code> 引数付きで呼び出されると、あたかも <code><var>TypedArray</var>.from()</code> メソッドであるかのように新しい型付き配列が生成されます。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd><code><var>buffer</var></code> と、オプションで <code><var>byteOffset</var></code> と <code><var>length</var></code> 引数を指定して呼び出されると、指定された {{jsxref("ArrayBuffer")}} を表示する型付き配列ビューが生成されます。 <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数は、型付き配列ビューが表示するメモリ範囲を指定する。 両方を省略した場合は <code><var>buffer</var></code> の全てを表示し、 <code><var>length</var></code> のみを省略した場合は <code><var>buffer</var></code> の残りを表示します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_an_Int16Array" name="Different_ways_to_create_an_Int16Array">様々な方法による Int16Array の生成</h3>
+
+<pre class="brush: js notranslate">// From a length
+var int16 = new Int16Array(2);
+int16[0] = 42;
+console.log(int16[0]); // 42
+console.log(int16.length); // 2
+console.log(int16.BYTES_PER_ELEMENT); // 2
+
+// From an array
+var arr = new Int16Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Int16Array([21, 31]);
+var y = new Int16Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(8);
+var z = new Int16Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var int16 = new Int16Array(iterable);
+// Int16Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typedarray-constructors', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Int16Array.Int16Array")}}</p>
+
+<h3 id="Compatibility_notes" name="Compatibility_notes">互換性メモ</h3>
+
+<p>ECMAScript 2015 から、 <code>Int16Array</code> コンストラクターは構築に {{jsxref("Operators/new", "new")}} 演算子が必要になりました。 <code>Int16Array</code> コンストラクターを <code>new</code> なしで関数として呼び出すと、 {{jsxref("TypeError")}} が発生するようになりました。</p>
+
+<pre class="brush: js example-bad notranslate">var dv = Int16Array([1, 2, 3]);
+// TypeError: calling a builtin Int16Array constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good notranslate">var dv = new Int16Array([1, 2, 3]);</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/int32array/index.html b/files/ja/web/javascript/reference/global_objects/int32array/index.html
new file mode 100644
index 0000000000..04a82f7503
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/int32array/index.html
@@ -0,0 +1,167 @@
+---
+title: Int32Array
+slug: Web/JavaScript/Reference/Global_Objects/Int32Array
+tags:
+ - Class
+ - JavaScript
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/Int32Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Int32Array</code></strong> は型付き配列であり、プラットフォームのバイト順による 2 の補数形式の 32 ビット符号付き整数値の配列を表します。バイト順の制御が必要な場合は、代わりに {{jsxref("DataView")}} を使用してください。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Int32Array/Int32Array", "Int32Array()")}}</dt>
+ <dd>新しい <code>Int32Array</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int32Array.BYTES_PER_ELEMENT")}}</dt>
+ <dd>要素の大きさの数値を返します。 <code>Int32Array</code> の場合は <code>4</code> になります。</dd>
+ <dt>{{jsxref("TypedArray.name", "Int32Array.name")}}</dt>
+ <dd>コンストラクターの名前を文字列値で返します。 <code>Int32Array</code> 型の場合は "<code>Int32Array</code>" です。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from", "Int32Array.from()")}}</dt>
+ <dd>新しい <code>Int32Array</code> を、配列風オブジェクトや反復可能オブジェクトから生成します。 {{jsxref("Array.from()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.of", "Int32Array.of()")}}</dt>
+ <dd>新しい <code>Int32Array</code> を、可変長引数で生成します。 {{jsxref("Array.of()")}} も参照してください。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.prototype.buffer", "Int32Array.prototype.buffer")}}</dt>
+ <dd><code>Int32Array</code> オブジェクトによって参照される {{jsxref("ArrayBuffer")}} を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength", "Int32Array.prototype.byteLength")}}</dt>
+ <dd><code>Int32Array</code> の長さを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset", "Int32Array.prototype.byteOffset")}}</dt>
+ <dd><code>Int32Array</code> のオフセットを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length", "Int32Array.prototype.length")}}</dt>
+ <dd><code>Int32Array</code> オブジェクト内に保持されている要素の数を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.copyWithin", "Int32Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内で一連の配列要素をコピーします。 {{jsxref("Array.prototype.copyWithin()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.entries", "Int32Array.prototype.entries()")}}</dt>
+ <dd>配列内の各添字に対するキーと値の組を含む、新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.entries()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.every", "Int32Array.prototype.every()")}}</dt>
+ <dd>配列内のすべての要素に対して、指定された関数によるテストに合格するかどうかをテストします。 {{jsxref("Array.prototype.every()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.fill", "Int32Array.prototype.fill()")}}</dt>
+ <dd>配列の先頭から末尾までのすべての要素を固定値で設定します。 {{jsxref("Array.prototype.fill()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.filter", "Int32Array.prototype.filter()")}}</dt>
+ <dd>この配列のすべての要素のうち、指定されたフィルタリング関数が与えられたフィルタリング関数が <code>true</code> を返すすべての要素で、新しい配列を生成します。 {{jsxref("Array.prototype.filter()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.find", "Int32Array.prototype.find()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その値を返します。見つからなかった場合は <code>undefined</code> を返します。 {{jsxref("Array.prototype.find()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.findIndex", "Int32Array.prototype.findIndex()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その添字を返します。見つからなかった場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.findIndex()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.forEach", "Int32Array.prototype.forEach()")}}</dt>
+ <dd>配列内の各要素に対してある関数を呼び出します。 {{jsxref("Array.prototype.forEach()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.includes", "Int32Array.prototype.includes()")}}</dt>
+ <dd>型付き配列にある要素が含まれているかどうかを判断し、それに応じて <code>true</code> または <code>false</code> を返します。 {{jsxref("Array.prototype.includes()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.indexOf", "Int32Array.prototype.indexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最初の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.indexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.join", "Int32Array.prototype.join()")}}</dt>
+ <dd>すべての配列要素を1つの文字列に結合します。 {{jsxref("Array.prototype.join()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.keys", "Int32Array.prototype.keys()")}}</dt>
+ <dd>配列内のすべての添字に対するキーを含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.keys()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.lastIndexOf", "Int32Array.prototype.lastIndexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最後の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.lastIndexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.map", "Int32Array.prototype.map()")}}</dt>
+ <dd>この配列のすべての要素を引数として指定された関数を呼び出し、その結果で新しい配列を生成します。 {{jsxref("Array.prototype.map()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduce", "Int32Array.prototype.reduce()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (左から右へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduce()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduceRight", "Int32Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (右から左へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduceRight()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reverse", "Int32Array.prototype.reverse()")}}</dt>
+ <dd>配列要素の順番を反転させます。 — 最初の要素は最後になり、最後の要素は最初になります。 {{jsxref("Array.prototype.reverse()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.set", "Int32Array.prototype.set()")}}</dt>
+ <dd>指定された配列から複数の入力値を読み込み、型付き配列に格納します。</dd>
+ <dt>{{jsxref("TypedArray.slice", "Int32Array.prototype.slice()")}}</dt>
+ <dd>配列の一区間を取り出して新しい配列を返します。 {{jsxref("Array.prototype.slice()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.some", "Int32Array.prototype.some()")}}</dt>
+ <dd>この配列内で、指定されたテスト関数を満たす要素が1つでもあった場合に <code>true</code> を返します。 {{jsxref("Array.prototype.some()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.sort", "Int32Array.prototype.sort()")}}</dt>
+ <dd>配列の要素をその場でソートし、その配列を返します。 {{jsxref("Array.prototype.sort()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.subarray", "Int32Array.prototype.subarray()")}}</dt>
+ <dd>指定された開始位置と終了位置の間にある要素から新しい <code>Int32Array</code> を返します。</dd>
+ <dt>{{jsxref("TypedArray.values", "Int32Array.prototype.values()")}}</dt>
+ <dd>配列内の各添字に対する値を含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.values()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toLocaleString", "Int32Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列と要素を表すローカライズされた文字列を返します。 {{jsxref("Array.prototype.toLocaleString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toString", "Int32Array.prototype.toString()")}}</dt>
+ <dd>配列と要素を表す文字列を返します。 {{jsxref("Array.prototype.toString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.@@iterator", "Int32Array.prototype[@@iterator]()")}}</dt>
+ <dd>配列内のそれぞれの添字の値を含む新しい<em>配列イテレーター</em>オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_an_Int32Array" name="Different_ways_to_create_an_Int32Array">Int32Array を生成する様々な方法</h3>
+
+<pre class="brush: js notranslate">// 長さを指定
+var int16 = new Int32Array(2);
+int16[0] = 42;
+console.log(int16[0]); // 42
+console.log(int16.length); // 2
+console.log(int16.BYTES_PER_ELEMENT); // 2
+
+// 配列から
+var arr = new Int32Array([21,31]);
+console.log(arr[1]); // 31
+
+// 他の型付き配列から
+var x = new Int32Array([21, 31]);
+var y = new Int32Array(x);
+console.log(y[0]); // 21
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(16);
+var z = new Int32Array(buffer, 0, 4);
+
+// 反復可能オブジェクトから
+var iterable = function*(){ yield* [1,2,3]; }();
+var int32 = new Int32Array(iterable);
+// Int32Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Int32Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/int32array/int32array/index.html b/files/ja/web/javascript/reference/global_objects/int32array/int32array/index.html
new file mode 100644
index 0000000000..22c7b1c9a1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/int32array/int32array/index.html
@@ -0,0 +1,103 @@
+---
+title: Int32Array() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Int32Array/Int32Array
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/Int32Array/Int32Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Int32Array()</code></strong> は型付き配列のコンストラクターで、プラットフォームのバイト順による 2 の補数形式の 32 ビット符号付き整数値の配列を生成します。バイト順の制御が必要な場合は、代わりに {{jsxref("DataView")}} を使用してください。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Int32Array(); // new in ES2017
+new Int32Array(<var>length</var>);
+new Int32Array(<var>typedArray</var>);
+new Int32Array(<var>object</var>);
+new Int32Array(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd><code><var>length</var></code> 引数付きで呼び出されると、メモリ内に内部的な配列バッファーを作成し、大きさは <code><var>length</var></code><em> を <code>BYTES_PER_ELEMENT</code></em> で乗じたバイト数になり、ゼロになることもあります。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code>typedArray</code> 引数付きで呼び出されると、これはあらゆる型付き配列型 (例えば <code>Int32Array</code>) にすることができますが、 <code><var>typedArray</var></code> を新しい型付き配列にコピーします。 <code><var>typedArray</var></code> の中のそれぞれの値は、新しい配列にコピーされる前にコンストラクターの対応する型に変換されます。新しい型付き配列の長さは <code><var>typedArray</var></code> 引数の長さと同じになります。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd><code><var>object</var></code> 引数付きで呼び出されると、あたかも <code><var>TypedArray</var>.from()</code> メソッドであるかのように新しい型付き配列が生成されます。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd><code><var>buffer</var></code> と、オプションで <code><var>byteOffset</var></code> と <code><var>length</var></code> 引数を指定して呼び出されると、指定された {{jsxref("ArrayBuffer")}} を表示する型付き配列ビューが生成されます。 <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数は、型付き配列ビューが表示するメモリ範囲を指定する。 両方を省略した場合は <code><var>buffer</var></code> の全てを表示し、 <code><var>length</var></code> のみを省略した場合は <code><var>buffer</var></code> の残りを表示します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_an_Int32Array" name="Different_ways_to_create_an_Int32Array">様々な方法による Int32Array の生成</h3>
+
+<pre class="brush: js notranslate">// From a length
+var int32 = new Int32Array(2);
+int32[0] = 42;
+console.log(int32[0]); // 42
+console.log(int32.length); // 2
+console.log(int32.BYTES_PER_ELEMENT); // 4
+
+// From an array
+var arr = new Int32Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Int32Array([21, 31]);
+var y = new Int32Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(16);
+var z = new Int32Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var int32 = new Int32Array(iterable);
+// Int32Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typedarray-constructors', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Int32Array.Int32Array")}}</p>
+
+<h3 id="Compatibility_notes" name="Compatibility_notes">互換性メモ</h3>
+
+<p>ECMAScript 2015 から、 <code>Int32Array</code> コンストラクターは構築に {{jsxref("Operators/new", "new")}} 演算子が必要になりました。 <code>Int32Array</code> コンストラクターを <code>new</code> なしで関数として呼び出すと、 {{jsxref("TypeError")}} が発生するようになりました。</p>
+
+<pre class="brush: js example-bad notranslate">var dv = Int32Array([1, 2, 3]);
+// TypeError: calling a builtin Int32Array constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good notranslate">var dv = new Int32Array([1, 2, 3]);</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/int8array/index.html b/files/ja/web/javascript/reference/global_objects/int8array/index.html
new file mode 100644
index 0000000000..9adee8ad39
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/int8array/index.html
@@ -0,0 +1,168 @@
+---
+title: Int8Array
+slug: Web/JavaScript/Reference/Global_Objects/Int8Array
+tags:
+ - Class
+ - Int8Array
+ - JavaScript
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/Int8Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Int8Array</code></strong> は型付き配列であり、 2 の補数形式の 8 ビット符号付き整数値の配列を表します。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Int8Array/Int8Array", "Int8Array()")}}</dt>
+ <dd>新しい <code>Int8Array</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int8Array.BYTES_PER_ELEMENT")}}</dt>
+ <dd>要素の大きさの数値を返します。 <code>Int8Array</code> の場合は <code>1</code> になります。</dd>
+ <dt>{{jsxref("TypedArray.name", "Int8Array.name")}}</dt>
+ <dd>コンストラクターの名前を文字列値で返します。 <code>Int8Array</code> 型の場合は "<code>Int8Array</code>" です。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from", "Int8Array.from()")}}</dt>
+ <dd>新しい <code>Int8Array</code> を、配列風オブジェクトや反復可能オブジェクトから生成します。 {{jsxref("Array.from()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.of", "Int8Array.of()")}}</dt>
+ <dd>新しい <code>Int8Array</code> を、可変長引数で生成します。 {{jsxref("Array.of()")}} も参照してください。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.prototype.buffer", "Int8Array.prototype.buffer")}}</dt>
+ <dd><code>Int8Array</code> オブジェクトによって参照される {{jsxref("ArrayBuffer")}} を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength", "Int8Array.prototype.byteLength")}}</dt>
+ <dd><code>Int8Array</code> の長さを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset", "Int8Array.prototype.byteOffset")}}</dt>
+ <dd><code>Int8Array</code> のオフセットを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length", "Int8Array.prototype.length")}}</dt>
+ <dd><code>Int8Array</code> オブジェクト内に保持されている要素の数を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.copyWithin", "Int8Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内で一連の配列要素をコピーします。 {{jsxref("Array.prototype.copyWithin()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.entries", "Int8Array.prototype.entries()")}}</dt>
+ <dd>配列内の各添字に対するキーと値の組を含む、新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.entries()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.every", "Int8Array.prototype.every()")}}</dt>
+ <dd>配列内のすべての要素に対して、指定された関数によるテストに合格するかどうかをテストします。 {{jsxref("Array.prototype.every()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.fill", "Int8Array.prototype.fill()")}}</dt>
+ <dd>配列の先頭から末尾までのすべての要素を固定値で設定します。 {{jsxref("Array.prototype.fill()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.filter", "Int8Array.prototype.filter()")}}</dt>
+ <dd>この配列のすべての要素のうち、指定されたフィルタリング関数が与えられたフィルタリング関数が <code>true</code> を返すすべての要素で、新しい配列を生成します。 {{jsxref("Array.prototype.filter()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.find", "Int8Array.prototype.find()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その値を返します。見つからなかった場合は <code>undefined</code> を返します。 {{jsxref("Array.prototype.find()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.findIndex", "Int8Array.prototype.findIndex()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その添字を返します。見つからなかった場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.findIndex()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.forEach", "Int8Array.prototype.forEach()")}}</dt>
+ <dd>配列内の各要素に対してある関数を呼び出します。 {{jsxref("Array.prototype.forEach()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.includes", "Int8Array.prototype.includes()")}}</dt>
+ <dd>型付き配列にある要素が含まれているかどうかを判断し、それに応じて <code>true</code> または <code>false</code> を返します。 {{jsxref("Array.prototype.includes()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.indexOf", "Int8Array.prototype.indexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最初の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.indexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.join", "Int8Array.prototype.join()")}}</dt>
+ <dd>すべての配列要素を1つの文字列に結合します。 {{jsxref("Array.prototype.join()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.keys", "Int8Array.prototype.keys()")}}</dt>
+ <dd>配列内のすべての添字に対するキーを含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.keys()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.lastIndexOf", "Int8Array.prototype.lastIndexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最後の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.lastIndexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.map", "Int8Array.prototype.map()")}}</dt>
+ <dd>この配列のすべての要素を引数として指定された関数を呼び出し、その結果で新しい配列を生成します。 {{jsxref("Array.prototype.map()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduce", "Int8Array.prototype.reduce()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (左から右へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduce()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduceRight", "Int8Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (右から左へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduceRight()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reverse", "Int8Array.prototype.reverse()")}}</dt>
+ <dd>配列要素の順番を反転させます。 — 最初の要素は最後になり、最後の要素は最初になります。 {{jsxref("Array.prototype.reverse()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.set", "Int8Array.prototype.set()")}}</dt>
+ <dd>指定された配列から複数の入力値を読み込み、型付き配列に格納します。</dd>
+ <dt>{{jsxref("TypedArray.slice", "Int8Array.prototype.slice()")}}</dt>
+ <dd>配列の一区間を取り出して新しい配列を返します。 {{jsxref("Array.prototype.slice()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.some", "Int8Array.prototype.some()")}}</dt>
+ <dd>この配列内で、指定されたテスト関数を満たす要素が1つでもあった場合に <code>true</code> を返します。 {{jsxref("Array.prototype.some()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.sort", "Int8Array.prototype.sort()")}}</dt>
+ <dd>配列の要素をその場でソートし、その配列を返します。 {{jsxref("Array.prototype.sort()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.subarray", "Int8Array.prototype.subarray()")}}</dt>
+ <dd>指定された開始位置と終了位置の間にある要素から新しい <code>Int8Array</code> を返します。</dd>
+ <dt>{{jsxref("TypedArray.values", "Int8Array.prototype.values()")}}</dt>
+ <dd>配列内の各添字に対する値を含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.values()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toLocaleString", "Int8Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列と要素を表すローカライズされた文字列を返します。 {{jsxref("Array.prototype.toLocaleString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toString", "Int8Array.prototype.toString()")}}</dt>
+ <dd>配列と要素を表す文字列を返します。 {{jsxref("Array.prototype.toString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.@@iterator", "Int8Array.prototype[@@iterator]()")}}</dt>
+ <dd>配列内のそれぞれの添字の値を含む新しい<em>配列イテレーター</em>オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_an_Int8Array" name="Different_ways_to_create_an_Int8Array">Int8Array を生成する様々な方法</h3>
+
+<pre class="brush: js notranslate">// 長さを指定
+var int8 = new Int8Array(2);
+int8[0] = 42;
+console.log(int8[0]); // 42
+console.log(int8.length); // 2
+console.log(int8.BYTES_PER_ELEMENT); // 1
+
+// 配列から
+var arr = new Int8Array([21,31]);
+console.log(arr[1]); // 31
+
+// 他の型付き配列から
+var x = new Int8Array([21, 31]);
+var y = new Int8Array(x);
+console.log(y[0]); // 21
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(8);
+var z = new Int8Array(buffer, 1, 4);
+
+// 反復可能オブジェクトから
+var iterable = function*(){ yield* [1,2,3]; }();
+var int8 = new Int8Array(iterable);
+// Int8Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Int8Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/int8array/int8array/index.html b/files/ja/web/javascript/reference/global_objects/int8array/int8array/index.html
new file mode 100644
index 0000000000..8a66ceada6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/int8array/int8array/index.html
@@ -0,0 +1,103 @@
+---
+title: Int8Array() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Int8Array/Int8Array
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypedArray
+translation_of: Web/JavaScript/Reference/Global_Objects/Int8Array/Int8Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Int8Array()</code></strong> は型付き配列のコンストラクターで、 2 の補数形式の 8 ビット符号付き整数値の型付き配列を生成します。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Int8Array(); // new in ES2017
+new Int8Array(<var>length</var>);
+new Int8Array(<var>typedArray</var>);
+new Int8Array(<var>object</var>);
+new Int8Array(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd><code><var>length</var></code> 引数付きで呼び出されると、メモリ内に内部的な配列バッファーを作成し、大きさは <code><var>length</var></code><em> を <code>BYTES_PER_ELEMENT</code></em> で乗じたバイト数になり、ゼロになることもあります。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code>typedArray</code> 引数付きで呼び出されると、これはあらゆる型付き配列型 (例えば <code>Int32Array</code>) にすることができますが、 <code><var>typedArray</var></code> を新しい型付き配列にコピーします。 <code><var>typedArray</var></code> の中のそれぞれの値は、新しい配列にコピーされる前にコンストラクターの対応する型に変換されます。新しい型付き配列の長さは <code><var>typedArray</var></code> 引数の長さと同じになります。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd><code><var>object</var></code> 引数付きで呼び出されると、あたかも <code><var>TypedArray</var>.from()</code> メソッドであるかのように新しい型付き配列が生成されます。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd><code><var>buffer</var></code> と、オプションで <code><var>byteOffset</var></code> と <code><var>length</var></code> 引数を指定して呼び出されると、指定された {{jsxref("ArrayBuffer")}} を表示する型付き配列ビューが生成されます。 <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数は、型付き配列ビューが表示するメモリ範囲を指定する。 両方を省略した場合は <code><var>buffer</var></code> の全てを表示し、 <code><var>length</var></code> のみを省略した場合は <code><var>buffer</var></code> の残りを表示します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_an_Int8Array" name="Different_ways_to_create_an_Int8Array">様々な方法による Int8Array の生成</h3>
+
+<pre class="brush: js notranslate">// 長さの指定
+var int8 = new Int8Array(2);
+int8[0] = 42;
+console.log(int8[0]); // 42
+console.log(int8.length); // 2
+console.log(int8.BYTES_PER_ELEMENT); // 1
+
+// 配列から
+var arr = new Int8Array([21,31]);
+console.log(arr[1]); // 31
+
+// 他の型付き配列から
+var x = new Int8Array([21, 31]);
+var y = new Int8Array(x);
+console.log(y[0]); // 21
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(8);
+var z = new Int8Array(buffer, 1, 4);
+
+// 反復可能オブジェクトから
+var iterable = function*(){ yield* [1,2,3]; }();
+var int8 = new Int8Array(iterable);
+// Int8Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typedarray-constructors', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Int8Array.Int8Array")}}</p>
+
+<h3 id="Compatibility_notes" name="Compatibility_notes">互換性メモ</h3>
+
+<p>ECMAScript 2015 から、 <code>Int8Array</code> コンストラクターは構築に {{jsxref("Operators/new", "new")}} 演算子が必要になりました。 <code>Int8Array</code> コンストラクターを <code>new</code> なしで関数として呼び出すと、 {{jsxref("TypeError")}} が発生するようになりました。</p>
+
+<pre class="brush: js example-bad notranslate">var dv = Int8Array([1, 2, 3]);
+// TypeError: calling a builtin Int8Array constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good notranslate">var dv = new Int8Array([1, 2, 3]);</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/internalerror/index.html b/files/ja/web/javascript/reference/global_objects/internalerror/index.html
new file mode 100644
index 0000000000..b5eb4fec4b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/internalerror/index.html
@@ -0,0 +1,95 @@
+---
+title: InternalError
+slug: Web/JavaScript/Reference/Global_Objects/InternalError
+tags:
+ - Class
+ - InternalError
+ - JavaScript
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/InternalError
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p><strong><code>InternalError</code> オブジェクト</strong> は、 JavaScript エンジンで内部的に発生したエラーを示します。</p>
+
+<p>これは、以下のように何かが大きすぎる時に発生します。</p>
+
+<ul>
+ <li>"switch case が多すぎる"、</li>
+ <li>"正規表現内の括弧が多すぎる"、</li>
+ <li>"配列の初期化子が大きすぎる"、</li>
+ <li>"再帰が深すぎる"。</li>
+</ul>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("InternalError/InternalError", "InternalError()")}}</dt>
+ <dd>新しい <code>InternalError</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.message", "InternalError.prototype.message")}}</dt>
+ <dd>エラーメッセージです。 {{jsxref("Error.prototype.message")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.name", "InternalError.prototype.name")}}</dt>
+ <dd>エラー名です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.fileName", "InternalError.prototype.fileName")}}</dt>
+ <dd>このエラーが発生したファイルのパスです。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.lineNumber", "InternalError.prototype.lineNumber")}}</dt>
+ <dd>このエラーが発生したファイル内の行番号です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.columnNumber", "InternalError.prototype.columnNumber")}}</dt>
+ <dd>このエラーが発生した行内の桁番号です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.stack", "InternalError.prototype.stack")}}</dt>
+ <dd>スタックトレースです。 {{jsxref("Error")}} から継承しています。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Too_much_recursion" name="Too_much_recursion">深すぎる再帰</h3>
+
+<p>この再帰関数は終了条件によって、10回実行されます。</p>
+
+<pre class="brush: js notranslate">function loop(x) {
+ if (x &gt;= 10) // "x &gt;= 10" is the exit condition
+ return;
+ // do stuff
+ loop(x + 1); // the recursive call
+}
+loop(0);</pre>
+
+<p>この条件を非常に大きな値に設定した場合、動作しなくなります。</p>
+
+<pre class="brush: js example-bad notranslate">function loop(x) {
+ if (x &gt;= 1000000000000)
+ return;
+ // do stuff
+ loop(x + 1);
+}
+loop(0);
+
+// InternalError: too much recursion</pre>
+
+<p>詳しくは、 <a href="/ja/docs/Web/JavaScript/Reference/Errors/Too_much_recursion">InternalError: too much recursion.</a> を参照してください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>仕様の一部ではありません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.InternalError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+ <li>
+ <p><a href="/ja/docs/Web/JavaScript/Reference/Errors/Too_much_recursion">InternalError: too much recursion</a></p>
+ </li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/internalerror/internalerror/index.html b/files/ja/web/javascript/reference/global_objects/internalerror/internalerror/index.html
new file mode 100644
index 0000000000..963af6e10d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/internalerror/internalerror/index.html
@@ -0,0 +1,53 @@
+---
+title: InternalError() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/InternalError/InternalError
+tags:
+ - Constructor
+ - InternalError
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/InternalError/InternalError
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p><strong><code>InternalError()</code></strong> コンストラクターは、 JavaScript エンジンで内部的に発生したエラーを示すエラーを生成します。例えば、 "<strong>InternalError</strong>: too much recursion" などです。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new InternalError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>message</var></code> {{optional_inline}}</dt>
+ <dd>人間が読むためのエラーの説明です。</dd>
+ <dt><code><var>fileName</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードを含むファイルの名前です。</dd>
+ <dt><code><var>lineNumber</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードの行番号です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_a_new_InternalError" name="Creating_a_new_InternalError">新しい InternalError の生成</h3>
+
+<pre class="brush: js notranslate">new InternalError("Engine failure");
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>標準の一部ではありません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.InternalError.InternalError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/collator/collator/index.html b/files/ja/web/javascript/reference/global_objects/intl/collator/collator/index.html
new file mode 100644
index 0000000000..0a3e9b9b42
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/collator/collator/index.html
@@ -0,0 +1,112 @@
+---
+title: Intl.Collator() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/Collator
+tags:
+ - Collator
+ - Constructor
+ - Intl
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/Collator
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.Collator</code></strong> オブジェクトは、言語を考慮した文字列の比較を可能にするオブジェクトである collator のコンストラクターです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-collator.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Intl.Collator([<var>locales</var>[, <var>options</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>locales</var></code></dt>
+ <dd>
+ <p>任意。 BCP47 言語タグの文字列またはその配列。 <code>locales</code> 引数の一般的な形式や解釈については {{jsxref("Global_Objects/Intl", "Intl のページ", "#Locale_identification_and_negotiation", 1)}}を参照してください。次のUnicode拡張キーが使用可能です。</p>
+
+ <dl>
+ <dt><code>co</code></dt>
+ <dd>特定のロケールにおけるバリアントの比較方法を指定します。指定可能な値には "<code>big5han</code>", "<code>dict</code>", "<code>direct</code>", "<code>ducet</code>", "<code>gb2312</code>", "<code>phonebk</code>", "<code>phonetic</code>", "<code>pinyin</code>", "<code>reformed</code>", "<code>searchjl</code>", "<code>stroke</code>", "<code>trad</code>", "<code>unihan</code>" があります。なお "<code>standard</code>" と"<code>search</code>" については、 <code>options</code> 引数の <code>usage</code> プロパティによって代替されるため無視されます (下記参照)。</dd>
+ <dt><code>kn</code></dt>
+ <dd>"1" &lt; "2" &lt; "10" のように数値として比較を行うかどうかです。可能な値は "<code>true</code>" および "<code>false</code>" です。このオプションは <code><var>options</var></code> プロパティや、 Unicode 拡張キーで指定できます。両方で指定された場合、 <code><var>options</var></code> プロパティの指定が優先されます。</dd>
+ <dt><code>kf</code></dt>
+ <dd>大文字と小文字のどちらを先に並べるかを指定します。指定可能な値は "<code>upper</code>", "<code>lower</code>", "<code>false</code>" (ロケールの既定値を使用) です。このオプションは <code><var>options</var></code> プロパティや、 Unicode 拡張キーで指定できます。両方で指定された場合、 <code><var>options</var></code> プロパティの指定が優先されます。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>options</var></code></dt>
+ <dd>
+ <p>任意。次のプロパティの一部またはすべてを持つオブジェクトです。</p>
+
+ <dl>
+ <dt><code>localeMatcher</code></dt>
+ <dd>ロケール文字列のマッチングに使用するアルゴリズム。指定可能な値は "<code>lookup</code>" と "<code>best fit</code>" で、既定値は "<code>best fit</code>" です。このオプションの詳細については {{jsxref("Global_Objects/Intl", "Intl のページ", "#Locale_negotiation", 1)}}を参照してください。</dd>
+ <dt><code>usage</code></dt>
+ <dd>ソート用の比較をするのか、文字列検索用の比較をするのか。指定可能な値は "<code>sort</code>" または "<code>search</code>" で、既定値は "<code>sort</code>" です。</dd>
+ <dt><code>sensitivity</code></dt>
+ <dd>
+ <p>どの程度の文字の違いまでを区別するかです。以下の値を指定可能です。</p>
+
+ <ul>
+ <li>"<code>base</code>": ベース文字が異なれば、異なる文字であると評価します。 例: <code>a ≠ b</code>、 <code>a = á</code>、 <code>a = A</code></li>
+ <li>"<code>accent</code>": ベース文字が異なるか、またはアクセントその他の発音区別符号が異なれば、異なる文字であると評価します。 例: <code>a ≠ b</code>、 <code>a ≠ á</code>、 <code>a = A</code></li>
+ <li>"<code>case</code>": ベース文字が異なるか、ベース文字が同一でも大文字小文字が異なれば、異なる文字であると評価します。 例: <code>a ≠ b</code>、 <code>a = á</code>、 <code>a ≠ A</code></li>
+ <li>"<code>variant</code>": ベース文字、アクセントその他の発音区別符号、および大文字小文字のいずれかが異なれば、異なる文字であると評価します。他の違いも考慮されるかもしれません。 例: <code>a ≠ b</code>、 <code>a ≠ á</code>、 <code>a ≠ A</code></li>
+ </ul>
+
+ <p>既定値は、 <code>usage</code> が "<code>sort</code>" の場合は "<code>variant</code>"、 "<code>search</code>"の場合はロケール依存です。</p>
+ </dd>
+ <dt><code>ignorePunctuation</code></dt>
+ <dd>句読点を無視するかどうか。指定可能な値は <code>true</code> または <code>false</code> で、既定値は <code>false</code> です。</dd>
+ <dt><code>numeric</code></dt>
+ <dd>"1" &lt; "2" &lt; "10" のように数値として比較を行うかどうかです。可能な値は <code>true</code> および <code>false</code> です。既定値は <code>false</code> です。このオプションは <code><var>options</var></code> プロパティや、 Unicode 拡張キーで指定できます。両方で指定された場合、 <code><var>options</var></code> プロパティの指定が優先されます。実装はこのプロパティに対応することが要件とはされていません。</dd>
+ <dt><code>caseFirst</code></dt>
+ <dd>大文字と小文字のどちらを先に並べるかです。指定可能な値は "<code>upper</code>", "<code>lower</code>", "<code>false</code>" (ロケールの既定の動作) です。大文字と小文字のどちらを先に並べるかは <code><var>options</var></code> プロパティでも Unicode 拡張キーでも指定可能です。両方で指定された場合、 <code><var>options</var></code> プロパティの指定が優先されます。実装はこのプロパティに対応することが要件とはされていません。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Collator" name="Using_Collator">Collator の使用</h3>
+
+<p>次の例では、文字列が別の文字列の前であるか、後であるか、または同じレベルで発生したのかの様々な可能性のある結果を示しています。</p>
+
+<pre class="brush: js notranslate">console.log(new Intl.Collator().compare('a', 'c')); // → a negative value
+console.log(new Intl.Collator().compare('c', 'a')); // → a positive value
+console.log(new Intl.Collator().compare('a', 'a')); // → 0
+</pre>
+
+<p>上記のコードで示された結果は、ブラウザーやブラウザーのバージョンによって異なる可能性があることに注意してください。これは、値が実装固有のものであるためです。つまり、仕様では前後の値が負と正の値であることだけが要求されています。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-the-intl-collator-constructor', 'Intl.Collator constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.Collator.Collator")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl">Intl</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/collator/compare/index.html b/files/ja/web/javascript/reference/global_objects/intl/collator/compare/index.html
new file mode 100644
index 0000000000..947a3a596f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/collator/compare/index.html
@@ -0,0 +1,88 @@
+---
+title: Intl.Collator.prototype.compare
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare
+tags:
+ - Collator
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.Collator.prototype.compare()</code></strong> メソッドは、2つの文字列をこの {{jsxref("Collator")}} オブジェクトのソート順に従って比較します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-collator-prototype-compare.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>collator</var>.compare(<var>string1</var>, <var>string2</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>string1</var></code></dt>
+ <dt><code><var>string2</var></code></dt>
+ <dd>互いに比較する文字列です。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>compare</code> ゲッター関数は、 <code>string1</code> と <code>string2</code> をこの {{jsxref("Collator")}} オブジェクトのソート順に従って比較した結果を数値で返します。 <code>string1</code> が <code>string2</code> の前にくる場合は負の値、 <code>string1</code> が <code>string2</code> の後にくる場合は正の値、等しいとみなされる場合は 0 を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_compare_for_array_sort" name="Using_compare_for_array_sort">配列の並べ替えにおける compare の使用</h3>
+
+<p>配列の並べ替えのために <code>compare</code> ゲッター関数を使用します。なお、この関数は、取得元の collator にバインドされているので、直接 {{jsxref("Array.prototype.sort()")}} に渡すことができます。</p>
+
+<pre class="brush: js notranslate">var a = ['Offenbach', 'Österreich', 'Odenwald'];
+var collator = new Intl.Collator('de-u-co-phonebk');
+a.sort(collator.compare);
+console.log(a.join(', '));
+// → "Odenwald, Österreich, Offenbach"
+</pre>
+
+<h3 id="Using_compare_for_array_search" name="Using_compare_for_array_search">配列の検索における compare の使用</h3>
+
+<p>配列内の文字列の検索のために <code>compare</code> ゲッター関数を使用します。</p>
+
+<pre class="brush: js notranslate">var a = ['Congrès', 'congres', 'Assemblée', 'poisson'];
+var collator = new Intl.Collator('fr', { usage: 'search', sensitivity: 'base' });
+var s = 'congres';
+var matches = a.filter(v =&gt; collator.compare(v, s) === 0);
+console.log(matches.join(', '));
+// → "Congrès, congres"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl.collator.prototype.compare', 'Intl.Collator.prototype.compare')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.Collator.compare")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Collator", "Intl.Collator")}}</li>
+ <li>{{jsxref("String.prototype.localeCompare()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/collator/index.html b/files/ja/web/javascript/reference/global_objects/intl/collator/index.html
new file mode 100644
index 0000000000..24a3e83d2b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/collator/index.html
@@ -0,0 +1,109 @@
+---
+title: Intl.Collator
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator
+tags:
+ - Class
+ - Collator
+ - Internationalization
+ - Intl
+ - JavaScript
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.Collator</code></strong> オブジェクトは、言語を考慮した文字列の比較を可能にします。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-collator.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/Collator/Collator", "Intl.Collator()")}}</dt>
+ <dd>新しい <code>Collator</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}}</dt>
+ <dd>指定したロケールのうち、ランタイムの既定のロケールに代替されることなく対応されているものを含む配列を返します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Collator.compare", "Intl.Collator.prototype.compare")}}</dt>
+ <dd>この {{jsxref("Global_Objects/Collator", "Intl.Collator")}} オブジェクトのソート順に応じて2つの文字列を比較する関数を返します。</dd>
+ <dt>{{jsxref("Collator.resolvedOptions", "Intl.Collator.prototype.resolvedOptions()")}}</dt>
+ <dd>ローケルを反映しているプロパティとオブジェクトの初期化中に計算された照合オプションをもった新しいオブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Collator" name="Using_Collator">Collator の使用</h3>
+
+<p>次の例では、一方の文字列が他方の文字列の前である場合、後である場合、および同じレベルである場合の比較結果を表示します。</p>
+
+<pre class="brush: js notranslate">console.log(new Intl.Collator().compare('a', 'c')); // → 負の値
+console.log(new Intl.Collator().compare('c', 'a')); // → 正の値
+console.log(new Intl.Collator().compare('a', 'a')); // → 0
+</pre>
+
+<p>上記コードの結果は、ブラウザーやブラウザーのバージョンによって異なる可能性がある点に注意してください。というのも前および後を表す数値については、それぞれ負の数および正の数であることだけが仕様によって定めています。具体的な数値は定められていないため、実装ごとに異なる数値になるかもしれません。</p>
+
+<h3 id="locales_の使用">locales の使用</h3>
+
+<p>{{jsxref("Collator.prototype.compare()")}} の結果は言語によって異なります。アプリケーションのユーザインターフェイスで使用される言語のソート順を取得するには、 <code><var>locales</var></code> 引数にその言語 (およびフォールバック用の言語も) を指定してください。</p>
+
+<pre class="brush: js notranslate">// in German, ä sorts with a
+console.log(new Intl.Collator('de').compare('ä', 'z'));
+// → 負の値
+
+// in Swedish, ä sorts after z
+console.log(new Intl.Collator('sv').compare('ä', 'z'));
+// → 正の値
+</pre>
+
+<h3 id="Using_options" name="Using_options">options の使用</h3>
+
+<p>T{{jsxref("Collator.prototype.compare()")}} の結果は <code><var>options</var></code> 引数でカスタマイズできます。</p>
+
+<pre class="brush: js notranslate">// in German, ä has a as the base letter
+console.log(new Intl.Collator('de', { sensitivity: 'base' }).compare('ä', 'a'));
+// → 0
+
+// in Swedish, ä and a are separate base letters
+console.log(new Intl.Collator('sv', { sensitivity: 'base' }).compare('ä', 'a'));
+// → 正の値
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#collator-objects', 'Intl.Collator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.Collator")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl">Intl</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.html b/files/ja/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.html
new file mode 100644
index 0000000000..e57ca7a74c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.html
@@ -0,0 +1,87 @@
+---
+title: Intl.Collator.prototype.resolvedOptions()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/resolvedOptions
+tags:
+ - Collator
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/resolvedOptions
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.Collator.prototype.resolvedOptions()</code></strong> メソッドは、この {{jsxref("Collator")}} オブジェクトの初期化時に計算されたロケールと照合オプションを反映したプロパティを持つ新しいオブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-collator-prototype-resolvedoptions.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>collator</var>.resolvedOptions()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>この {{jsxref("Collator")}} オブジェクトの初期化時に計算されたロケールと照合オプションを反映したプロパティを持つ新しいオブジェクトです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>返されるオブジェクトには以下のプロパティがあります。</p>
+
+<dl>
+ <dt><code>locale</code></dt>
+ <dd>実際に使用したロケールの BCP 47 言語タグ。このロケールにつながる入力 BCP 47 言語タグに Unicode 拡張値が要求された場合、要求されたキーと値のペアのうち、このロケールで対応しているものが <code>locale</code> に含まれます。</dd>
+ <dt><code>usage</code></dt>
+ <dt><code>sensitivity</code></dt>
+ <dt><code>ignorePunctuation</code></dt>
+ <dd><code>options</code> 引数の同名のプロパティで提供された値、または既定値が入ります。</dd>
+ <dt><code>collation</code></dt>
+ <dd><code>locale</code> が対応している場合は、 Unicode 拡張キー <code>"co"</code> を使用して要求された値、そうでなければ <code>"default"</code> です。</dd>
+ <dt><code>numeric</code></dt>
+ <dt><code>caseFirst</code></dt>
+ <dd><code>options</code> 引数の同名のプロパティ、または Unicode 拡張キーの <code>"kn"</code> および <code>"kf"</code> で要求された値、または既定値が入ります。実装がこれらのプロパティに対応していない場合は、省略されます。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_resolvedOptions_method" name="Using_the_resolvedOptions_method">resolvedOptions メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var de = new Intl.Collator('de', { sensitivity: 'base' })
+var usedOptions = de.resolvedOptions();
+
+usedOptions.locale; // "de"
+usedOptions.usage; // "sort"
+usedOptions.sensitivity; // "base"
+usedOptions.ignorePunctuation; // false
+usedOptions.collation; // "default"
+usedOptions.numeric; // false
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl.collator.prototype.resolvedoptions', 'Intl.Collator.prototype.resolvedOptions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.Collator.resolvedOptions")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Collator", "Intl.Collator")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.html b/files/ja/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.html
new file mode 100644
index 0000000000..1fd61a49ec
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.html
@@ -0,0 +1,85 @@
+---
+title: Intl.Collator.supportedLocalesOf()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/supportedLocalesOf
+tags:
+ - Collator
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/supportedLocalesOf
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.Collator.supportedLocalesOf()</code></strong> メソッドは、ランタイムの既定のロケールで代替しなくても照合で対応するロケールを含む配列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-collator-prototype-supportedlocalesof.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>Intl.Collator.supportedLocalesOf(<var>locales</var>[, <var>options</var>])</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>locales</var></code></dt>
+ <dd>BCP 47 言語タグを持つ文字列、またはそのような文字列の配列です。 <code>locales</code> 引数の一般的な形式については、 {{jsxref("Global_Objects/Intl", "Intl のページ", "#Locale_identification_and_negotiation", 1)}}を参照してください。</dd>
+ <dt><code><var>options</var></code></dt>
+ <dd>
+ <p>省略可能です。以下のプロパティを持つことがあるオブジェクトです。</p>
+
+ <dl>
+ <dt><code>localeMatcher</code></dt>
+ <dd>使用するロケールの一致アルゴリズムです。指定可能な値は <code>lookup</code> および <code>best fit</code> で、既定値は <code>best fit</code> です。このオプションの詳細は、 {{jsxref("Global_Objects/IntlIntl", "Intl のページ", "#Locale_negotiation", 1)}}を参照してください。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定したロケールタグのサブセットを表す文字列の配列で、ランタイムの既定のロケールで代替する必要なく複数形の書式で対応されているものを含みます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>locales</code> で指定されている言語タグのサブセットを含む配列を返します。返される言語タグは、ランタイムがロケールの照合に対応しているもので、使用しているロケール一致アルゴリズムが、既定のロケールで代替することなく一致するとみなすものです。</p>
+
+<h2 id="Examples">Examples</h2>
+
+<h3 id="Using_supportedLocalesOf">Using <code>supportedLocalesOf</code></h3>
+
+<p>インドネシア語とドイツ語に対応しているもの、バリ語に対応していないランタイムを想定すると、ピンインの照合がインドネシア語では使用されておらず、インドネシアに特化したドイツ語がサポートされている可能性が低いとしても、 <code>supportedLocalesOf</code> はインドネシア語とドイツ語の言語タグを変更せずに返します。これは <code>lookup</code> アルゴリズムの仕様であること注意してください。 <code>best fit</code> マッチャーは、ほとんどのバリ語話者がインドネシア語も理解しているので、インドネシア語がバリ語に適切であると判断し、バリ語の言語タグも返すかもしれません。</p>
+
+<pre class="brush: js notranslate">var locales = ['ban', 'id-u-co-pinyin', 'de-ID'];
+var options = { localeMatcher: 'lookup' };
+console.log(Intl.Collator.supportedLocalesOf(locales, options).join(', '));
+// → "id-u-co-pinyin, de-ID"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl.collator.supportedlocalesof', 'Intl.Collator.supportedLocalesOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.Collator.supportedLocalesOf")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Collator", "Intl.Collator")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/datetimeformat/index.html b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/datetimeformat/index.html
new file mode 100644
index 0000000000..049e69396d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/datetimeformat/index.html
@@ -0,0 +1,191 @@
+---
+title: Intl.DateTimeFormat() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat
+tags:
+ - Constructor
+ - DateTimeFormat
+ - Intl
+ - JavaScript
+ - Reference
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.DateTimeFormat()</code></strong> コンストラクターは、言語に応じた日付と時刻の書式化を可能にするオブジェクトのためのものです。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-datetimeformat.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">new Intl.DateTimeFormat([<var>locales</var>[, <var>options</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>locales</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p>BCP47 言語タグの文字列、または、そのような文字列の配列です。ブラウザーの既定のロケールを使用するには、この引数を省略するか、 <code>undefined</code> を渡すかしてください。 Unicode 拡張に対応しています (例えば "<code>en-US-u-ca-buddhist</code>" など)。 <code>locales</code> 引数の一般的な形式と解釈は、 {{jsxref("Global_Objects/Intl", "Intl", "#Locale_identification_and_negotiation", 1)}} のページをご覧ください。次の Unicode 拡張キーが利用できます。</p>
+
+ <dl>
+ <dt><code>nu</code></dt>
+ <dd>番号方式。使用できる値は次のとおりです。 "<code>arab</code>", "<code>arabext</code>", "<code>bali</code>", "<code>beng</code>", "<code>deva</code>", "<code>fullwide</code>", "<code>gujr</code>", "<code>guru</code>", "<code>hanidec</code>", "<code>khmr</code>", "<code>knda</code>", "<code>laoo</code>", "<code>latn</code>", "<code>limb</code>", "<code>mlym</code>", "<code>mong</code>", "<code>mymr</code>", "<code>orya</code>", "<code>tamldec</code>", "<code>telu</code>", "<code>thai</code>", "<code>tibt</code>"</dd>
+ <dt><code>ca</code></dt>
+ <dd>カレンダー。使用できる値は次のとおりです。 "<code>buddhist</code>", "<code>chinese</code>", "<code>coptic</code>", "<code>ethiopia</code>", "<code>ethiopic</code>", "<code>gregory</code>", "<code>hebrew</code>", "<code>indian</code>", "<code>islamic</code>", "<code>iso8601</code>", "<code>japanese</code>", "<code>persian</code>", "<code>roc</code>"</dd>
+ <dt><code>hc</code></dt>
+ <dd>時制。使用できる値は次の通りです。 "<code>h11</code>", "<code>h12</code>", "<code>h23</code>", "<code>h24</code>".</dd>
+ </dl>
+ </dd>
+ <dt><code><var>options</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p>以下のプロパティの一部またはすべてを持つオブジェクトです。</p>
+
+ <dl>
+ <dt><code>dateStyle</code></dt>
+ <dd><code>format()</code> が呼び出された際に使用される日付の書式化スタイルです。利用可能な値は以下のとおりです。
+ <ul>
+ <li>"<code>full</code>"</li>
+ <li>"<code>long</code>"</li>
+ <li>"<code>medium</code>"</li>
+ <li>"<code>short</code>"</li>
+ </ul>
+ </dd>
+ <dt><code>timeStyle</code></dt>
+ <dd><code>format()</code> が呼び出された際に使用される時刻の書式化スタイルです。利用可能な値は以下のとおりです。
+ <ul>
+ <li>"<code>full</code>"</li>
+ <li>"<code>long</code>"</li>
+ <li>"<code>medium</code>"</li>
+ <li>"<code>short</code>"</li>
+ </ul>
+ </dd>
+ <dt><code>fractionalSecondDigits</code></dt>
+ <dd><code>format()</code> を呼び出したときに適用する秒の小数点以下の桁数です。有効な値は 0-3 です。</dd>
+ <dt><code>calendar</code></dt>
+ <dd>暦です。有効な値は、 "<code>buddhist</code>", "<code>chinese</code>", " <code>coptic</code>", "<code>ethiopia</code>", "<code>ethiopic</code>", "<code>gregory</code>", " <code>hebrew</code>", "<code>indian</code>", "<code>islamic</code>", "<code>iso8601</code>", " <code>japanese</code>", "<code>persian</code>", "<code>roc</code>" です。</dd>
+ <dt><code>dayPeriod</code></dt>
+ <dd>日単位の期間の表現の仕方です。有効な値は、 "<code>narrow</code>", "<code>short</code>", " <code>long</code>" です。</dd>
+ <dt><code>numberingSystem</code></dt>
+ <dd>命数法です。有効な値は、 "<code>arab</code>", "<code>arabext</code>", " <code>bali</code>", "<code>beng</code>", "<code>deva</code>", "<code>fullwide</code>", " <code>gujr</code>", "<code>guru</code>", "<code>hanidec</code>", "<code>khmr</code>", " <code>knda</code>", "<code>laoo</code>", "<code>latn</code>", "<code>limb</code>", "<code>mlym</code>", " <code>mong</code>", "<code>mymr</code>", "<code>orya</code>", "<code>tamldec</code>", " <code>telu</code>", "<code>thai</code>", "<code>tibt</code>" です。</dd>
+ <dt><code>localeMatcher</code></dt>
+ <dd>使用するロケール一致アルゴリズム。利用可能な値は "<code>lookup</code>" と "<code>best fit</code>" です。既定値は "<code>best fit</code>" です。このオプションについての詳細は、 {{jsxref("Global_Objects/Intl", "Intl のページ", "#Locale_negotiation", 1)}}をご覧ください。</dd>
+ <dt><code>timeZone</code></dt>
+ <dd>使用するタイムゾーン。実装が認識しなければならない唯一の値は "<code>UTC</code>" です。既定値は、実行時の既定のタイムゾーンです。実装は、 <a href="https://www.iana.org/time-zones">IANA タイムゾーンデータベース</a>のタイムゾーン名、例えば "<code>Asia/Shanghai</code>", "<code>Asia/Kolkata</code>", "<code>America/New_York</code>" なども認識できる場合があります。</dd>
+ <dt><code>hour12</code></dt>
+ <dd>12時制を使用するかどうか (24時制に対して)。可能な値は <code>true</code> と <code>false</code> です。既定ではロケールに依存します。このオプションは <code>hc</code> 言語タグや <code>hourCycle</code> オプションと一緒に使用された場合、これらを上書きします。</dd>
+ <dt><code>hourCycle</code></dt>
+ <dd>使用する時の周期です。利用可能な値は "<code>h11</code>", "<code>h12</code>", "<code>h23</code>", "<code>h24</code>" です。このオプションは <code>hc</code> 言語タグと一緒に使用された場合はそれを上書きし、両方のオプションが指定されていた場合は <code>hour12</code> オプションが優先されます。</dd>
+ <dt><code>formatMatcher</code></dt>
+ <dd>使用する書式一致アルゴリズム。可能な値は "<code>basic</code>" と "<code>best fit</code>" です。既定値は "<code>best fit</code>" です。このプロパティの使用方法については、以下の項を参照してください。</dd>
+ </dl>
+
+ <p>以下のプロパティは、書式化の出力や、要求された表現で使用する日付や時刻のコンポーネントです。実装は、少なくとも以下のサブセットに対応することが要求されています。</p>
+
+ <ul>
+ <li><code>weekday</code>, <code>year</code>, <code>month</code>, <code>day</code>, <code>hour</code>, <code>minute</code>, <code>second</code></li>
+ <li><code>weekday</code>, <code>year</code>, <code>month</code>, <code>day</code></li>
+ <li><code>year</code>, <code>month</code>, <code>day</code></li>
+ <li><code>year</code>, <code>month</code></li>
+ <li><code>month</code>, <code>day</code></li>
+ <li><code>hour</code>, <code>minute</code>, <code>second</code></li>
+ <li><code>hour</code>, <code>minute</code></li>
+ </ul>
+
+ <p>実装は他のサブセットに対応することもでき、要求はすべての利用可能な表現の中から最適なものを見つけるために交渉します。 <code>formatMatcher</code> プロパティによるこの交渉や選択には2つのアルゴリズムが利用できます。<a href="http://www.ecma-international.org/ecma-402/1.0/#BasicFormatMatcher">完全に定義された "<code>basic</code>" アルゴリズム</a>と、実装に依存した"<code>best fit</code>" アルゴリズムです。</p>
+
+ <dl>
+ <dt><code>weekday</code></dt>
+ <dd>曜日の表現です。利用可能な値は以下の通りです。
+ <ul>
+ <li>"<code>long</code>" (例 <code>Thursday</code>)</li>
+ <li>"<code>short</code>" (例 <code>Thu</code>)</li>
+ <li>"<code>narrow</code>" (例 <code>T</code>)。ロケールによっては、 narrow 形式が同じ曜日が2つある場合もあります (例 <code>Tuesday</code> の narrow 形式も <code>T</code> です)。</li>
+ </ul>
+ </dd>
+ <dt><code>era</code></dt>
+ <dd>時代の表現です。利用可能な値は以下の通りです。
+ <ul>
+ <li>"<code>long</code>" (例 <code>Anno Domini</code>, 紀元)</li>
+ <li>"<code>short</code>" (例 <code>AD</code>)</li>
+ <li>"<code>narrow</code>" (例 <code>A</code>)</li>
+ </ul>
+ </dd>
+ <dt><code>year</code></dt>
+ <dd>年の表現です。利用可能な値は以下の通りです。
+ <ul>
+ <li>"<code>numeric</code>" (例 <code>2012</code>)</li>
+ <li>"<code>2-digit</code>" (例 <code>12</code>)</li>
+ </ul>
+ </dd>
+ <dt><code>month</code></dt>
+ <dd>月の表現です。利用可能な値は以下の通りです。
+ <ul>
+ <li>"<code>numeric</code>" (例 <code>2</code>)</li>
+ <li>"<code>2-digit</code>" (例 <code>02</code>)</li>
+ <li>"<code>long</code>" (例 <code>March</code>)</li>
+ <li>"<code>short</code>" (例 <code>Mar</code>)</li>
+ <li>"<code>narrow</code>" (例 <code>M</code>)。ロケールによっては、 narrow 形式が同じ月が2つある場合もあります (例 <code>May</code> の narrow 形式も <code>M</code> です)。</li>
+ </ul>
+ </dd>
+ <dt><code>day</code></dt>
+ <dd>日の表現です。利用可能な値は以下の通りです。
+ <ul>
+ <li>"<code>numeric</code>" (例 <code>1</code>)</li>
+ <li>"<code>2-digit</code>" (例 <code>01</code>)</li>
+ </ul>
+ </dd>
+ <dt><code>hour</code></dt>
+ <dd>時の表現です。利用可能な値は "<code>numeric</code>", "<code>2-digit</code>" です。</dd>
+ <dt><code>minute</code></dt>
+ <dd>分の表現です。利用可能な値は "<code>numeric</code>", "<code>2-digit</code>" です。</dd>
+ <dt><code>second</code></dt>
+ <dd>秒の表現です。利用可能な値は "<code>numeric</code>", "<code>2-digit</code>" です。</dd>
+ <dt><code>timeZoneName</code></dt>
+ <dd>タイムゾーン名の表現です。利用可能な値は以下の通りです。
+ <ul>
+ <li>"<code>long</code>" (例 <code>British Summer Time</code>)</li>
+ <li>"<code>short</code>" (例 <code>GMT+1</code>)</li>
+ </ul>
+ </dd>
+ </dl>
+
+ <p class="noinclude">日付・時間コンポーネントプロパティの既定値は {{jsxref("undefined")}} ですが、すべてのコンポーネントプロパティが {{jsxref("undefined")}} であった場合、 <code>year</code>, <code>month</code>, <code>day</code> は "<code>numeric</code>" であると仮定されます。</p>
+ </dd>
+</dl>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl-datetimeformat-constructor', 'Intl.DateTimeFormat')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.DateTimeFormat.DateTimeFormat")}}</p>
+
+<h3 id="Implementation_Progress" name="Implementation_Progress">実装の進捗状況</h3>
+
+<p>以下の表は、クロスブラウザーの安定性にまだ達していない新機能の日々の実装状況を示しています。このデータは、 JavaScript の標準テストスイートである <a href="https://github.com/tc39/test262">Test262</a> で関連する機能テストをナイトリービルド、または各ブラウザの JavaScript エンジンの最新リリースで実行することで生成されます。</p>
+
+<div>{{EmbedTest262ReportResultsTable("Intl.DateTimeFormat-datetimestyle")}}</div>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl">Intl</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/format/index.html b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/format/index.html
new file mode 100644
index 0000000000..af59293b1f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/format/index.html
@@ -0,0 +1,113 @@
+---
+title: Intl.DateTimeFormat.prototype.format()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format
+tags:
+ - DateTimeFormat
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.NumberFormat.prototype.format()</code></strong> メソッドは、この {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} オブジェクトのロケールと整形オプションに従って日付や時刻を整形します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-format.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateTimeFormat</var>.format(<var>date</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>date</var></code></dt>
+ <dd>整形する日付や時刻です。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>format</code> ゲッター関数は、この {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} オブジェクトのロケールと整形オプションに従って日付や時刻を整形し、文字列に格納します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_format" name="Using_format">format の使用</h3>
+
+<p><code>format</code> ゲッター関数を使用して単一の日付値を整形します。こちらはセルビアの例です。</p>
+
+<pre class="brush: js notranslate">var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+var dateTimeFormat = new Intl.DateTimeFormat('sr-RS', options);
+console.log(dateTimeFormat.format(new Date()));
+// → "недеља, 7. април 2013."
+</pre>
+
+<h3 id="Using_format_with_map" name="Using_format_with_map">format と map の使用</h3>
+
+<p><code>format</code> ゲッター関数を使用して、配列内のすべての日付を整形することができます。なお、この関数は供給元である {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} に結び付けられているので、直接 {{jsxref("Array.prototype.map()")}} に渡すことができます。</p>
+
+<pre class="brush: js notranslate">var a = [new Date(2012, 08), new Date(2012, 11), new Date(2012, 03)];
+var options = { year: 'numeric', month: 'long' };
+var dateTimeFormat = new Intl.DateTimeFormat('pt-BR', options);
+var formatted = a.map(dateTimeFormat.format);
+console.log(formatted.join('; '));
+// → "setembro de 2012; dezembro de 2012; abril de 2012"
+</pre>
+
+<h3 id="書式化された日付値を固定値と比較することは避ける">書式化された日付値を固定値と比較することは避ける</h3>
+
+<p>ほとんどの場合、 <code>format()</code> が返す書式は一貫しています。しかし、これは将来的に変更される可能性があり、すべての言語で保証されているわけではありません — 出力のバリエーションは設計上のものであり、仕様上は許容されています。最も注目すべきは、 IE や Edge ブラウザは日付の周りに双方向の制御文字を挿入するため、他のテキストと連結したときに出力テキストが適切に流れることです。</p>
+
+<p>このことから、 <code>format()</code> の結果と固定値を比較することができると期待してはいけません。</p>
+
+<pre class="brush: js; example-bad notranslate">let d = new Date("2019-01-01T00:00:00.000000Z");
+let formattedDate = Intl.DateTimeFormat(undefined, {
+ year: 'numeric',
+ month: 'numeric',
+ day: 'numeric',
+ hour: 'numeric',
+ minute: 'numeric',
+ second: 'numeric'
+}).format(d);
+
+"1.1.2019, 01:00:00" === formattedDate;
+// true in Firefox and others
+// false in IE and Edge
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>注</strong>: この <a href="https://stackoverflow.com/questions/25574963/ies-tolocalestring-has-strange-characters-in-results">StackOverflow のスレッド</a>に詳細や例があります。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl.datetimeformat.prototype.format', 'Intl.DateTimeFormat.format')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.DateTimeFormat.format")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formatrange/index.html b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formatrange/index.html
new file mode 100644
index 0000000000..39d0d6212e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formatrange/index.html
@@ -0,0 +1,86 @@
+---
+title: Intl.DateTimeFormat.prototype.formatRange()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatRange
+tags:
+ - JavaScript
+ - Method
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatRange
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.DateTimeFormat.prototype.formatRange()</code></strong> は、日付の範囲をもっとも簡明な方法で、 {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} オブジェクトがインスタンス化されたときに提供された <strong><code>locale</code></strong> と <code><strong>options</strong></code> に基づいて書式化します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-formatrange.html", "taller")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre><code>Intl.DateTimeFormat.prototype.formatRange(<var>startDate, endDate</var>)</code></pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_formatRange_usage" name="Basic_formatRange_usage">基本的な <code>formatRange</code> の使用</h3>
+
+<p>このメソッドは2つの {{jsxref("Date")}} を受け取り、 {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} オブジェクトがインスタンス化されたときに提供された <strong><code>locale</code></strong> と <code><strong>options</strong></code> に基づいて日付の範囲を書式化します。</p>
+
+<pre class="brush: js">let date1 = new Date(Date.UTC(2007, 0, 10, 10, 0, 0));
+let date2 = new Date(Date.UTC(2007, 0, 10, 11, 0, 0));
+let date3 = new Date(Date.UTC(2007, 0, 20, 10, 0, 0));
+// &gt; 'Wed, 10 Jan 2007 10:00:00 GMT'
+// &gt; 'Wed, 10 Jan 2007 11:00:00 GMT'
+// &gt; 'Sat, 20 Jan 2007 10:00:00 GMT'
+
+let fmt1 = new Intl.DateTimeFormat("en", {
+ year: '2-digit',
+ month: 'numeric',
+ day: 'numeric',
+ hour: 'numeric',
+ minute: 'numeric'
+});
+console.log(fmt1.format(date1));
+console.log(fmt1.formatRange(date1, date2));
+console.log(fmt1.formatRange(date1, date3));
+// &gt; '1/10/07, 10:00 AM'
+// &gt; '1/10/07, 10:00 – 11:00 AM'
+// &gt; '1/10/07, 10:00 AM – 1/20/07, 10:00 AM'
+
+let fmt2 = new Intl.DateTimeFormat("en", {
+ year: 'numeric',
+ month: 'short',
+ day: 'numeric'
+});
+console.log(fmt2.format(date1));
+console.log(fmt2.formatRange(date1, date2));
+console.log(fmt2.formatRange(date1, date3));
+// &gt; 'Jan 10, 2007'
+// &gt; 'Jan 10, 2007'
+// &gt; 'Jan 10 – 20, 2007'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状態</th>
+ <th scope="col">備考</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><a href="https://tc39.es/proposal-intl-DateTimeFormat-formatRange/#sec-intl.datetimeformat.prototype.formatRange">Intl.DateTimeFormat.prototype.formatRange</a></td>
+ <td>Stage 3</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formatrangetoparts/index.html b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formatrangetoparts/index.html
new file mode 100644
index 0000000000..9659a69883
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formatrangetoparts/index.html
@@ -0,0 +1,83 @@
+---
+title: Intl.DateTimeFormat.prototype.formatRangeToParts()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatRangeToParts
+tags:
+ - Internationalization
+ - JavaScript
+ - Localization
+ - Method
+ - Reference
+ - i18n
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatRangeToParts
+---
+<p>{{JSRef}}</p>
+
+<p><strong><code>Intl.DateTimeFormat.prototype.formatRangeToParts()</code></strong> メソッドは、 <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/prototype">DateTimeFormat</a></code> フォーマッターで生成される期間の各部品を表すロケール特有のトークンを提供します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-formatrangetoparts.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="notranslate"><code>Intl.DateTimeFormat.prototype.formatRangeToParts(<var>startDate</var>, <var>endDate</var>)</code></pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_formatRange_usage" name="Basic_formatRange_usage">基本的な formatRangeToParts の使い方</h3>
+
+<p>このメソッドは2つの {{jsxref("Date")}} を受け取り、期間を書式化する際の各部品を表すロケール特有のトークンを含む {{jsxref("Array")}} オブジェクトを返します。</p>
+
+<pre class="brush: js notranslate">let date1 = new Date(Date.UTC(2007, 0, 10, 10, 0, 0));
+let date2 = new Date(Date.UTC(2007, 0, 10, 11, 0, 0));
+// &gt; 'Wed, 10 Jan 2007 10:00:00 GMT'
+// &gt; 'Wed, 10 Jan 2007 11:00:00 GMT'
+
+let fmt = new Intl.DateTimeFormat("en", {
+ hour: 'numeric',
+ minute: 'numeric'
+});
+
+console.log(fmt.formatRange(date1, date2));
+// &gt; '10:00 – 11:00 AM'
+
+fmt.formatRangeToParts(date1, date2);
+// return value:
+// [
+// { type: 'hour', value: '10', source: "startRange" },
+// { type: 'literal', value: ':', source: "startRange" },
+// { type: 'minute', value: '00', source: "startRange" },
+// { type: 'literal', value: ' – ', source: "shared" },
+// { type: 'hour', value: '11', source: "endRange" },
+// { type: 'literal', value: ':', source: "endRange" },
+// { type: 'minute', value: '00', source: "endRange" },
+// { type: 'literal', value: ' ', source: "shared" },
+// { type: 'dayPeriod', value: 'AM', source: "shared" }
+// ]</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Intl.DateTimeFormat.formatRange', '#sec-Intl.DateTimeFormat.prototype.formatRangeToParts', 'formatRangeToParts()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.DateTimeFormat.formatRangeToParts")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Intl.DateTimeFormat.prototype.formatRange()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.html b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.html
new file mode 100644
index 0000000000..b6a1ea6c3e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.html
@@ -0,0 +1,241 @@
+---
+title: DateTimeFormat.prototype.formatToParts()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts
+tags:
+ - DateTimeFormat
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.DateTimeFormat.prototype.formatToParts()</code></strong> メソッドは、ロケールを意識した <code>DateTimeFormat</code> フォーマッターが生成する文字列のロケールを考慮した書式化を可能にします。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateTimeFormat</var>.formatToParts(<var>date</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>date</code> {{optional_inline}}</dt>
+ <dd>書式化する日付。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>書式化された日付のパーツを含むオブジェクトの {{jsxref("Array")}} です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>formatToParts()</code> メソッドは、日付文字列のフォーマットをカスタマイズするときに役立ちます。これは、ロケール特有の部分を保持しながら、カスタム文字列を構築できるロケール特有のトークンを含むオブジェクトの {{jsxref("Array")}} を返します。<code>formatToParts()</code> メソッドが返却する構造は、このようになります。</p>
+
+<pre class="brush: js notranslate">[
+ { type: 'day', value: '17' },
+ { type: 'weekday', value: 'Monday' }
+]</pre>
+
+<p>渡される可能性がある type は以下のとおりです。</p>
+
+<dl>
+ <dt>day</dt>
+ <dd>日付として使用される文字列。たとえば、 "<code>17</code>"。</dd>
+ <dt>dayPeriod</dt>
+ <dd>日付期間として使用される文字列。たとえば、 "<code>AM</code>", "<code>PM</code>", "<code>in the morning</code>", "<code>noon</code>" など。</dd>
+ <dt>era</dt>
+ <dd>時代として使用される文字列。たとえば、"<code>BC</code>" や "<code>AD</code>"。</dd>
+ <dt>fractionalSecond</dt>
+ <dd>小数点以下の秒として使用される文字列です。例えば "<code>0</code>" や "<code>00</code>" や "<code>000</code>" です。</dd>
+ <dt>hour</dt>
+ <dd>時刻として使用される文字列。たとえば "<code>3</code>" や "<code>03</code>"。</dd>
+ <dt>literal</dt>
+ <dd>日付や時刻の区切りとして使用される文字列。たとえば "<code>/</code>"、"<code>,</code>"、"<code>o'clock</code>"、"<code>de</code>"。</dd>
+ <dt>minute</dt>
+ <dd>分として使用される文字列。たとえば、"<code>00</code>"。</dd>
+ <dt>month</dt>
+ <dd>月として使用される文字列。たとえば、"<code>12</code>"。</dd>
+ <dt>relatedYear</dt>
+ <dd>カレンダーの表現が year ではなくyearNameである場合、関連する4桁のグレゴリオ暦の年に使用される文字列です。例えば "<code>2019</code>" です。</dd>
+ <dt>second</dt>
+ <dd>秒として使用される文字列。たとえば、"<code>07</code>" や "<code>42</code>"。</dd>
+ <dt>timeZoneName</dt>
+ <dd>タイムゾーン名として使用される文字列。たとえば、"<code>UTC</code>"。</dd>
+ <dt>weekday</dt>
+ <dd>曜日として使用される文字列。たとえば、"<code>M</code>" や "<code>Monday</code>"、"<code>Montag</code>"。</dd>
+ <dt>year</dt>
+ <dd>年として使用される文字列。たとえば、"<code>2012</code>" や "<code>96</code>"。</dd>
+ <dt>yearName</dt>
+ <dd>関連するコンテキストで yearName に使用される文字列、例えば "<code>geng-zi</code>" など。</dd>
+</dl>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>この機能のポリフィルは、<a href="https://github.com/zbraniecki/proposal-intl-formatToParts">提案リポジトリ</a>から利用できます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p><code>DateTimeFormat</code> は、直接操作できないローカライズされた透過的でない文字列を出力します。</p>
+
+<pre class="brush: js notranslate">var date = Date.UTC(2012, 11, 17, 3, 0, 42);
+
+var formatter = new Intl.DateTimeFormat('en-us', {
+ weekday: 'long',
+ year: 'numeric',
+ month: 'numeric',
+ day: 'numeric',
+ hour: 'numeric',
+ minute: 'numeric',
+ second: 'numeric',
+ fractionalSecondDigits: 3,
+ hour12: true,
+ timeZone: 'UTC'
+});
+
+formatter.format(date);
+// "Monday, 12/17/2012, 3:00:42.000 AM"
+</pre>
+
+<p>しかし、多くのユーザーインターフェイスでは、この文字列の書式をカスタマイズしたいという要望があります。 <code>formatToParts</code> メソッドは、文字列を部品単位で提供することで、 <code>DateTimeFormat</code> フォーマッターによって生成された文字列のロケールを意識した書式設定ができるようになります。</p>
+
+<pre class="brush: js notranslate">formatter.formatToParts(date);
+
+// return value:
+[
+ { type: 'weekday', value: 'Monday' },
+ { type: 'literal', value: ', ' },
+ { type: 'month', value: '12' },
+ { type: 'literal', value: '/' },
+ { type: 'day', value: '17' },
+ { type: 'literal', value: '/' },
+ { type: 'year', value: '2012' },
+ { type: 'literal', value: ', ' },
+ { type: 'hour', value: '3' },
+ { type: 'literal', value: ':' },
+ { type: 'minute', value: '00' },
+ { type: 'literal', value: ':' },
+ { type: 'second', value: '42' },
+ { type: 'fractionalSecond', value: '000' },
+ { type: 'literal', value: ' ' },
+ { type: 'dayPeriod', value: 'AM' }
+]
+</pre>
+
+<p>これで情報は個別に利用可能になり、カスタマイズされた方法で再び書式化して連結することができます。例えば、{{jsxref("Array.prototype.map()")}}、<a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a>、 <a href="/ja/docs/Web/JavaScript/Reference/Statements/switch">switch 文</a>、<a href="/ja/docs/Web/JavaScript/Reference/Template_literals">テンプレートリテラル</a>、 {{jsxref("Array.prototype.reduce()")}} などを使用しています。</p>
+
+<pre class="brush: js notranslate">var dateString = formatter.formatToParts(date).map(({type, value}) =&gt; {
+ switch (type) {
+ case 'dayPeriod': return `&lt;b&gt;${value}&lt;/b&gt;`;
+ default : return value;
+ }
+}).reduce((string, part) =&gt; string + part);
+</pre>
+
+<p>これにより、 <code>formatToParts()</code> メソッドを使用する際に、日の部分が太字になります。</p>
+
+<pre class="brush: js notranslate">console.log(formatter.format(date));
+// "Monday, 12/17/2012, 3:00:42.000 AM"
+
+console.log(dateString);
+// "Monday, 12/17/2012, 3:00:42.000 &lt;b&gt;AM&lt;/b&gt;"</pre>
+
+<h3 id="Named_Years_and_Mixed_calendars" name="Named_Years_and_Mixed_calendars">名前付きの年と混合カレンダー</h3>
+
+<p>いくつかのケースでは、暦は名前付きの年を使用しています。 例えば、中国やチベットの暦では、60年周期の<a href="https://ja.wikipedia.org/wiki/%E5%B9%B2%E6%94%AF">干支</a>を使用しています。これらの年は、グレゴリオ暦の年と関連付けて識別されます。このような場合、 <code>formatToParts()</code> の結果は、通常は年が存在するはずなのに、年の項目ではなく、4桁のグレゴリオ暦の年を含む relatedYear のエントリを含むことになります。バッグの中の項目を (任意の値で) <code>year</code> に設定すると、年と <code>yearName</code> グレゴリオ暦の <code>relatedYear</code> の両方が得られます。</p>
+
+<pre class="brush: js notranslate">let opts = { year: "numeric", month: "numeric", day: "numeric" };
+let df = new Intl.DateTimeFormat("zh-u-ca-chinese", opts);
+df.formatToParts(Date.UTC(2012, 11, 17, 3, 0, 42));
+
+// return value
+[
+ { type: 'relatedYear', value: '2012' },
+ { type: 'literal', value: '年' },
+ { type: 'month', value: '十一月' },
+ { type: 'day', value: '4' }
+]
+</pre>
+
+<p><code>year</code> オプションがバッグ内で設定されていない場合 (任意の値に設定されている場合)、結果には <code>relatedYear</code> のみが含まれます。</p>
+
+<pre class="brush: js notranslate">let df = new Intl.DateTimeFormat("zh-u-ca-chinese");
+df.formatToParts(Date.UTC(2012, 11, 17, 3, 0, 42));
+
+// 返値
+[
+ { type: 'relatedYear', value: '2012' },
+ { type: 'literal', value: '年' },
+ { type: 'month', value: '十一月' },
+ { type: 'day', value: '4' }
+]
+</pre>
+
+<p><code>year</code> を出力したい場合は、 <code>.format()</code> は一般的にこれらを並べて表示することができます。</p>
+
+<pre class="brush: js notranslate">let df = new Intl.DateTimeFormat("zh-u-ca-chinese", {year: "numeric"});
+df.format(Date.UTC(2012, 11, 17, 3, 0, 42));
+
+// 返値
+2012壬辰年</pre>
+
+<p>これにより、ロケールとカレンダーを両方の <code>format</code> で混在させることも可能になります。</p>
+
+<pre class="brush: js notranslate">let df = new Intl.DateTimeFormat("en-u-ca-chinese", {year: "numeric"});
+let date = Date.UTC(2012, 11, 17, 3, 0, 42);
+df.format(date);
+
+// 返値
+2012(ren-chen)
+</pre>
+
+<p>および <code>formatToParts</code> の場合</p>
+
+<pre class="brush: js notranslate">let opts = {month: 'numeric', day: 'numeric', year: "numeric"};
+let df = new Intl.DateTimeFormat("en-u-ca-chinese", opts);
+let date = Date.UTC(2012, 11, 17, 3);
+df.formatToParts(date)
+
+// 返値
+[
+ { type: 'month', value: '11' },
+ { type: 'literal', value: '/' },
+ { type: 'day', value: '4' },
+ { type: 'literal', value: '/' },
+ { type: 'relatedYear', value: '2012' }
+]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.DateTimeFormat.prototype.formatToParts', 'Intl.DateTimeFormat.prototype.formatToParts')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.DateTimeFormat.formatToParts")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+ <li>{{jsxref("DateTimeFormat.format", "Intl.DateTimeFormat.prototype.format")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/index.html b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/index.html
new file mode 100644
index 0000000000..0c9a663a52
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/index.html
@@ -0,0 +1,195 @@
+---
+title: Intl.DateTimeFormat
+slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat
+tags:
+ - Class
+ - DateTimeFormat
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.DateTimeFormat</code></strong> オブジェクトは、言語に応じた日付と時刻の書式化を可能にするオブジェクトのためのコンストラクターです。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-datetimeformat.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/DateTimeFormat/DateTimeFormat", "Intl.DateTimeFormat()")}}</dt>
+ <dd>新しい <code>DateTimeFormat</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("DateTimeFormat.supportedLocalesOf", "Intl.DateTimeFormat.supportedLocalesOf()")}}</dt>
+ <dd>指定されたロケールのうち、実行時の既定のロケールにフォールバックせずに対応されるものを配列に収めて返します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("DateTimeFormat.format", "Intl.DateTimeFormat.prototype.format()")}}</dt>
+ <dd>ロケールおよびこの {{jsxref("DateTimeFormat", "DateTimeFormat")}} オブジェクトの書式化オプションに則って日付を書式化するゲッター関数です。</dd>
+ <dt>{{jsxref("DateTimeFormat.formatToParts", "Intl.DateTimeFormat.prototype.formatToParts()")}}</dt>
+ <dd>オブジェクトの {{jsxref("Array")}} を返し、これは専用のロケールを意識した書式で使用することができる部品内の数値文字列を表します。</dd>
+ <dt>{{jsxref("DateTimeFormat.resolvedOptions", "Intl.DateTimeFormat.prototype.resolvedOptions()")}}</dt>
+ <dd>ローケルを反映しているプロパティとオブジェクトの初期化中に計算された照合オプションをもった新しいオブジェクトを返します。</dd>
+ <dt>{{jsxref("DateTimeFormat.formatRange", "Intl.DateTimeFormat.prototype.formatRange()")}}</dt>
+ <dd>このメソッドは2つの <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/">Date</a> を受け取り、 {{jsxref("DateTimeFormat", "DateTimeFormat")}} インスタンスを生成する際に指定されたロケールとオプションに基づいて、最も簡潔な方法で日付の範囲を書式化します。</dd>
+ <dt>{{jsxref("DateTimeFormat.formatRangeToParts", "Intl.DateTimeFormat.prototype.formatRangeToParts()")}}</dt>
+ <dd>このメソッドは2つの <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/">Date</a> を受け取り、書式化された日付の範囲の各部分を表すロケール固有のトークンを含むオブジェクトの配列を返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_DateTimeFormat" name="Using_DateTimeFormat">DateTimeFormat の使用</h3>
+
+<p>基本的に、ロケールを指定せずに使用すると、 <code>DateTimeFormat</code> は既定のロケールとオプションを使用します。</p>
+
+<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// toLocaleString without arguments depends on the implementation,
+// the default locale, and the default time zone
+console.log(new Intl.DateTimeFormat().format(date));
+// → "12/19/2012" if run with en-US locale (language) and time zone America/Los_Angeles (UTC-0800)
+</pre>
+
+<h3 id="Using_locales" name="Using_locales">locales の使用</h3>
+
+<p>この例では、ローカライズされた日付と時刻の形式のバリエーションの一部示しています。アプリケーションのユーザーインターフェイスで使用される言語のフォーマットを取得するには、 <code>locales</code> 引数を使用して、その言語 (およびおそらくいくつかのフォールバック言語) を指定してください。</p>
+
+<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Results below use the time zone of America/Los_Angeles (UTC-0800, Pacific Standard Time)
+
+// US English uses month-day-year order
+console.log(new Intl.DateTimeFormat('en-US').format(date));
+// → "12/19/2012"
+
+// British English uses day-month-year order
+console.log(new Intl.DateTimeFormat('en-GB').format(date));
+// → "19/12/2012"
+
+// Korean uses year-month-day order
+console.log(new Intl.DateTimeFormat('ko-KR').format(date));
+// → "2012. 12. 19."
+
+// Arabic in most Arabic speaking countries uses real Arabic digits
+console.log(new Intl.DateTimeFormat('ar-EG').format(date));
+// → "١٩<span dir="rtl">‏/١٢‏/٢٠١٢</span>"
+
+// for Japanese, applications may want to use the Japanese calendar,
+// where 2012 was the year 24 of the Heisei era
+console.log(new Intl.DateTimeFormat('ja-JP-u-ca-japanese').format(date));
+// → "24/12/19"
+
+// when requesting a language that may not be supported, such as
+// Balinese, include a fallback language, in this case Indonesian
+console.log(new Intl.DateTimeFormat(['ban', 'id']).format(date));
+// → "19/12/2012"
+</pre>
+
+<h3 id="Using_options" name="Using_options">options の使用</h3>
+
+<p>日付と時刻の書式は <code>options</code> 引数を使用してカスタマイズできます。</p>
+
+<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0, 200));
+
+// request a weekday along with a long date
+var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+console.log(new Intl.DateTimeFormat('de-DE', options).format(date));
+// → "Donnerstag, 20. Dezember 2012"
+
+// an application may want to use UTC and make that visible
+options.timeZone = 'UTC';
+options.timeZoneName = 'short';
+console.log(new Intl.DateTimeFormat('en-US', options).format(date));
+// → "Thursday, December 20, 2012, GMT"
+
+// sometimes you want to be more precise
+options = {
+ hour: 'numeric', minute: 'numeric', second: 'numeric',
+ timeZone: 'Australia/Sydney',
+ timeZoneName: 'short'
+};
+console.log(new Intl.DateTimeFormat('en-AU', options).format(date));
+// → "2:00:00 pm AEDT"
+
+// sometimes you want to be very precise
+options.fractionalSecondDigits = 3;
+console.log(new Intl.DateTimeFormat('en-AU', options).format(date));
+// → "2:00:00.200 pm AEDT"
+
+
+// sometimes even the US needs 24-hour time
+options = {
+ year: 'numeric', month: 'numeric', day: 'numeric',
+ hour: 'numeric', minute: 'numeric', second: 'numeric',
+ hour12: false,
+ timeZone: 'America/Los_Angeles'
+};
+console.log(new Intl.DateTimeFormat('en-US', options).format(date));
+// → "12/19/2012, 19:00:00"
+
+
+// to specify options but use the browser's default locale, use 'default'
+console.log(new Intl.DateTimeFormat('default', options).format(date));
+// → "12/19/2012, 19:00:00"
+
+// sometimes it's helpful to include the period of the day
+options = {hour: "numeric", dayPeriod: "short"};
+console.log(new Intl.DateTimeFormat('en-US', options).format(date));
+// → 10 at night
+</pre>
+
+<p>The used calendar and numbering formats can also be set independently via <code>options</code> arguments:</p>
+
+<pre class="brush: js notranslate">var options = {calendar: 'chinese', numberingSystem: 'arab'};
+var dateFormat = new Intl.DateTimeFormat('default', options);
+var usedOptions = dateFormat.resolvedOptions();
+
+console.log(usedOptions.calendar);
+// → "chinese"
+
+console.log(usedOptions.numberingSystem);
+// → "arab"
+
+console.log(usedOptions.timeZone);
+// → "America/New_York" (the users default timezone)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#datetimeformat-objects', 'Intl.DateTimeFormat')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.DateTimeFormat")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Global_Objects/Intl", "Intl")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/prototype/index.html b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/prototype/index.html
new file mode 100644
index 0000000000..bf782a0664
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/prototype/index.html
@@ -0,0 +1,87 @@
+---
+title: Intl.DateTimeFormat.prototype
+slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype
+tags:
+ - DateTimeFormat
+ - Internationalization
+ - JavaScript
+ - Property
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.DateTimeFormat.prototype</code></strong> プロパティは、 {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} コンストラクターに対するプロトタイプオブジェクトを表します。</p>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Intl.DateTimeFormat</code> インスタンスの解説については {{jsxref("DateTimeFormat")}} を確認して下さい。</p>
+
+<p>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} インスタンスは <code>Intl.DateTimeFormat.prototype</code> から継承します。プロトタイプオブジェクトへの変更はすべての {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} インスタンスによって継承されます。</p>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt><code>Intl.DateTimeFormat.prototype.constructor</code></dt>
+ <dd>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} への参照です。</dd>
+</dl>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("DateTimeFormat.format", "Intl.DateTimeFormat.prototype.format()")}}</dt>
+ <dd>ロケールおよびこの {{jsxref("DateTimeFormat", "DateTimeFormat")}} オブジェクトの書式化オプションに則って日付を書式化するゲッター関数です。</dd>
+ <dt>{{jsxref("DateTimeFormat.formatToParts", "Intl.DateTimeFormat.prototype.formatToParts()")}}</dt>
+ <dd>Returns an {{jsxref("Array")}} of objects representing the date string in parts that can be used for custom locale-aware formatting.</dd>
+ <dt>{{jsxref("DateTimeFormat.resolvedOptions", "Intl.DateTimeFormat.prototype.resolvedOptions()")}}</dt>
+ <dd>ローケルを反映しているプロパティとオブジェクトの初期化中に計算されたオプションをもった新しいオブジェクトを返します。</dd>
+ <dt>{{jsxref("DateTimeFormat.formatRange", "Intl.DateTimeFormat.prototype.formatRange()")}}</dt>
+ <dd>This method receives two <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/">Dates</a> and formats the date range in the most concise way based on the locale and options provided when instantiating {{jsxref("DateTimeFormat", "DateTimeFormat")}}.</dd>
+ <dt>{{jsxref("DateTimeFormat.formatRangeToParts", "Intl.DateTimeFormat.prototype.formatRangeToParts()")}}</dt>
+ <dd>This method receives two <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/">Dates</a> and returns an Array of objects containing the locale-specific tokens representing each part of the formatted date range.</dd>
+</dl>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状態</th>
+ <th scope="col">備考</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.DateTimeFormat.prototype', 'Intl.DateTimeFormat.prototype')}}</td>
+ <td>{{Spec2('ES Int Draft')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int 2.0', '#sec-12.2.1', 'Intl.DateTimeFormat.prototype')}}</td>
+ <td>{{Spec2('ES Int 2.0')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int 1.0', '#sec-12.2.1', 'Intl.DateTimeFormat.prototype')}}</td>
+ <td>{{Spec2('ES Int 1.0')}}</td>
+ <td>初回定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.DateTimeFormat.prototype")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.html b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.html
new file mode 100644
index 0000000000..4e28ab0347
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.html
@@ -0,0 +1,95 @@
+---
+title: Intl.DateTimeFormat.prototype.resolvedOptions()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions
+tags:
+ - DateTimeFormat
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.Collator.prototype.resolvedOptions()</code></strong> メソッドは、この {{jsxref("Collator")}} オブジェクトの初期化時に計算されたロケールと照合オプションを反映したプロパティを持つ新しいオブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-datetimeformat-prototype-resolvedoptions.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>dateTimeFormat</var>.resolvedOptions()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>この {{jsxref("DateTimeFormat")}} オブジェクトの初期化時に計算されたロケールと照合オプションを反映したプロパティを持つ新しいオブジェクトです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>返されるオブジェクトには以下のプロパティがあります。</p>
+
+<dl>
+ <dt><code>locale</code></dt>
+ <dd>実際に使用したロケールの BCP 47 言語タグ。このロケールにつながる入力 BCP 47 言語タグに Unicode 拡張値が要求された場合、要求されたキーと値のペアのうち、このロケールで対応しているものが <code>locale</code> に含まれます。</dd>
+ <dt><code>calendar</code></dt>
+ <dd>例: "gregory"</dd>
+ <dt><code>numberingSystem</code></dt>
+ <dd>Unicode 拡張キーの <code>"ca"</code> および <code>"nu"</code> で要求された値、または既定値が入ります。</dd>
+ <dt><code>timeZone</code></dt>
+ <dd><code>options</code> 引数の同名のプロパティで要求された値です。提供された値がなければ {{jsxref("undefined")}} (ランタイムの既定のタイムゾーン) です。警告: アプリケーションは {{jsxref("undefined")}} が返されることに依存しないでください。将来のバージョンではランタイムの既定のタイムゾーンを識別する {{jsxref("String")}} 値が返されるようになる可能性があるからです。</dd>
+ <dt><code>hour12</code></dt>
+ <dd><code>options</code> 引数の同名のプロパティで要求された値、または既定値が入ります。</dd>
+ <dt><code>weekday</code></dt>
+ <dt><code>era</code></dt>
+ <dt><code>year</code></dt>
+ <dt><code>month</code></dt>
+ <dt><code>day</code></dt>
+ <dt><code>hour</code></dt>
+ <dt><code>minute</code></dt>
+ <dt><code>second</code></dt>
+ <dt><code>timeZoneName</code></dt>
+ <dd><code>options</code> 引数の対応するプロパティと、選択したロケールでの日付時刻の書式設定に利用可能な組み合わせや表現との間で、書式のマッチングを行った結果の値。これらのプロパティの中には、対応するコンポーネントが書式化された出力では表現されないものもあります。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_resolvedOptions_method" name="Using_the_resolvedOptions_method">resolvedOptions メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var germanFakeRegion = new Intl.DateTimeFormat('de-XX', { timeZone: 'UTC' });
+var usedOptions = germanFakeRegion.resolvedOptions();
+
+usedOptions.locale; // "de"
+usedOptions.calendar; // "gregory"
+usedOptions.numberingSystem; // "latn"
+usedOptions.timeZone; // "UTC"
+usedOptions.month; // "numeric"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl.datetimeformat.prototype.resolvedoptions', 'Intl.DateTimeFormat.prototype.resolvedOptions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.DateTimeFormat.resolvedOptions")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.html b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.html
new file mode 100644
index 0000000000..0be4ec7300
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.html
@@ -0,0 +1,128 @@
+---
+title: Intl.DateTimeFormat.supportedLocalesOf()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/supportedLocalesOf
+tags:
+ - DateTimeFormat
+ - Internationalization
+ - JavaScript
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/supportedLocalesOf
+---
+<div>{{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}</div>
+
+<h2 id="概要">概要</h2>
+
+<p>ランタイムのデフォルトローケルに戻る必要なしでフォーマットしている日時でサポートしている提供されているローケルを含んでいる配列を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code>Intl.DateTimeFormat.supportedLocalesOf(<var>locales</var>[, <var>options</var>])</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>locales</code></dt>
+ <dd>BCP47言語タグの文字列、そのような文字列の配列。 <code>locales</code>引数の一般的な形式に対して、{{jsxref("Global_Objects/Intl", "Intl page", "#Locale_identification_and_negotiation", 1)}}を確かめて下さい。</dd>
+ <dt><code>options</code></dt>
+ <dd>
+ <p>オプション。次のプロパティを持つオブジェクト:</p>
+
+ <dl>
+ <dt><code>localeMatcher</code></dt>
+ <dd>使っているローケルマッチングアルゴリズム。利用可能な値は<code>"lookup"</code>、<code>"best fit"</code>。デフォルトでは <code>"best fit"</code>。このオプションについての情報のために、{{jsxref("Global_Objects/Intl", "Intl page", "#Locale_negotiation", 1)}}を確かめて下さい。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="説明">説明</h2>
+
+<p><code>locales</code>で提供されている言語タグのサブセットを持つ配列を返します。返される言語タグは、ランタイムがローケルマッチングアルゴリズムを使って考慮してフォーマットしている日時でのローケルをサポートしていてるので、デフォルトローケルに戻る必要はありません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="例_supportedLocalesOfを使う">例: <code>supportedLocalesOf</code>を使う</h3>
+
+<p>日時のフォーマットで、バリ語ではなく、インドネシア語とドイツ語をサポートしているランタイムを仮定すると、<code>supportedLocalesOf</code>はインドネシア語とドイツ語の言語タグを返します。ピンインは日時のフォーマットには適切ではなくインドネシア語では使われません。インドネシアの特定のドイツ語はサポートされそうにもありません。 <code>"lookup"</code>アルゴリズムの指定に注意して下さい。<code>"best fit"</code>はインドネシア語はバリ語に対して、十分にふさわしいと決定するかもしれません。というのも、 ほとんどのバリの人はインドネシア語も理解するからです。それゆえバリ言語タグも同様に返します。</p>
+
+<pre class="brush: js">var locales = ['ban', 'id-u-co-pinyin', 'de-ID'];
+var options = { localeMatcher: 'lookup' };
+console.log(Intl.DateTimeFormat.supportedLocalesOf(locales, options).join(', '));
+// → "id-u-co-pinyin, de-ID"
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int 1.0', '#sec-12.2.2', 'Intl.DateTimeFormat.supportedLocalesOf')}}</td>
+ <td>{{Spec2('ES Int 1.0')}}</td>
+ <td>Initial definition.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{CompatibilityTable}}</div>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari (WebKit)</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatChrome("24")}}</td>
+ <td>{{CompatGeckoDesktop("29")}}</td>
+ <td>{{CompatIE("11")}}</td>
+ <td>{{CompatOpera("15")}}</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Android</th>
+ <th>Chrome for Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Phone</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatChrome("26")}}</td>
+ <td>{{CompatNo}}<br>
+ {{bug("864843")}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/displaynames/index.html b/files/ja/web/javascript/reference/global_objects/intl/displaynames/index.html
new file mode 100644
index 0000000000..2c29a952d4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/displaynames/index.html
@@ -0,0 +1,154 @@
+---
+title: Intl.DisplayNames
+slug: Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames
+tags:
+ - Class
+ - DisplayNames
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.DisplayNames</code></strong> オブジェクトは、言語、地域、文字体系の表示名の一貫した翻訳を可能にするオブジェクトのコンストラクターです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-displaynames.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/DisplayNames/DisplayNames", "Intl.DisplayNames()")}}</dt>
+ <dd><code>Intl.DisplayNames</code> オブジェクトを作成します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/DisplayNames/supportedLocalesOf", "Intl.DisplayNames.supportedLocalesOf()")}}</dt>
+ <dd>提供されたロケールのうち、ランタイムのデフォルトロケールにフォールバックすることなくサポートされているロケールを含む配列を返します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/DisplayNames/of", "Intl.DisplayNames.prototype.of()")}}</dt>
+ <dd>このメソッドは <code>code</code> を受け取り、<a href="#"><code>Intl.DisplayNames</code></a> をインスタンス化したときに指定したロケールとオプションに基づく文字列を返します。</dd>
+ <dt>{{jsxref("Intl/DisplayNames/resolvedOptions", "Intl.DisplayNames.prototype.resolvedOptions()")}}</dt>
+ <dd>オブジェクトの初期化時に計算されたロケールや書式設定のオプションを反映したプロパティを持つ新しいオブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Region_Code_Display_Names" name="Region_Code_Display_Names">国 (地域) の表示名</h3>
+
+<p>ロケールを指定した <code>Intl.DisplayNames</code> を作成し、国 (地域) コードの表示名を取得する方法です。</p>
+
+<pre class="brush: js notranslate">// 英語の地域名を表示
+let regionNames = new Intl.DisplayNames(['en'], {type: 'region'});
+regionNames.of('419'); // "Latin America"
+regionNames.of('BZ'); // "Belize"
+regionNames.of('US'); // "United States"
+regionNames.of('BA'); // "Bosnia &amp; Herzegovina"
+regionNames.of('MM'); // "Myanmar (Burma)"
+
+// 繁体字中国語での地域名を表示
+regionNames = new Intl.DisplayNames(['zh-Hant'], {type: 'region'});
+regionNames.of('419'; // "拉丁美洲"
+regionNames.of('BZ'); // "貝里斯"
+regionNames.of('US'); // "美國"
+regionNames.of('BA'); // "波士尼亞與赫塞哥維納"
+regionNames.of('MM'); // "緬甸"</pre>
+
+<h3 id="Language_Display_Names" name="Language_Display_Names">言語の表示名</h3>
+
+<p>ロケールを指定した <code>Intl.DisplayNames</code> を作成し、言語-文字体系-国 (地域) の一連の表示名を取得する方法です。</p>
+
+<pre class="brush: js notranslate">// 英語の言語名を表示
+let languageNames = new Intl.DisplayNames(['en'], {type: 'language'});
+languageNames.of('fr'); // "French"
+languageNames.of('de'); // "German"
+languageNames.of('fr-CA'); // "Canadian French"
+languageNames.of('zh-Hant'); // "Traditional Chinese"
+languageNames.of('en-US'); // "American English"
+languageNames.of('zh-TW'); // "Chinese (Taiwan)"]
+
+// 繁体字中国語での言語名を表示
+languageNames = new Intl.DisplayNames(['zh-Hant'], {type: 'language'});
+languageNames.of('fr'); // "法文"
+languageNames.of('zh'); // "中文"
+languageNames.of('de'); // "德文"</pre>
+
+<h3 id="Script_Code_Display_Names" name="Script_Code_Display_Names">文字体系コードの表示名称</h3>
+
+<p>ロケールを指定した <code>Intl.DisplayNames</code> を作成し、文字体系の表示名を取得する方法です。</p>
+
+<pre class="brush: js notranslate">// 英語の文字体系名を表示
+let scriptNames = new Intl.DisplayNames(['en'], {type: 'script'});
+// Get script names
+scriptNames.of('Latn'); // "Latin"
+scriptNames.of('Arab'); // "Arabic"
+scriptNames.of('Kana'); // "Katakana"
+
+// 繁体字中国語での文字体系名を表示
+scriptNames = new Intl.DisplayNames(['zh-Hant'], {type: 'script'});
+scriptNames.of('Latn'); // "拉丁文"
+scriptNames.of('Arab'); // "阿拉伯文"
+scriptNames.of('Kana'); // "片假名"</pre>
+
+<h3 id="Currency_Code_Display_Names" name="Currency_Code_Display_Names">通貨コードの表示名称</h3>
+
+<p>ロケールを指定した <code>Intl.DisplayNames</code> を作成し、通貨の表示名を取得する方法です。</p>
+
+<pre class="brush: js notranslate">// 英語の通貨名を表示
+let currencyNames = new Intl.DisplayNames(['en'], {type: 'currency'});
+// Get currency names
+currencyNames.of('USD'); // "US Dollar"
+currencyNames.of('EUR'); // "Euro"
+currencyNames.of('TWD'); // "New Taiwan Dollar"
+currencyNames.of('CNY'); // "Chinese Yuan"
+
+// 繁体字中国語の通貨名を表示
+currencyNames = new Intl.DisplayNames(['zh-Hant'], {type: 'currency'});
+currencyNames.of('USD'); // "美元"
+currencyNames.of('EUR'); // "歐元"
+currencyNames.of('TWD'); // "新台幣"
+currencyNames.of('CNY'); // "人民幣"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Intl.DisplayNames', '#intl-displaynames-objects', 'DisplayNames')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.DisplayNames")}}</p>
+</div>
+
+<h3 id="Implementation_Progress" name="Implementation_Progress">実装の進捗</h3>
+
+<p>以下の表は、クロスブラウザーの安定性に達していない、新しい機能に対する日次の実装ステータスを提供します。データは、JavaScript の標準テストスイート、Nightly ビルド、または各ブラウザーの最新の JavaScript エンジンを使用して、<a href="https://github.com/tc39/test262">Test262</a> 内で適切な機能テストを実行することにより生成されます。</p>
+
+<p>{{EmbedTest262ReportResultsTable("Intl.DisplayNames")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Intl")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/getcanonicallocales/index.html b/files/ja/web/javascript/reference/global_objects/intl/getcanonicallocales/index.html
new file mode 100644
index 0000000000..1d85e32e87
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/getcanonicallocales/index.html
@@ -0,0 +1,74 @@
+---
+title: Intl.getCanonicalLocales()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.getCanonicalLocales()</code></strong> メソッドは、正規のロケール名を含む配列を返します。重複は省略され、要素は構造的に有効な言語タグとして検証されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-getcanonicallocales.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Intl.getCanonicalLocales(locales)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>locales</code></dt>
+ <dd>標準ロケール名を取得するための {{jsxref("String")}} 値リスト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>正規のロケール名を含む配列です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getCanonicalLocales" name="Using_getCanonicalLocales">getCanonicalLocales の使用</h3>
+
+<pre class="brush: js notranslate">Intl.getCanonicalLocales('EN-US'); // ["en-US"]
+Intl.getCanonicalLocales(['EN-US', 'Fr']); // ["en-US", "fr"]
+
+Intl.getCanonicalLocales('EN_US');
+// RangeError:'EN_US' is not a structurally valid language tag
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl.getcanonicallocales', 'Intl.getCanonicalLocales')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.getCanonicalLocales")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}}</li>
+ <li>{{jsxref("DateTimeFormat.supportedLocalesOf", "Intl.DateTimeFormat.supportedLocalesOf()")}}</li>
+ <li>{{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/index.html b/files/ja/web/javascript/reference/global_objects/intl/index.html
new file mode 100644
index 0000000000..f6c08e0a31
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/index.html
@@ -0,0 +1,133 @@
+---
+title: Intl
+slug: Web/JavaScript/Reference/Global_Objects/Intl
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Namespace
+ - 名前空間
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl</code></strong> オブジェクトは、 ECMAScript の国際化 API の名前空間で、言語に依存した文字列の比較、数値フォーマット、日付フォーマットを提供します。 <strong><code>Intl</code></strong> オブジェクトは、いくつかのコンストラクターに加え、国際化コンストラクターや他の言語に関する関数に共通する機能へのアクセスを提供します。</p>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Collator", "Intl.Collator")}}</dt>
+ <dd>言語に依存した文字列の比較を可能にするオブジェクトである collator のためのコンストラクター。</dd>
+ <dt>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</dt>
+ <dd>言語に依存した日時の書式化を可能にするオブジェクトのためのコンストラクター。</dd>
+ <dt>{{jsxref("Global_Objects/ListFormat", "Intl.ListFormat")}}</dt>
+ <dd>言語に依存したリストの書式化を可能にするオブジェクトのためのコンストラクター。</dd>
+ <dt>{{jsxref("Global_Objects/Locale", "Intl.Locale")}}</dt>
+ <dd>Unicode ロケール識別子を表すオブジェクトのためのコンストラクター。</dd>
+ <dt>{{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}</dt>
+ <dd>言語に依存した数値フォーマットを可能にするオブジェクトのためのコンストラクター。</dd>
+ <dt>{{jsxref("Global_Objects/PluralRules", "Intl.PluralRules")}}</dt>
+ <dd>複数形を意識した書式化や複数形の言語規則を可能にするオブジェクトのためのコンストラクター。</dd>
+ <dt>{{jsxref("Global_Objects/RelativeTimeFormat", "Intl.RelativeTimeFormat")}}</dt>
+ <dd>言語を意識した相対時刻の書式化を可能にするオブジェクトのためのコンストラクター。</dd>
+</dl>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Intl.getCanonicalLocales()")}}</dt>
+ <dd>正規のロケール名を返すメソッド。</dd>
+</dl>
+
+<h2 id="Locale_identification_and_negotiation" name="Locale_identification_and_negotiation">ロケールの識別とネゴシエーション</h2>
+
+<p>国際化コンストラクターや他のコンストラクターの言語を意識したメソッド (<a href="#See_also">関連情報</a>に記載) は、ロケールを識別して実際に使用するものを決定するために共通のパターンを使用しています。これらはすべて、 <code>locales</code> と <code>options</code> の引数を受け取り、 <code>options.localeMatcher</code> プロパティで指定したアルゴリズムを使用して 要求されたロケールと対応しているロケールとのネゴシエーションを行います。</p>
+
+<h3 id="locales_argument" name="locales_argument">locales 引数</h3>
+
+<p><code>locales</code> 引数は、 <a href="http://tools.ietf.org/html/rfc5646">BCP 47 言語タグ</a>を保持している文字列か、そのような言語タグの配列でなければなりません。 <code>locales</code> 引数が与えられていなかったり、 undefined であったりした場合は、実行時の既定のロケールが使用されます。</p>
+
+<p>BCP 47 言語タグは、言語と、少なくとも主たる言語コードを含んでいます。ほとんどのよくある形式では、すべてハイフンで区切られたサブタグを、言語コード、文字体系コード、国または地域コードの順で含んでいます。タグは大文字小文字を区別しませんが、文字体系コードでは先頭が大文字で残りは小文字、国または地域コードでは大文字、その他はすべて小文字が推奨されています。</p>
+
+<p>例:</p>
+
+<ul>
+ <li><code>"hi"</code>: ヒンディー語 (主たる言語)。</li>
+ <li><code>"de-AT"</code>: オーストリアで使用されているドイツ語 (主たる言語と国コード)。</li>
+ <li><code>"zh-Hans-CN"</code>: 中国で使用されている簡体字で書かれる中国語 (主たる言語と文字体系と国コード)。</li>
+</ul>
+
+<p>言語、文字体系、国 (地域)、 (まれに使用される) 変化形を識別する BCP 47 言語タグのサブタグは <a href="http://www.iana.org/assignments/language-subtag-registry">IANA Language Subtag Registry</a> で調べられます。</p>
+
+<p>BCP 47 はまた、拡張を認めており、そのうちの一つ <code>"u"</code> (Unicode) 拡張は、 JavaScript の国際化機能にとって重要です。それは、{{jsxref("Collator")}}, {{jsxref("NumberFormat")}}, {{jsxref("DateTimeFormat")}} オブジェクトのロケール固有の動作のカスタマイズを要求するために使用することができます。</p>
+
+<ul>
+ <li><code>"de-DE-u-co-phonebk"</code>: ドイツ語のソート順の電話帳変化形を使用します。このソート順では、ウムラウト付きの母音を、 ä → ae, ö → oe, ü → ue のように、ウムラウトの付かない母音二文字に展開したものと見なした順で並べ替えします。</li>
+ <li><code>"th-TH-u-nu-thai"</code>: 数値書式で、タイの数字 (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) を使用します。</li>
+ <li><code>"ja-JP-u-ca-japanese"</code>: 日時書式で和暦を使用します。すなわち、2013年は平成25年として表現されます。</li>
+ <li><code>"en-GB-u-ca-islamic"</code>: イギリス英語でイスラム暦 (Hijri) を使用します。グレゴリオ暦で2017年10月14日は、 Hijri 暦で 24 Muharram, 1439 です。</li>
+</ul>
+
+<p>BCP 47 拡張タグは <a href="https://unicode.org/repos/cldr/trunk/common/bcp47/">Unicode CLDR Project</a> にあります。</p>
+
+<h3 id="Locale_negotiation" name="Locale_negotiation">ロケールネゴシエーション</h3>
+
+<p><code>locales</code> 引数は、すべての Unicode 拡張を除去した後、アプリケーションからの優先順位付き要求として解釈されます。ランタイムは、利用可能なローケルと比較し、利用可能なロケールのうち最適なものを選びます。マッチングアルゴリズムは二種類あります。 "<code>lookup</code>" マッチャーは、<a href="http://tools.ietf.org/html/rfc4647#section-3.4">BCP 47</a> で指定された Lookup アルゴリズムに従います。 "<code>best fit</code>" マッチャーでは、ランタイムが少なくとも、あるいは場合によっては、 Lookup アルゴリズムの結果よりもリクエストに適合したロケールを提供します。アプリケーションが <code>locales</code> 引数を提供しなかった場合や、リクエストに一致するロケールをランタイムが持っていなかった場合は、ランタイムの既定のロケールが使用されます。マッチャーは、 <code>options</code> 引数のプロパティを使って選択することができます (後述)。</p>
+
+<p>ネゴシエーションにより選択された言語タグが Unicode 拡張の部分文字列を持っているとき、その拡張はここで、構築されたオブジェクトや関数の振る舞いをカスタマイズするために使われます。それぞれのコンストラクターや関数は、 Unicode 拡張用のキーのごく一部分のみ対応しており、また、対応する値は、多くの場合言語タグに依存します。例えば、 "<code>co</code>" キー (コレクション)は、 {{jsxref("Collator")}} だけが対応しており、そのキーに対する "<code>phonebk</code>" の値はドイツ語だけが対応しています。</p>
+
+<h3 id="options_argument" name="options_argument">options 引数</h3>
+
+<p><code>options</code> 引数は、コンストラクターや関数ごとに異なるプロパティをもつオブジェクトである必要があります。 <code>options</code> 引数が与えられなかった場合、または、未定義の場合、すべてのプロパティに対して既定値が使用されます。</p>
+
+<p>言語を意識するすべてのコンストラクターや関数が対応しているプロパティが一つあります。 <code>localeMatcher</code> プロパティで、この値は "<code>lookup</code>" または "<code>best fit</code>" の文字列である必要があり、上記のとけーるマッチングアルゴリズムのうちから一つを選択します。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#intl-object', 'Intl')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>導入: <a href="https://norbertlindenberg.com/2012/12/ecmascript-internationalization-api/index.html">The ECMAScript Internationalization API</a></li>
+ <li>コンストラクター
+ <ul>
+ <li>{{jsxref("Collator", "Intl.Collator")}}</li>
+ <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+ <li>{{jsxref("ListFormat", "Intl.ListFormat")}}</li>
+ <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li>
+ <li>{{jsxref("PluralRules", "Intl.PluralRules")}}</li>
+ <li>{{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}}</li>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+ </ul>
+ </li>
+ <li>メソッド
+ <ul>
+ <li>{{jsxref("String.prototype.localeCompare()")}}</li>
+ <li>{{jsxref("Number.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li>
+ </ul>
+ </li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/listformat/index.html b/files/ja/web/javascript/reference/global_objects/intl/listformat/index.html
new file mode 100644
index 0000000000..08be4d24aa
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/listformat/index.html
@@ -0,0 +1,104 @@
+---
+title: Intl.ListFormat
+slug: Web/JavaScript/Reference/Global_Objects/Intl/ListFormat
+tags:
+ - Class
+ - Experimental
+ - Internationalization
+ - Intl
+ - JavaScript
+ - ListFormat
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/ListFormat
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.ListFormat</code></strong> オブジェクトは、言語特有のリストを利用可能にするコンストラクターです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-listformat.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/ListFormat/ListFormat", "Intl.ListFormat()")}}</dt>
+ <dd>新しい <code>ListFormat</code> オブジェクトを作成します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("ListFormat.supportedLocalesOf", "Intl.ListFormat.supportedLocalesOf()")}}</dt>
+ <dd>指定したロケールのうち、ランタイムの既定のロケールに代替されることなく対応しているものを含む配列を返します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("ListFormat.prototype.format", "Intl.ListFormat.prototype.format()")}}</dt>
+ <dd>言語固有の形式の文字列を返して,列挙要素を表示します。</dd>
+ <dt>{{jsxref("ListFormat.prototype.formatToParts", "Intl.ListFormat.prototype.formatToParts()")}}</dt>
+ <dd>ロケールを考慮した方法で値のリストを整形するために使用できる、さまざまな部分を表すオブジェクトの配列を返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="format_の使用">format の使用</h3>
+
+<p>次の例では、英語を使用するリストのフォーマッターを生成する方法を示します。</p>
+
+<pre class="brush: js notranslate">const list = ['Motorcycle', 'Bus', 'Car'];
+
+ console.log(new Intl.ListFormat('en-GB', { style: 'long', type: 'conjunction' }).format(list));
+// &gt; Motorcycle, Bus and Car
+
+ console.log(new Intl.ListFormat('en-GB', { style: 'short', type: 'disjunction' }).format(list));
+// &gt; Motorcycle, Bus or Car
+
+ console.log(new Intl.ListFormat('en-GB', { style: 'narrow', type: 'unit' }).format(list));
+// &gt; Motorcycle Bus Car
+</pre>
+
+<h3 id="Using_formatToParts" name="Using_formatToParts">formatToParts の使用</h3>
+
+<p>次の例では、整形済みの部分を返すリストフォーマッターを生成する方法を示します。</p>
+
+<pre class="brush: js notranslate">const list = ['Motorcycle', 'Bus', 'Car'];
+console.log(new Intl.ListFormat('en-GB', { style: 'long', type: 'conjunction' }).formatToParts(list));
+
+// [ { "type": "element", "value": "Motorcycle" },
+// { "type": "literal", "value": ", " },
+// { "type": "element", "value": "Bus" },
+// { "type": "literal", "value": ", and " },
+// { "type": "element", "value": "Car" } ];
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Intl.ListFormat', '#listformat-objects', 'ListFormat')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.ListFormat")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Intl")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/basename/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/basename/index.html
new file mode 100644
index 0000000000..5157d8c0bd
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/basename/index.html
@@ -0,0 +1,75 @@
+---
+title: Intl.Locale.prototype.baseName
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/baseName
+tags:
+ - Internationalization
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - プロパティ
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/baseName
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.Locale.prototype.baseName</code></strong> プロパティは、 <code>Locale</code> の文字列表現の部分文字列を返し、そこには <code>Locale</code> についての中核情報が含まれています。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Locale", "Intl.Locale")}} オブジェクトは、解析されたロケールとそのロケールのオプションを表します。 <code>baseName</code> プロパティは、ロケールに関する基本的な情報を、完全なデータ文字列の部分文字列の形で返します。具体的には、このプロパティは言語を含む部分文字列を返し、文字体系や地域があればそれも返します。</p>
+
+<p><code>baseName</code> は <code>言語 ["-" 文字体系] ["-" 地域] *("-" variant)</code> の形で <a href="https://www.unicode.org/reports/tr35/#Identifiers">unicode_language_id grammar</a> の部分文字列を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_Example" name="Basic_Example">基本的な例</h3>
+
+<pre class="brush: js">let myLoc = new Intl.Locale("fr-Latn-CA"); // ロケールをカナダのフランス語に設定
+console.log(myLoc.toString()); // "fr-Latn-CA-u-ca-gregory" と表示
+console.log(myLoc.baseName); // "fr-Latn-CA" と表示</pre>
+
+<h3 id="入力文字列のオプション付きの例">入力文字列のオプション付きの例</h3>
+
+<pre class="brush: js">// 言語を日本語、地域を日本に設定する。
+
+// カレンダーをグレゴリオ暦、時制を24時制にする
+let japan = new Intl.Locale("ja-JP-u-ca-gregory-hc-24");
+console.log(japan.toString()); // "ja-JP-u-ca-gregory-hc-h24" と表示
+console.log(japan.baseName); // "ja-JP" と表示</pre>
+
+<h3 id="入力文字列を上書きするオプション付きの例">入力文字列を上書きするオプション付きの例</h3>
+
+<pre class="brush: js">// 入力文字列は言語がオランダ語、地域がベルギーであることを示していますが、
+
+// ただし、オプションオブジェクトで地域を上書きしており、オランダに設定しています
+let dutch = new Intl.Locale("nl-Latn-BE", {region: "NL"});
+
+console.log(dutch.baseName); // "nl-Latn-NL" と表示</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.baseName')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<div>{{Compat("javascript.builtins.Intl.Locale.baseName")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/calendar/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/calendar/index.html
new file mode 100644
index 0000000000..4df268ee41
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/calendar/index.html
@@ -0,0 +1,159 @@
+---
+title: Intl.Locale.prototype.calendar
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/calendar
+tags:
+ - Internationalization
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - プロパティ
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/calendar
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.Locale.prototype.calendar</code></strong> プロパティは、 <code>Locale</code> で使用される暦の種類を返すアクセサープロパティです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>calendar</code> プロパティは <code>Locale</code> の一部、 <code>Locale</code> の暦を示す部分を返します。世界の大部分はグレゴリオ暦を使用していますが、世界各地で使用されている地域暦もいくつかあります。以下の表に、有効な Unicode 暦キー文字列をすべて示します。</p>
+
+<h3 id="Unicode_calendar_keys" name="Unicode_calendar_keys">Unicode 暦キー</h3>
+
+<table class="standard-table">
+ <caption>Unicode 暦キー</caption>
+ <thead>
+ <tr>
+ <th scope="col">Calendar key (name)</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>buddhist</code></td>
+ <td>タイの仏教暦</td>
+ </tr>
+ <tr>
+ <td><code>chinese</code></td>
+ <td>古来の中国の暦</td>
+ </tr>
+ <tr>
+ <td><code>coptic</code></td>
+ <td>コプト暦</td>
+ </tr>
+ <tr>
+ <td><code>dangi</code></td>
+ <td>古来の韓国の暦</td>
+ </tr>
+ <tr>
+ <td><code>ethioaa</code></td>
+ <td>Ethiopic calendar, Amete Alem (epoch approx. 5493 B.C.E)</td>
+ </tr>
+ <tr>
+ <td><code>ethiopic</code></td>
+ <td>Ethiopic calendar, Amete Mihret (epoch approx, 8 C.E.)</td>
+ </tr>
+ <tr>
+ <td><code>gregory</code></td>
+ <td>グレゴリオ暦</td>
+ </tr>
+ <tr>
+ <td><code>hebrew</code></td>
+ <td>古来のヘブライ暦</td>
+ </tr>
+ <tr>
+ <td><code>indian</code></td>
+ <td>インド暦</td>
+ </tr>
+ <tr>
+ <td><code>islamic</code></td>
+ <td>イスラム暦</td>
+ </tr>
+ <tr>
+ <td><code>islamic-umalqura</code></td>
+ <td>Islamic calendar, Umm al-Qura</td>
+ </tr>
+ <tr>
+ <td><code>islamic-tbla</code></td>
+ <td>Islamic calendar, tabular (intercalary years [2,5,7,10,13,16,18,21,24,26,29] - astronomical epoch)</td>
+ </tr>
+ <tr>
+ <td><code>islamic-civil</code></td>
+ <td>Islamic calendar, tabular (intercalary years [2,5,7,10,13,16,18,21,24,26,29] - civil epoch)</td>
+ </tr>
+ <tr>
+ <td><code>islamic-rgsa</code></td>
+ <td>Islamic calendar, Saudi Arabia sighting</td>
+ </tr>
+ <tr>
+ <td><code>iso8601</code></td>
+ <td>ISO カレンダー (ISO 8601 カレンダーの曜日規則を使用したグレゴリオ暦)</td>
+ </tr>
+ <tr>
+ <td><code>japanese</code></td>
+ <td>日本の皇紀</td>
+ </tr>
+ <tr>
+ <td><code>persian</code></td>
+ <td>ペルシャ暦</td>
+ </tr>
+ <tr>
+ <td><code>roc</code></td>
+ <td>中華民国暦</td>
+ </tr>
+ <tr>
+ <td>
+ <div class="blockIndicator warning"><code>islamicc</code> 暦は非推奨です。 <code>islamic-civil</code> を使用してください。</div>
+
+ <p><code>islamicc</code></p>
+ </td>
+ <td>Civil (algorithmic) Arabic calendar</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Adding_a_calendar_in_the_Locale_string" name="Adding_a_calendar_in_the_Locale_string">ロケール文字列へのカレンダーの追加</h3>
+
+<p>暦は、ロケールキーの「拡張キー」に該当します。これらのキーは、ロケールに関するデータを追加するもので、拡張子 <code>-u</code> を使用してロケール識別子に追加します。したがって、 {{jsxref("Locale/Locale", "Intl.Locale")}} コンストラクターに渡される初期のロケール識別子文字列に暦の種類を追加することができます。暦の種類を追加するには、まず文字列に <code>-u</code> 拡張を追加します。次に、暦の種類を追加することを示すために <code>-ca</code> 拡張を追加します。最後に、暦を文字列に追加します。</p>
+
+<pre class="brush: js">let frBuddhist = new Intl.Locale("fr-FR-u-ca-buddhist");
+console.log(frBuddhist.calendar); // "buddhist" と表示</pre>
+
+<h3 id="Adding_a_calendar_with_a_configuration_object" name="Adding_a_calendar_with_a_configuration_object">構成オブジェクトによる暦の追加</h3>
+
+<p>{{jsxref("Locale/Locale", "Intl.Locale")}} コンストラクターには、オプションで構成オブジェクトの引数があり、カレンダーを含めた拡張の種類を渡すために使用することができます。構成オブジェクトの <code>calendar</code> プロパティを望みの暦の値に設定し、コンストラクターに渡します。</p>
+
+<pre class="brush: js">let frBuddhist = new Intl.Locale("fr-FR", {calendar: "buddhist"});
+console.log(frBuddhist.calendar); // "buddhist" と表示
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.calendar')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<div>{{Compat("javascript.builtins.Intl.Locale.calendar")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+ <li><a href="https://www.unicode.org/reports/tr35/#UnicodeCalendarIdentifier">Unicode 暦識別子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/casefirst/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/casefirst/index.html
new file mode 100644
index 0000000000..6f337ab869
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/casefirst/index.html
@@ -0,0 +1,92 @@
+---
+title: Intl.Locale.prototype.caseFirst
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/caseFirst
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - プロパティ
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/caseFirst
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale.prototype.caseFirst</code></strong> プロパティは、ロケールの照合規則に大文字・小文字を考慮するかどうかを返すアクセサプロパティです。</span></p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>ロケールの照合規則は、そのロケールでの文字列の並び順を決定するために用いられます。ロケールによっては、照合処理で文字の大文字・小文字を使用する場合があります。この追加ルールは、 {{jsxref("Locale", "Locale")}} の <code>caseFirst</code> プロパティで表現することができます。</p>
+
+<p><code>caseFirst</code> プロパティには下記の表にある通り、3種類の値を指定することができます。</p>
+
+<h3 id="caseFirst_values" name="caseFirst_values"><code>caseFirst</code> の値</h3>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">値</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>upper</code></td>
+ <td>大文字は小文字よりも前に並べられます。</td>
+ </tr>
+ <tr>
+ <td><code>lower</code></td>
+ <td>小文字は大文字よりも前に並べられます。</td>
+ </tr>
+ <tr>
+ <td><code>false</code></td>
+ <td>大文字・小文字で特別な並べ替えはしません。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Setting_the_caseFirst_value_via_the_locale_string" name="Setting_the_caseFirst_value_via_the_locale_string">ロケール文字列による <code>caseFirst</code> 値の設定</h3>
+
+<p><a href="https://www.unicode.org/reports/tr35/" rel="noopener">Unicode ロケール文字列仕様書</a>では、 <code>caseFirst</code> が表す値は <code>kf</code> キーに対応します。 <code>kf</code> はロケール文字列の「拡張子サブタグ」として扱われます。これらのサブタグは、ロケールに関するデータを追加するもので、 <code>-u</code> 拡張を使用してロケール識別子に追加されます。つまり、 <code>caseFirst</code> の値は、 <code>Locale</code> コンストラクターに渡される初期のロケール識別子文字列に追加することができます。 <code>caseFirst</code> の値を追加するには、まず文字列に <code>-u</code> 拡張キーを追加します。次に、照合順序の型を追加することを示すために <code>-kf</code> 拡張キーを追加します。最後に、 <code>caseFirst</code> の値を文字列に追加します。</p>
+
+<pre class="brush: js">let caseFirstStr = new Intl.Locale("fr-Latn-FR-u-kf-upper");
+console.log(caseFirstStr.caseFirst); // "upper" と表示</pre>
+
+<h3 id="Setting_the_caseFirst_value_via_the_configuration_object_argument" name="Setting_the_caseFirst_value_via_the_configuration_object_argument">構成オブジェクト引数による caseFirst の値の設定</h3>
+
+<p>{{jsxref("Locale/Locale", "Intl.Locale")}} コンストラクターには、オプションで構成オブジェクトの引数があり、拡張の種類を渡すために使用することができます。構成オブジェクトの <code>caseFirst</code> プロパティを望みの <code>caseFirst</code> の値に設定し、コンストラクターに渡します。</p>
+
+<pre class="brush: js">let caseFirstObj= new Intl.Locale("en-Latn-US", {caseFirst: "lower"});
+console.log(us12hour.caseFirst); // "lower" と表示</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.caseFirst')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<div>{{Compat("javascript.builtins.Intl.Locale.caseFirst")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+ <li><a href="https://github.com/unicode-org/cldr/blob/master/common/bcp47/collation.xml#L49">Unicode case first collation spec</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/collation/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/collation/index.html
new file mode 100644
index 0000000000..d2dad676cb
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/collation/index.html
@@ -0,0 +1,166 @@
+---
+title: Intl.Locale.prototype.collation
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/collation
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - プロパティ
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/collation
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale.prototype.collation</code></strong> プロパティは、 <code>Locale</code> の<a href="https://www.unicode.org/reports/tr35/tr35-collation.html#CLDR_Collation">照合種別</a>を返すアクセサープロパティです。</span></p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>照合とは、文字列を並べ替える処理のことです。検索クエリの結果からデータベース内のレコードの順序付けまで、文字列を特定の順序に並べ替えて配置しなければならない場合に使用されます。文字列を順番に配置するという考えは些細なことのように思えるかもしれませんが、順序の考え方は地域や言語によって異なることがあります。 <code>collation</code> プロパティは、 JavaScript プログラマーが特定のロケールで使用される照合種別に簡単にアクセスできるようにすることを助けます。</p>
+
+<p>利用可能な照合種別は下記の表にあります。 <a href="https://github.com/unicode-org/cldr/blob/2dd06669d833823e26872f249aa304bc9d9d2a90/common/bcp47/collation.xml">Unicode 照合仕様書</a> から引用したものです。</p>
+
+<h3 id="Valid_collation_types" name="Valid_collation_types">有効な照合種別</h3>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">照合種別</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>big5han</td>
+ <td>ラテン文字はピンイン順、漢字は big5 文字セット順 (中国語で使用)</td>
+ </tr>
+ <tr>
+ <td>compat</td>
+ <td>前の版の順序で、互換性のため</td>
+ </tr>
+ <tr>
+ <td>dict</td>
+ <td>辞書形式の順序 (シンハラ語など)</td>
+ </tr>
+ <tr>
+ <td>
+ <div class="blockIndicator warning">
+ <p><code>direct</code> 照合順は非推奨です。使用しないでください。</p>
+ </div>
+
+ <p>direct</p>
+ </td>
+ <td>バイナリコードポイント順 (ヒンズー語で使用)</td>
+ </tr>
+ <tr>
+ <td>ducet</td>
+ <td>既定の Unicode 照合順で、要素表順</td>
+ </tr>
+ <tr>
+ <td>emoji</td>
+ <td>絵文字に推奨の順序</td>
+ </tr>
+ <tr>
+ <td>eor</td>
+ <td>ヨーロッパ語の順序の規則</td>
+ </tr>
+ <tr>
+ <td>gb2312</td>
+ <td>ラテン文字はピンイン順、漢字は gb2312han 順 (中国語で使用)</td>
+ </tr>
+ <tr>
+ <td>phonebk</td>
+ <td>電話帳形式の順序 (ドイツ語など)</td>
+ </tr>
+ <tr>
+ <td>phonetic</td>
+ <td>発音順 (発音に基づく順序)</td>
+ </tr>
+ <tr>
+ <td>pinyin</td>
+ <td>ラテン文字と漢字はピンイン順 (中国語で使用)</td>
+ </tr>
+ <tr>
+ <td>reformed</td>
+ <td>リフォーム順 (スウェーデン語など)</td>
+ </tr>
+ <tr>
+ <td>search</td>
+ <td>文字列検索のための特殊な照合種別</td>
+ </tr>
+ <tr>
+ <td>searchjl</td>
+ <td>韓国語の頭文字子音検索用の特殊な照合種別</td>
+ </tr>
+ <tr>
+ <td>standard</td>
+ <td>各言語の既定の照合順</td>
+ </tr>
+ <tr>
+ <td>stroke</td>
+ <td>ラテン文字はピンイン順、漢字は画数順 (中国語で使用)</td>
+ </tr>
+ <tr>
+ <td>trad</td>
+ <td>歴史的な形の順序 (スペイン語など)</td>
+ </tr>
+ <tr>
+ <td>unihan</td>
+ <td>ラテン文字はピンイン順、漢字は Unihan 部首画数順 (中国語で使用)</td>
+ </tr>
+ <tr>
+ <td>zhuyin</td>
+ <td>
+ <p>ラテン文字はピンイン順、漢字とパパラモフォは注音順 (中国語で使用)</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>他のロケールのサブタグと同様、照合種別はロケール文字列やコンストラクターの構成オブジェクトの引数で {{jsxref("Locale", "Intl.Locale")}} オブジェクトに追加することができます。</p>
+
+<h3 id="Adding_a_collation_type_via_the_locale_string" name="Adding_a_collation_type_via_the_locale_string">ロケール文字列による照合種別の追加</h3>
+
+<p><a href="https://www.unicode.org/reports/tr35/">Unicode ロケール文字列仕様書</a>では、照合種別はロケールキーの「拡張子サブタグ」となります。これらのサブタグは、ロケールに関するデータを追加するもので、 <code>-u</code> 拡張を使用してロケール識別子に追加されます。つまり、照合種別は、ロケールのコンストラクターに渡される初期のロケール識別子文字列に追加することができます。照合種別を追加するには、まず文字列に <code>-u</code> 拡張を追加します。次に、照合順序の型を追加することを示すために <code>-co</code> 拡張を追加します。最後に、照合順序を文字列に追加します。</p>
+
+<pre class="brush: js">let stringColl = new Intl.Locale("en-Latn-US-u-co-emoji");
+console.log(stringColl.collation); // "emoji" と表示
+</pre>
+
+<h3 id="Adding_a_collation_type_via_the_configuration_object_argument" name="Adding_a_collation_type_via_the_configuration_object_argument">構成オブジェクト引数による照合種別の追加</h3>
+
+<p>{{jsxref("Locale/Locale", "Intl.Locale")}} コンストラクターには、オプションで構成オブジェクトの引数があり、これには照合種別を含む任意の拡張の種類をいくつか含めることができます。構成オブジェクトの <code>collation</code> プロパティを任意の照合種別に設定し、コンストラクターに渡します。</p>
+
+<pre class="brush: js">let configColl = new Intl.Locale("en-Latn-US", {collation: "emoji"});
+console.log(configColl.collation); // "emoji" と表示</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.collation')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.Locale.collation")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/hourcycle/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/hourcycle/index.html
new file mode 100644
index 0000000000..1d68f033ed
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/hourcycle/index.html
@@ -0,0 +1,96 @@
+---
+title: Intl.Locale.prototype.hourCycle
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - プロパティ
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale.prototype.hourCycle</code></strong> プロパティは、ロケールで使用される時刻保持書式の規則を返すアクセサープロパティです。</span></p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>世界中で使用されている時刻保持規則 (時制) には、主に12時制と24時制の2つの種類があります。 <code>hourCycle</code> プロパティを使用すると、 JavaScript のプログラマーが特定のロケールで使用されている時制に簡単にアクセスできるようになります。他の追加ロケールデータと同様に、時制種別は<a href="https://www.unicode.org/reports/tr35/#u_Extension">拡張サブタグ</a>であり、ロケール文字列に含まれるデータを拡張したものです。時制種別には、以下の表にある通り、いくつかの異なる値を設定することができます。</p>
+
+<h3 id="有効な時制種別">有効な時制種別</h3>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">時制種別</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>h12</code></td>
+ <td>1–12を使用する時制で、パターンの 'h' に対応します。12時制で、正子は午前12:00から始まります。</td>
+ </tr>
+ <tr>
+ <td><code>h23</code></td>
+ <td>0–23を使用する時制で、パターンの 'H' に対応します。24時制で、正子は0:00から始まります。</td>
+ </tr>
+ <tr>
+ <td><code>h11</code></td>
+ <td>0–11を使用する時制で、パターンの 'K' に対応します。12時制で、正子は午前0:00から始まります。</td>
+ </tr>
+ <tr>
+ <td><code>h24</code></td>
+ <td>1–24を使用する時制で、パターンの 'k' に対応します。24時制で、正子は24:00から始まります。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>これらの例は、時制データを {{jsxref("Locale", "Locale")}} オブジェクトに追加する方法を示しています。</p>
+
+<h3 id="Setting_the_numeric_value_via_the_locale_string" name="Setting_the_numeric_value_via_the_locale_string">ロケール文字列による時制の追加</h3>
+
+<p><a href="https://www.unicode.org/reports/tr35/" rel="noopener">Unicode ロケール文字列仕様書</a>では、時制はロケール文字列の「拡張サブタグ」です。これらのサブタグはロケールについての追加データであり、拡張キー <code>-u</code> を使用してロケール識別子に追加されます。このようして、 <code>numeric</code> の値を {{jsxref("Locale/Locale", "Locale")}} コンストラクターに渡される初期のロケール識別子文字列に追加することができます。時制種別の値を設定するには、まず文字列に <code>-u</code> 拡張キーを追加します。次に、 <code>-hc</code> 拡張キーを追加して、時制種別の値を追加していることを示します。最後に、時制種別の値を文字列に追加します。</p>
+
+<pre class="brush: js">let ja24hour = new Intl.Locale("ja-JP-u-hc-h23");
+console.log(ja24hour.hourCycle); // "h23" と表示</pre>
+
+<h3 id="Adding_an_hour_cycle_via_the_configuration_object_argument" name="Adding_an_hour_cycle_via_the_configuration_object_argument">構成オブジェクト引数から時制を追加</h3>
+
+<p>{{jsxref("Locale/Locale", "Intl.Locale")}} コンストラクターには、オプションで構成オブジェクトの引数があり、これには時制種別を含む任意の拡張の種類をいくつか含めることができます。構成オブジェクトの <code>hourCycle</code> プロパティを任意の時制種別に設定し、コンストラクターに渡します。</p>
+
+<pre class="brush: js">let us12hour = new Intl.Locale("en-US", {hourCycle: "h12"});
+console.log(us12hour.hourCycle); // "h12" と表示</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.hourCycle')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<div>{{Compat("javascript.builtins.Intl.Locale.hourCycle")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+ <li><a href="https://www.unicode.org/reports/tr35/#UnicodeHourCycleIdentifier">Unicode 時間周期拡張キー仕様書</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/index.html
new file mode 100644
index 0000000000..d11507595d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/index.html
@@ -0,0 +1,104 @@
+---
+title: Intl.Locale
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale
+tags:
+ - Class
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Reference
+ - クラス
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale</code></strong> オブジェクトは、 Unicode ロケール識別子を表す Intl オブジェクトの標準組み込みプロパティです。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-locale.html")}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>Intl.Locale</strong></code> オブジェクトは、 Unicode ロケールをより簡単に操作できるようにするために作成されました。 Unicode は、ロケールを<em>ロケール識別子</em>と呼ばれる文字列で表します。ロケール識別子は、<em>言語識別子</em>と<em>拡張タグ</em>から構成されます。言語識別子はロケールの中核となるもので、<em>言語</em>、<em>文字体系</em>、<em>地域サブタグ</em>から構成されます。ロケールに関する追加情報は、オプションの拡張タグに格納されます。<em>拡張タグ</em>には、暦の種類や時計の種類、数値表記法の種類などのロケールに関する情報が格納されています。</p>
+
+<p>従来、 Intl API は Unicode と同様に文字列を使用してロケールを表していました。これはシンプルで軽量な解決策であり、うまく機能します。しかし、 Locale クラスを追加することで、言語、文字体系、地域、拡張タグの解析や操作が容易になります。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Locale/Locale", "Intl.Locale()")}}</dt>
+ <dd>新しい <code>Locale</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt><code>Intl.Locale.prototype</code></dt>
+ <dd><code>Locale</code> コンストラクターのプロトタイプオブジェクトです。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Locale/baseName", "Intl.Locale.prototype.baseName")}}</dt>
+ <dd>この <code>Locale</code> に関する基本的な情報を、完全なデータ文字列の部分文字列の形で返します。</dd>
+ <dt>{{jsxref("Locale/calendar", "Intl.Locale.prototype.calendar")}}</dt>
+ <dd>このロケールの暦年を示す <code>Locale</code> の部分を返します。</dd>
+ <dt>{{jsxref("Locale/caseFirst", "Intl.Locale.prototype.caseFirst")}}</dt>
+ <dd>ロケールの照合規則に大文字・小文字を考慮しているかどうかを返します。</dd>
+ <dt>{{jsxref("Locale/collation", "Intl.Locale.prototype.collation")}}</dt>
+ <dd>この <code>Locale</code> の照合の種類を返します。これは、ロケールの規則に従って文字列を並べ替えるために使用します。</dd>
+ <dt>{{jsxref("Locale/hourCycle", "Intl.Locale.prototype.hourCycle")}}</dt>
+ <dd>このロケールが使用している時刻保持書式の規約を返します。</dd>
+ <dt>{{jsxref("Locale/language", "Intl.Locale.prototype.language")}}</dt>
+ <dd>このロケールに関連づけられた言語を返します。</dd>
+ <dt>{{jsxref("Locale/numberingSystem", "Intl.Locale.prototype.numberingSystem")}}</dt>
+ <dd>このロケールが使用している数値表記法を返します。</dd>
+ <dt>{{jsxref("Locale/numeric", "Intl.Locale.prototype.numeric")}}</dt>
+ <dd>このロケールが数字に対して特殊な照合順序を持っているかどうかを返します。</dd>
+ <dt>{{jsxref("Locale/region", "Intl.Locale.prototype.region")}}</dt>
+ <dd>このロケールに関連付けられた世界の地域 (通常は国) を返します。</dd>
+ <dt>{{jsxref("Locale/script", "Intl.Locale.prototype.script")}}</dt>
+ <dd>このロケールで使われている特定の言語を書く際に使用する文字体系を返します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Locale/minimize", "Intl.Locale.prototype.minimize()")}}</dt>
+ <dd>既存の値に基づいて、ロケールの言語、表記法、地域の最も可能性の高い値を取得します。</dd>
+ <dt>{{jsxref("Locale/maximize", "Intl.Locale.prototype.maximize()")}}</dt>
+ <dd>既存の値に基づいて、ロケールの言語、表記法、地域の最も可能性の高い値を取得します。</dd>
+ <dt>{{jsxref("Locale/toString", "Intl.Locale.prototype.toString()")}}</dt>
+ <dd>このロケールの完全なロケール識別子文字列を返します。</dd>
+</dl>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#locale-objects')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.Locale")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://github.com/zbraniecki/Intl.js/tree/intllocale">The Intl.Locale Polyfill</a></li>
+ <li><a href="https://www.unicode.org/reports/tr35/#Canonical_Unicode_Locale_Identifiers">Unicode locale identifiers spec</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/language/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/language/index.html
new file mode 100644
index 0000000000..7996d348df
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/language/index.html
@@ -0,0 +1,67 @@
+---
+title: Intl.Locale.prototype.language
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/language
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - プロパティ
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/language
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale.prototype.language</code></strong> プロパティは、ロケールに関連付けられた言語を返すアクセサープロパティです。</span></p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>言語はロケールの中核的な特徴の一つです。 Unicode 仕様書では、ロケールの言語識別子を言語と地域を合わせたものとして扱います (イギリス英語とアメリカ英語などの方言や変化形を区別するためです)。 {{jsxref("Locale", "Locale")}} の <code>language</code> プロパティは、ロケールの言語サブタグを厳密に返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Setting_the_script_in_the_locale_identifer_string_argument" name="Setting_the_script_in_the_locale_identifer_string_argument">ロケール識別子の文字列引数で言語を設定</h3>
+
+<p>有効な Unicode 言語識別子となるためには、文字列は言語サブタグで始めなければなりません。 {{jsxref("Locale/Locale", "Locale")}} コンストラクターの主要な引数には、有効な Unicode ロケール識別子がなければならないので、コンストラクターを使用する際には必ず言語サブタグを持つ識別子を渡さなければなりません。</p>
+
+<pre class="brush: js">let langStr = new Intl.Locale("en-Latn-US");
+
+console.log(langStr.language); // "en" と表示</pre>
+
+<h3 id="Setting_the_script_via_the_configuration_object" name="Setting_the_script_via_the_configuration_object">構成オブジェクトにより言語を上書き</h3>
+
+<p>言語サブタグは指定する必要がありますが、 {{jsxref("Locale/Locale", "Locale")}} コンストラクターは構成オブジェクトを取り、これを用いて言語サブタグを上書きすることができます。</p>
+
+<pre class="brush: js">let langObj = new Intl.Locale("en-Latn-US", {language: "es"});
+
+console.log(langObj.language); // "es" と表示</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.language')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<div>{{Compat("javascript.builtins.Intl.Locale.language")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Locale")}}</li>
+ <li><a href="https://www.unicode.org/reports/tr35/#unicode_language_subtag_validity">Unicode 言語サブタグ仕様書</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/locale/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/locale/index.html
new file mode 100644
index 0000000000..8624c2d4ff
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/locale/index.html
@@ -0,0 +1,61 @@
+---
+title: Intl.Locale() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/Locale
+tags:
+ - Constructor
+ - Intl
+ - JavaScript
+ - Locale
+ - Reference
+ - コンストラクター
+ - ロケール
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/Locale
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale</code></strong> コンストラクターは、 Intl オブジェクトの標準組み込みプロパティで、 Unicode ロケール識別子を表します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-locale.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">new Intl.Locale(<var>tag</var> [, <var>options</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>tag</var></code></dt>
+ <dd>Unicode ロケール識別子の文字列です。</dd>
+ <dt><code><var>options</var></code></dt>
+ <dd>ロケールの構成を含むオブジェクトです。キーは Unicode ロケールタグで、値は有効な Unicode タグ値です。</dd>
+</dl>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl-locale-constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.Locale.Locale")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://github.com/zbraniecki/Intl.js/tree/intllocale">The Intl.Locale Polyfill</a></li>
+ <li><a href="https://www.unicode.org/reports/tr35/#Canonical_Unicode_Locale_Identifiers">Unicode locale identifiers spec</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/maximize/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/maximize/index.html
new file mode 100644
index 0000000000..1e2848c7e3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/maximize/index.html
@@ -0,0 +1,79 @@
+---
+title: Intl.Locale.prototype.maximize()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/maximize
+tags:
+ - Internationaliztion
+ - Intl
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - メソッド
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/maximize
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale.prototype.maximize()</code></strong> メソッドは、既存の値に基づいてロケールの言語、表記法、地域の最も可能性の近い値を取得します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-locale-prototype-maximize.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><em>locale</em>.maximize()</code></pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Locale", "Locale")}} インスタンスで、 <code>baseName</code> プロパティが、 <a href="https://www.unicode.org/reports/tr35/#Likely_Subtags">Add Likely Subtags</a> アルゴリズムが <em>{{jsxref("Locale/baseName", "locale.baseName")}}</em> に対して実行された結果になったものを返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>不完全な言語識別子をもとに、最も可能性の高いロケール言語識別子サブタグを識別できると便利な場合があります。 Add Likely Subtags アルゴリズムはこの機能を提供してくれます。例えば、言語識別子 "en" が与えられた場合、アルゴリズムは "en-Latn-US" を返すことになります。英語はラテン文字でしか書けませんし、世界最大の英語圏の国であるアメリカで使われている可能性が高いからです。この機能は、 <code>maximize()</code> メソッドを介して JavaScript プログラマーに提供されています。 <code>maximize()</code> は、<a href="https://www.unicode.org/reports/tr35/#Language_Locale_Field_Definitions" rel="noopener">言語識別子</a>を構成する主要なサブタグのうち言語サブ、表記法、地域の各サブタグにのみ影響を与えます。ロケール識別子の "-u" の後にあるその他のサブタグは拡張サブタグと呼ばれ、 <code>maximize()</code> メソッドの影響を受けません。これらのサブタグの例としては、 {{jsxref("Locale/hourCycle", "Locale.hourCycle")}}, {{jsxref("Locale/calendar", "Locale.calendar")}}, {{jsxref("Locale/numeric", "Locale.numeric")}} などがあります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js">let myLocale = new Intl.Locale("ja", {hourCycle: "h24", calendar: "gregory"});
+console.log(myLocale.baseName); // "ja" と表示
+console.log(myLocale.toString()); // "ja-u-ca-gregory-hc-h24" と表示
+let myLocMaximized = myLocale.maximize();
+
+// "ja-Jpan-JP"。 "Jpan" と "JP" タグが追加されます。
+// これは、日本語が主に漢字かな交じり文 (Jpan) で書かれ、また主に日本 (JP) で話されているためです。
+console.log(myLocMaximized.baseName);
+
+// "ja-Jpan-JP-u-ca-gregory-hc-h24" と表示します。
+// なお、拡張タグ ("-u" 以降) はそのまま残ります。
+console.log(myLocMaximized.toString()); </pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.maximize')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.Locale.maximize")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+ <li>{{jsxref("Locale/baseName", "Locale.baseName")}}</li>
+ <li><a href="https://www.unicode.org/reports/tr35/#Likely_Subtags">Unicode's Likely Subtags spec</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/minimize/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/minimize/index.html
new file mode 100644
index 0000000000..51c26a0498
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/minimize/index.html
@@ -0,0 +1,78 @@
+---
+title: Intl.Locale.prototype.minimize()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/minimize
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/minimize
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale.prototype.minimize()</code></strong> メソッドは、 {{jsxref("Locale/maximize", "Locale.maximize()")}} を呼び出したことで追加されるロケールに関する情報を削除しようとします。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-locale-prototype-minimize.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><em>locale</em>.minimize()</code></pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Locale", "Locale")}} インスタンスで、 <code>baseName</code> プロパティが、 <a href="https://www.unicode.org/reports/tr35/#Likely_Subtags">Remove Likely Subtags</a> アルゴリズムが <code><em>locale.baseName</em></code> に対して実行された結果になったものを返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドは {{jsxref("Locale/maximize", "maximize()")}} の逆の処理を行い、ロケールの言語識別子 (基本的には <code>baseName</code> の内容) から言語、文字体系、地域のサブタグをすべて削除します。これは、言語識別子の中に余分なサブタグがある場合に便利です。例えば "en-Latn" は "en" に簡略化できます。英語では "Latn" が書き言葉に使われる唯一の文字体系だからです。 <code>minimize()</code> が影響を与えるのは、<a href="https://www.unicode.org/reports/tr35/#Language_Locale_Field_Definitions">言語識別子</a>を構成する主要なサブタグである言語、文字体系、地域の各サブタグのみです。ロケール識別子の "-u" の後にあるその他のサブタグは拡張サブタグと呼ばれ、 <code>minimize()</code> メソッドの影響を受けません。これらのサブタグの例としては、 {{jsxref("Locale/hourCycle", "Locale.hourCycle")}}, {{jsxref("Locale/calendar", "Locale.calendar")}}, {{jsxref("Locale/numeric", "Locale.numeric")}} などがあります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js">let myLocale = new Intl.Locale("ja-Jpan-JP", {hourCycle: "h24", calendar: "gregory"});
+console.log(myLocale.baseName); // "ja-Jpan-JP" と表示
+console.log(myLocale.toString()); // "ja-Jpan-JP-u-ca-gregory-hc-h24" と表示
+
+let myLocMinimized = myLocale.minimize();
+
+// "ja" のみを表示します。日本語は主に漢字かな交じり文 (Jpan) で
+// 表記され、またほとんど日本で話されているためです。
+console.log(myLocMinimized.baseName);
+
+// "ja-u-ca-gregory-hc-h24" と表示します。
+// なお、拡張タグ ("-u" 以降) はそのまま残ります。
+console.log(myLocMinimized.toString());</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.minimize')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.Locale.minimize")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+ <li>{{jsxref("Locale/baseName", "Intl.Locale.baseName")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/numberingsystem/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/numberingsystem/index.html
new file mode 100644
index 0000000000..02d82c108e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/numberingsystem/index.html
@@ -0,0 +1,419 @@
+---
+title: Intl.Locale.prototype.numberingSystem
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/numberingSystem
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - プロパティ
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/numberingSystem
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale.prototype.numberingSystem</code></strong> プロパティは、ロケールが使用する<a href="https://ja.wikipedia.org/wiki/%E5%91%BD%E6%95%B0%E6%B3%95">命数法</a>を返すアクセサープロパティです。</span></p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>命数法とは、数値を表現するための体系のことです。 <code>numberingSystem</code> プロパティは、世界中のさまざまな国、地域、文化で使用されているさまざまな命数法を表現する支援をします。ほとんどの国際化スキーマと同様に、 <code>Locale</code> オブジェクトで <code>numberingSystem</code> によって表現できる命数法は、 Unicode で標準化されています。標準的な Unicode の命数法の表を以下に示します。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>値</th>
+ <th>説明</th>
+ </tr>
+ <tr>
+ <td>adlm</td>
+ <td>Adlam digits</td>
+ </tr>
+ <tr>
+ <td>ahom</td>
+ <td>Ahom digits</td>
+ </tr>
+ <tr>
+ <td>arab</td>
+ <td>アラビア・インド数字</td>
+ </tr>
+ <tr>
+ <td>arabext</td>
+ <td>拡張アラビア・インド数字</td>
+ </tr>
+ <tr>
+ <td>armn</td>
+ <td>大文字のアルメニア数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>armnlow</td>
+ <td>小文字のアルメニア数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>bali</td>
+ <td>Balinese digits</td>
+ </tr>
+ <tr>
+ <td>beng</td>
+ <td>Bengali digits</td>
+ </tr>
+ <tr>
+ <td>bhks</td>
+ <td>Bhaiksuki digits</td>
+ </tr>
+ <tr>
+ <td>brah</td>
+ <td>Brahmi digits</td>
+ </tr>
+ <tr>
+ <td>cakm</td>
+ <td>Chakma digits</td>
+ </tr>
+ <tr>
+ <td>cham</td>
+ <td>Cham digits</td>
+ </tr>
+ <tr>
+ <td>cyrl</td>
+ <td>キリル数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>deva</td>
+ <td>Devanagari digits</td>
+ </tr>
+ <tr>
+ <td>ethi</td>
+ <td>エチオピア数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>finance</td>
+ <td>金融数字 — アルゴリズムの場合あり</td>
+ </tr>
+ <tr>
+ <td>fullwide</td>
+ <td>全角数字</td>
+ </tr>
+ <tr>
+ <td>geor</td>
+ <td>ジョージア数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>gong</td>
+ <td>Gunjala Gondi digits</td>
+ </tr>
+ <tr>
+ <td>gonm</td>
+ <td>Masaram Gondi digits</td>
+ </tr>
+ <tr>
+ <td>grek</td>
+ <td>大文字のギリシャ数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>greklow</td>
+ <td>小文字のギリシャ数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>gujr</td>
+ <td>Gujarati digits</td>
+ </tr>
+ <tr>
+ <td>guru</td>
+ <td>Gurmukhi digits</td>
+ </tr>
+ <tr>
+ <td>hanidays</td>
+ <td>太陰暦またはその他の旧暦向けの漢字による日付の数字</td>
+ </tr>
+ <tr>
+ <td>hanidec</td>
+ <td>漢字を数字として使用した命数法</td>
+ </tr>
+ <tr>
+ <td>hans</td>
+ <td>簡体字の漢数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>hansfin</td>
+ <td>簡体字の金融用漢数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>hant</td>
+ <td>繁体字の漢数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>hantfin</td>
+ <td>繁体字の金融用漢数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>hebr</td>
+ <td>ヘブライ数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>hmng</td>
+ <td>Pahawh Hmong digits</td>
+ </tr>
+ <tr>
+ <td>hmnp</td>
+ <td>Nyiakeng Puachue Hmong digits</td>
+ </tr>
+ <tr>
+ <td>java</td>
+ <td>Javanese digits</td>
+ </tr>
+ <tr>
+ <td>jpan</td>
+ <td>日本語の漢数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>jpanfin</td>
+ <td>日本語の金融用漢数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>jpanyear</td>
+ <td>日本語の元号用漢数字 (元年表記に対応)</td>
+ </tr>
+ <tr>
+ <td>kali</td>
+ <td>Kayah Li digits</td>
+ </tr>
+ <tr>
+ <td>khmr</td>
+ <td>Khmer digits</td>
+ </tr>
+ <tr>
+ <td>knda</td>
+ <td>Kannada digits</td>
+ </tr>
+ <tr>
+ <td>lana</td>
+ <td>Tai Tham Hora (secular) digits</td>
+ </tr>
+ <tr>
+ <td>lanatham</td>
+ <td>Tai Tham Tham (ecclesiastical) digits</td>
+ </tr>
+ <tr>
+ <td>laoo</td>
+ <td>Lao digits</td>
+ </tr>
+ <tr>
+ <td>latn</td>
+ <td>ラテン数字</td>
+ </tr>
+ <tr>
+ <td>lepc</td>
+ <td>Lepcha digits</td>
+ </tr>
+ <tr>
+ <td>limb</td>
+ <td>Limbu digits</td>
+ </tr>
+ <tr>
+ <td>mathbold</td>
+ <td>数学的太数字</td>
+ </tr>
+ <tr>
+ <td>mathdbl</td>
+ <td>数学的黒板太数字</td>
+ </tr>
+ <tr>
+ <td>mathmono</td>
+ <td>数学的等幅数字</td>
+ </tr>
+ <tr>
+ <td>mathsanb</td>
+ <td>数学的サンセリフ太数字</td>
+ </tr>
+ <tr>
+ <td>mathsans</td>
+ <td>数学的サンセリフ数字</td>
+ </tr>
+ <tr>
+ <td>mlym</td>
+ <td>Malayalam digits</td>
+ </tr>
+ <tr>
+ <td>modi</td>
+ <td>Modi digits</td>
+ </tr>
+ <tr>
+ <td>mong</td>
+ <td>Mongolian digits</td>
+ </tr>
+ <tr>
+ <td>mroo</td>
+ <td>Mro digits</td>
+ </tr>
+ <tr>
+ <td>mtei</td>
+ <td>Meetei Mayek digits</td>
+ </tr>
+ <tr>
+ <td>mymr</td>
+ <td>Myanmar digits</td>
+ </tr>
+ <tr>
+ <td>mymrshan</td>
+ <td>Myanmar Shan digits</td>
+ </tr>
+ <tr>
+ <td>mymrtlng</td>
+ <td>Myanmar Tai Laing digits</td>
+ </tr>
+ <tr>
+ <td>native</td>
+ <td>ネイティブの数字</td>
+ </tr>
+ <tr>
+ <td>newa</td>
+ <td>Newa digits</td>
+ </tr>
+ <tr>
+ <td>nkoo</td>
+ <td>N'Ko digits</td>
+ </tr>
+ <tr>
+ <td>olck</td>
+ <td>Ol Chiki digits</td>
+ </tr>
+ <tr>
+ <td>orya</td>
+ <td>Oriya digits</td>
+ </tr>
+ <tr>
+ <td>osma</td>
+ <td>Osmanya digits</td>
+ </tr>
+ <tr>
+ <td>rohg</td>
+ <td>Hanifi Rohingya digits</td>
+ </tr>
+ <tr>
+ <td>roman</td>
+ <td>大文字のローマ数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>romanlow</td>
+ <td>小文字のローマ数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>saur</td>
+ <td>Saurashtra digits</td>
+ </tr>
+ <tr>
+ <td>shrd</td>
+ <td>Sharada digits</td>
+ </tr>
+ <tr>
+ <td>sind</td>
+ <td>Khudawadi digits</td>
+ </tr>
+ <tr>
+ <td>sinh</td>
+ <td>Sinhala Lith digits</td>
+ </tr>
+ <tr>
+ <td>sora</td>
+ <td>Sora_Sompeng digits</td>
+ </tr>
+ <tr>
+ <td>sund</td>
+ <td>Sundanese digits</td>
+ </tr>
+ <tr>
+ <td>takr</td>
+ <td>Takri digits</td>
+ </tr>
+ <tr>
+ <td>talu</td>
+ <td>New Tai Lue digits</td>
+ </tr>
+ <tr>
+ <td>taml</td>
+ <td>タミル数字 — アルゴリズム</td>
+ </tr>
+ <tr>
+ <td>tamldec</td>
+ <td>Modern Tamil decimal digits</td>
+ </tr>
+ <tr>
+ <td>telu</td>
+ <td>Telugu digits</td>
+ </tr>
+ <tr>
+ <td>thai</td>
+ <td>Thai digits</td>
+ </tr>
+ <tr>
+ <td>tirh</td>
+ <td>Tirhuta digits</td>
+ </tr>
+ <tr>
+ <td>tibt</td>
+ <td>Tibetan digits</td>
+ </tr>
+ <tr>
+ <td>traditio</td>
+ <td>伝統的な数字 — アルゴリズムの場合あり</td>
+ </tr>
+ <tr>
+ <td>vaii</td>
+ <td>Vai digits</td>
+ </tr>
+ <tr>
+ <td>wara</td>
+ <td>Warang Citi digits</td>
+ </tr>
+ <tr>
+ <td>wcho</td>
+ <td>Wancho digits</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Setting_the_numberingSystem_value_via_the_locale_string" name="Setting_the_numberingSystem_value_via_the_locale_string">ロケール文字列から <code>numberingSystem</code> の値を設定</h3>
+
+<p><a href="https://www.unicode.org/reports/tr35/" rel="noopener">Unicode ロケール文字列仕様書</a>では、 <code>numberingSystem</code> が表す値はキー <code>nu</code> に対応しています。 <code>nu</code> はロケール文字列の「拡張サブタグ」とみなされます。これらのサブタグは、ロケールに関する追加データを追加するもので、拡張キー <code>-u</code> を使用してロケール識別子に追加されます。このようして、 <code>numberingSystem</code> の値を {{jsxref("Locale/Locale", "Locale")}} コンストラクターに渡される初期のロケール識別子文字列に追加することができます。 <code>numeric</code> の値を設定するには、まず文字列に <code>-u</code> 拡張キーを追加します。次に、 <code>-nu</code> 拡張キーを追加して、 <code>numberingSystem</code> の値を追加していることを示します。最後に、文字列に <code>numberingSystem</code> の値を追加します。</p>
+
+<pre class="brush: js">let numberingSystemViaStr = new Intl.Locale("fr-Latn-FR-u-nu-mong");
+console.log(numberingSystemStr.numberingSystem); // "mong" と表示</pre>
+
+<h3 id="Setting_the_numberingSystem_value_via_the_configuration_object_argument" name="Setting_the_numberingSystem_value_via_the_configuration_object_argument">構成オブジェクト引数から <code>numberingSystem</code> の値を設定</h3>
+
+<p>{{jsxref("Locale/Locale", "Intl.Locale")}} コンストラクターには、オプションで構成オブジェクトの引数があり、これを使用して拡張の種類を渡すことができます。構成オブジェクトの <code>numberingSystem</code> プロパティを任意の <code>numberingSystem</code> に設定し、コンストラクターに渡します。</p>
+
+<pre class="brush: js">let numberingSystemViaObj= new Intl.Locale("en-Latn-US", {numberingSystem: "latn"});
+console.log(us12hour.numberingSystem); // "latn" と表示
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.numberingSystem')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<div>{{Compat("javascript.builtins.Intl.Locale.numberingSystem")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+ <li><a href="https://github.com/unicode-org/cldr/blob/master/common/supplemental/numberingSystems.xml">標準 Unicode 数値体系の詳細</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/numeric/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/numeric/index.html
new file mode 100644
index 0000000000..f60bc08e48
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/numeric/index.html
@@ -0,0 +1,65 @@
+---
+title: Intl.Locale.prototype.numeric
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/numeric
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - プロパティ
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/numeric
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale.prototype.numeric</code></strong> プロパティは、ロケールが特別な数字の照合処理を行うかどうかを返すアクセサプロパティです。</span></p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Locale.caseFirst", "Intl.Locale.caseFirst")}} と同様、 <code>numeric</code> はロケールが使用する照合規則を変更するものです。 <code>numeric</code> は {{jsxref("boolean", "Boolean")}} 値で、 <code>true</code> か <code>false</code> のどちらかになります。 <code>numeric</code> を <code>false</code> に設定した場合は、文字列内の数値を特別に扱うことはありません。 <code>numeric</code> を <code>true</code> に設定した場合は、ロケールは文字列を照合する際に数値を考慮します。この数値の特別な扱いとは、数字の並びを数値として比較するということです。例えば、 "A-21" という文字列は "A-123" よりも小さいとみなされます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Setting_the_numeric_value_via_the_locale_string" name="Setting_the_numeric_value_via_the_locale_string">ロケール文字列から <code>numeric</code> の値を設定</h3>
+
+<p><a href="https://www.unicode.org/reports/tr35/" rel="noopener">Unicode ロケール文字列仕様書</a>では、 <code>numeric</code> が表す値はキー <code>kn</code> に対応しています。 <code>kn</code> はロケール文字列の「拡張サブタグ」とみなされます。これらのサブタグは、ロケールに関する追加データを追加するもので、拡張キー <code>-u</code> を使用してロケール識別子に追加されます。このようして、 <code>numeric</code> の値を {{jsxref("Locale/Locale", "Locale")}} コンストラクターに渡される初期のロケール識別子文字列に追加することができます。 <code>numeric</code> の値を設定するには、まず文字列に <code>-u</code> 拡張キーを追加します。次に、 <code>-kn</code> 拡張キーを追加して、 <code>numeric</code> の値を追加していることを示します。最後に、文字列に <code>numeric</code> の値を追加します。 <code>numeric</code> を <code>true</code> に設定したい場合は、単に <code>kn</code> キーを追加するだけで十分です。値を <code>false</code> にするには、 <code>kn</code> キーの後に "<code>false</code>" を指定する必要があります。</p>
+
+<pre class="brush: js">let numericViaStr = new Intl.Locale("fr-Latn-FR-u-kn-false");
+console.log(numericStr.numeric); // "false" と表示</pre>
+
+<h3 id="Setting_the_numeric_value_via_the_configuration_object_argument" name="Setting_the_numeric_value_via_the_configuration_object_argument">構成オブジェクト引数から <code>numeric</code> の値を設定</h3>
+
+<p>{{jsxref("Locale/Locale", "Intl.Locale")}} コンストラクターには、オプションで構成オブジェクトの引数があり、これを使用して拡張の種類を渡すことができます。構成オブジェクトの <code>numeric</code> プロパティを任意の <code>numeric</code> に設定し、コンストラクターに渡します。</p>
+
+<pre class="brush: js">let numericViaObj= new Intl.Locale("en-Latn-US", {numeric: true});
+console.log(us12hour.numeric); // "true" と表示
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.numeric')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<div>{{Compat("javascript.builtins.Intl.Locale.numeric")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/region/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/region/index.html
new file mode 100644
index 0000000000..d547e24b15
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/region/index.html
@@ -0,0 +1,67 @@
+---
+title: Intl.Locale.prototype.region
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/region
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - プロパティ
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/region
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.Locale.prototype.region</code></strong> プロパティは、ロケールに関連付けられた世界の地域 (ふつうは国) 返すアクセサープロパティです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>地域は、ロケールを世界の特定の地域に位置づけるための、ロケール識別子の重要な要素となります。ロケールの地域を知ることは、ロケール間の違いを識別する上で非常に重要です。たとえば、イギリスとアメリカ合衆国では英語が使われていますが、両国間では綴りやその他の言語の慣習に違いがあります。ロケールの地域を知ることで、 JavaScript プログラマーがサイトやアプリケーションのコンテンツを世界の様々な地域から見たときに正しく表示されるようにするのに役立ちます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Setting_the_region_in_the_locale_identifer_string_argument" name="Setting_the_region_in_the_locale_identifer_string_argument">ロケール識別子の文字列引数で地域を設定</h3>
+
+<p>地域は、有効な Unicode 言語識別子文字列の3番目の部分であり、これを {{jsxref("Locale/Locale", "Locale")}} コンストラクターに渡すロケール識別子文字列に追加することで設定することができます。なお、地域はロケール識別子の必須項目ではありません。</p>
+
+<pre class="brush: js">let regionStr = new Intl.Locale("en-Latn-US");
+
+console.log(regionStr.region); // "US" と表示</pre>
+
+<h3 id="Setting_the_region_via_the_configuration_object" name="Setting_the_region_via_the_configuration_object">構成オブジェクトから地域を設定</h3>
+
+<p>{{jsxref("Locale/Locale", "Locale")}} コンストラクターは構成オブジェクトを取り、これを用いて地域のサブタグとプロパティを設定することができます。</p>
+
+<pre class="brush: js">let regionObj = new Intl.Locale("ja-Jpan", {region: "JP"});
+
+console.log(scriptObj.script); // "JP" と表示</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.region')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<div>{{Compat("javascript.builtins.Intl.Locale.region")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+ <li><a href="https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html">Unicode region chart</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/script/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/script/index.html
new file mode 100644
index 0000000000..10452b6342
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/script/index.html
@@ -0,0 +1,67 @@
+---
+title: Intl.Locale.prototype.script
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/script
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - プロパティ
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/script
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale.prototype.script</code></strong> プロパティは、ロケールで使われている特定の言語を書くための文字体系を返すアクセサープロパティです。</span></p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>文字体系は、用字系と呼ばれることもありますが、ロケールの核となる属性の一つです。これは、特定の言語を書くために使用される記号やグリフの集合を示しています。例えば、英語の文字はラテン文字ですが、韓国語の文字はハングルです。多くの場合、言語 (これは必須) は単一の文字体系でしか書かれないので、文字体系を記述することは厳密には必要ありません。この規則には例外があり、完全な Unicode 言語識別子を持つためには、可能な限りスクリプトを示すことが重要です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Setting_the_script_in_the_locale_identifer_string_argument" name="Setting_the_script_in_the_locale_identifer_string_argument">ロケール識別子の文字列引数で文字体系を設定</h3>
+
+<p>文字体系は、有効な Unicode 言語識別子文字列の2番目の部分であり、これを {{jsxref("Locale/Locale", "Locale")}} コンストラクターに渡すロケール識別子文字列に追加することで設定することができます。なお、文字体系はロケール識別子の必須項目ではありません。</p>
+
+<pre class="brush: js">let scriptStr = new Intl.Locale("en-Latn-US");
+
+console.log(scriptStr.script); // "Latn" と表示</pre>
+
+<h3 id="Setting_the_script_via_the_configuration_object" name="Setting_the_script_via_the_configuration_object">構成オブジェクトから文字体系を設定</h3>
+
+<p>{{jsxref("Locale/Locale", "Locale")}} コンストラクターは構成オブジェクトを取り、これを用いて文字体系のサブタグとプロパティを設定することができます。</p>
+
+<pre class="brush: js">let scriptObj = new Intl.Locale("ja-JP", {script: "Jpan"});
+
+console.log(scriptObj.script); // "Jpan" と表示</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.script')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<div>{{Compat("javascript.builtins.Intl.Locale.script")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+ <li><a href="https://www.unicode.org/reports/tr35/#unicode_script_subtag_validity">Unicode's script subtag specification</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/locale/tostring/index.html b/files/ja/web/javascript/reference/global_objects/intl/locale/tostring/index.html
new file mode 100644
index 0000000000..104a328f21
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/locale/tostring/index.html
@@ -0,0 +1,67 @@
+---
+title: Intl.Locale.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/Locale/toString
+tags:
+ - Intl
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Locale/toString
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Intl.Locale.prototype.toString()</code></strong> は、このロケールの完全な<a href="https://www.unicode.org/reports/tr35/#Unicode_locale_identifier">ロケール識別子文字列</a>を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-locale-prototype-tostring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><em>locale</em>.toString()</code></pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>この<em>ロケール</em>の Unicode ロケール識別子文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Locale</code> オブジェクトは、概念的な Unicode ロケール識別子を JavaScript で表現したものです。特定のロケールに関する情報 (言語、文字体系、カレンダーの種類など) を、ロケール識別子文字列で符号化することができます。これらのロケール識別子をより簡単に扱えるようにするために、 <code>Locale</code> オブジェクトが JavaScript に導入されました。 Locale オブジェクトの <code>toString</code> メソッドをコールすると、そのロケールの識別子文字列を返します。 <code>toString</code> メソッドを使用すると、 <code>Locale</code> のインスタンスが既存の <code>Intl</code> のコンストラクターへの引数ととして JSON におけるシリアライズにおいて、またはその他のコンテキストで正確な文字列表現が有用な場合に提供することができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js">let myLocale = new Intl.Locale("ja-Jpan-JP", {hourCycle: "h24", calendar: "gregory"});
+console.log(myLocale.baseName); // "ja-Jpan-JP" と表示
+console.log(myLocale.toString()); // "ja-Jpan-JP-u-ca-gregory-hc-h24" と表示
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.Locale.prototype.toString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.Locale.toString")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Locale", "Intl.Locale")}}</li>
+ <li>{{jsxref("Locale/baseName", "Intl.Locale.baseName")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/numberformat/format/index.html b/files/ja/web/javascript/reference/global_objects/intl/numberformat/format/index.html
new file mode 100644
index 0000000000..38e1b6926c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/numberformat/format/index.html
@@ -0,0 +1,89 @@
+---
+title: Intl.NumberFormat.prototype.format()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+ - NumberFormat
+ - Prototype
+ - メソッド
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.NumberFormat.prototype.format()</code></strong> メソッドは、この {{jsxref("NumberFormat")}} オブジェクトのロケールと整形オプションに従って数値を整形します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-numberformat-prototype-format.html", "taller")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><var>numberFormat</var>.format(<var>number</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>number</code></dt>
+ <dd>整形する {{jsxref("Number")}} または {{jsxref("BigInt")}} です。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>format</code> ゲッター関数は、この {{jsxref("NumberFormat")}} オブジェクトのロケールと整形オプションに従って数値を整形し、文字列に格納します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_format" name="Using_format"><code>format</code> の使用</h3>
+
+<p><code>format</code> ゲッター関数を使用して単一の通貨値を整形しましょう。こちらはロシアの例です。</p>
+
+<pre class="brush: js">var options = { style: 'currency', currency: 'RUB' };
+var numberFormat = new Intl.NumberFormat('ru-RU', options);
+console.log(numberFormat.format(654321.987));
+// → "654 321,99 руб."
+</pre>
+
+<h3 id="Using_format_with_map" name="Using_format_with_map"><code>format</code> と <code>map</code> の使用</h3>
+
+<p><code>format</code> ゲッター関数を使用して、配列内のすべての数値を整形することができます。なお、この関数は供給元である {{jsxref("NumberFormat")}} に結び付けられているので、直接 {{jsxref("Array.prototype.map")}} に渡すことができます。</p>
+
+<pre class="brush: js">var a = [123456.789, 987654.321, 456789.123];
+var numberFormat = new Intl.NumberFormat('es-ES');
+var formatted = a.map(numberFormat.format);
+console.log(formatted.join('; '));
+// → "123.456,789; 987.654,321; 456.789,123"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl.numberformat.prototype.format', 'Intl.NumberFormat.prototype.format')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.NumberFormat.format")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li>
+ <li>{{jsxref("Number.prototype.toLocaleString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/numberformat/formattoparts/index.html b/files/ja/web/javascript/reference/global_objects/intl/numberformat/formattoparts/index.html
new file mode 100644
index 0000000000..5d4a91fc85
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/numberformat/formattoparts/index.html
@@ -0,0 +1,151 @@
+---
+title: Intl.NumberFormat.prototype.formatToParts()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+ - NumberFormat
+ - Prototype
+ - メソッド
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.Numberformat.prototype.formatToParts()</code></strong> メソッドは <code>NumberTimeFormat</code> フォーマッターによって生成された文字列のロケールに応じた書式設定を可能にします。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Intl.NumberFormat.prototype.formatToParts(number)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>number</code> {{optional_inline}}</dt>
+ <dd>書式化する {{jsxref("Number")}} または {{jsxref("BigInt")}}。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>書式化された数値を含む要素のオブジェクトの {{jsxref("Array")}}。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>formatToParts()</code> メソッドは、数値文字列のカスタム書式設定を行うときに便利です。ロケール固有のトークンを含むオブジェクトの {{jsxref("Array")}} を返します。その <code>formatToParts()</code> メソッドが返す構造体は、次のようになります。</p>
+
+<pre class="brush: js notranslate">[
+ { type: "integer", value: "3" },
+ { type: "group", value: "." },
+ { type: "integer", value: "500" }
+]</pre>
+
+<p>可能なタイプは以下のとおりです。</p>
+
+<dl>
+ <dt>currency</dt>
+ <dd>通貨の文字列です。 "$" や "€" のような記号または "Dollar", "Euro" の文字列です。これらの文字列は <code>currencyDisplay</code> の特定方法に依存します。</dd>
+ <dt>decimal</dt>
+ <dd>小数点区切り文字 (".")。</dd>
+ <dt>fraction</dt>
+ <dd>小数点以下の数値。</dd>
+ <dt>group</dt>
+ <dd>グループ区切り文字 (",")。</dd>
+ <dt>infinity</dt>
+ <dd>{{jsxref("Infinity")}} 文字列 ("∞")。</dd>
+ <dt>integer</dt>
+ <dd>整数。</dd>
+ <dt>literal</dt>
+ <dd>書式設定された数字のリテラル文字列または空白。</dd>
+ <dt>minusSign</dt>
+ <dd>マイナス記号の文字列 ("-")。</dd>
+ <dt>nan</dt>
+ <dd>{{jsxref("NaN")}} の文字列 ("NaN")。</dd>
+ <dt>plusSign</dt>
+ <dd>プラス記号の文字列 ("+")。</dd>
+</dl>
+
+<dl>
+ <dt>percentSign</dt>
+ <dd>パーセント文字列 ("%")。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Comparing_format_and_formatToParts" name="Comparing_format_and_formatToParts">format と formatToParts の比較</h3>
+
+<p><code>NumberFormat</code> はローカライズされた、直接操作できない文字列を出力します。</p>
+
+<pre class="brush: js notranslate">var number = 3500;
+
+var formatter = new Intl.NumberFormat('de-DE', {
+ style: 'currency',
+ currency: 'EUR'
+});
+
+formatter.format(number);
+// "3.500,00 €"
+</pre>
+
+<p>しかし、多くのユーザーインターフェースでは、この文字列の書式形式をカスタマイズしたいと要望があります。 <code>formatToParts</code> メソッドは <code>NumberFormat</code> フォーマッターによって生成された文字列を要素ごとの文字列として提供することでロケールに応じた書式設定を可能にします。</p>
+
+<pre class="brush: js notranslate">formatter.formatToParts(number);
+
+// 返値:
+[
+ { type: "integer", value: "3" },
+ { type: "group", value: "." },
+ { type: "integer", value: "500" },
+ { type: "decimal", value: "," },
+ { type: "fraction", value: "00" },
+ { type: "literal", value: " " },
+ { type: "currency", value: "€" }
+]
+</pre>
+
+<p>これで情報は個別に利用可能となり、カスタマイズされた方法でフォーマットして連結することができます。例えば {{jsxref("Array.prototype.map()")}}, <a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a>, <a href="/ja/docs/Web/JavaScript/Reference/Statements/switch">switch 文</a>, <a href="/ja/docs/Web/JavaScript/Reference/Template_literals">テンプレートリテラル</a>, {{jsxref("Array.prototype.reduce()")}} を使います。</p>
+
+<pre class="brush: js notranslate">var numberString = formatter.formatToParts(number).map(({type, value}) =&gt; {
+ switch (type) {
+ case 'currency': return `&lt;strong&gt;${value}&lt;/strong&gt;`;
+ default : return value;
+ }
+}).reduce((string, part) =&gt; string + part);
+</pre>
+
+<p>上記は<code>formatToParts()</code>メソッドを使い、通貨を太字にします。</p>
+
+<pre class="brush: js notranslate">console.log(numberString);
+// "3.500,00 &lt;strong&gt;€&lt;/strong&gt;"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl.numberformat.prototype.formattoparts', 'Intl.NumberFormat.prototype.formatToParts')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.NumberFormat.formatToParts")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li>
+ <li>{{jsxref("NumberFormat.format", "Intl.NumberFormat.prototype.format")}}</li>
+ <li>日付の書式化: {{jsxref("DateTimeFormat.formatToParts", "Intl.DateTimeFormat.prototype.formatToParts()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/numberformat/index.html b/files/ja/web/javascript/reference/global_objects/intl/numberformat/index.html
new file mode 100644
index 0000000000..75f0c153e7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/numberformat/index.html
@@ -0,0 +1,148 @@
+---
+title: Intl.NumberFormat
+slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
+tags:
+ - Class
+ - Internationalization
+ - Intl
+ - JavaScript
+ - NumberFormat
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.NumberFormat</code></strong> オブジェクトは、言語に依存した数値書式を可能にするオブジェクトのコンストラクターです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-numberformat.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/NumberFormat/NumberFormat", "Intl.NumberFormat()")}}</dt>
+ <dd>新しい <code>NumberFormat</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}}</dt>
+ <dd>提供されたロケールのうち、実行時の既定のロケールにフォールバックせずにサポートされるものを配列に納めて返します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("NumberFormat.format", "Intl.NumberFormat.prototype.format")}}</dt>
+ <dd>ゲッター関数で、ローケルに応じて、この {{jsxref("NumberFormat")}} オブジェクトのオプションを持つ数値を書式化する関数を返します。</dd>
+ <dt>{{jsxref("NumberFormat.formatToParts", "Intl.NumberFormat.prototype.formatToParts()")}}</dt>
+ <dd>オブジェクトの {{jsxref("Array")}} を返し、これは専用のロケールを意識した書式で使用することができる部品内の数値文字列を表します。</dd>
+ <dt>{{jsxref("NumberFormat.resolvedOptions", "Intl.NumberFormat.prototype.resolvedOptions()")}}</dt>
+ <dd>ローケルを反映しているプロパティとオブジェクトの初期化中に計算された照合オプションをもった新しいオブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_usage" name="Basic_usage">基本的な使用</h3>
+
+<p>ローケルを指定しない基本的な使い方では、既定のローケルとオプションで書式化された文字列が返されます。</p>
+
+<pre class="brush: js notranslate">var number = 3500;
+
+console.log(new Intl.NumberFormat().format(number));
+// → '3,500' 英語(U.S.)ロケールの場合
+</pre>
+
+<h3 id="locales_の使用">locales の使用</h3>
+
+<p>この例では、地域による数値書式の違いをいくつか紹介します。アプリケーションのユーザーインターフェイスで使われた言語書式を得るには、言語 (およびフォールバック言語) を <code>locales</code> 引数により指定してください。</p>
+
+<pre class="brush: js notranslate">var number = 123456.789;
+
+// ドイツではカンマを小数、ピリオドを千単位の区切りに用います
+console.log(new Intl.NumberFormat('de-DE').format(number));
+// → 123.456,789
+
+// ほとんどのアラビア語圏ではアラビア数字を用います
+console.log(new Intl.NumberFormat('ar-EG').format(number));
+// → ١٢٣٤٥٦٫٧٨٩
+
+// インドでは thousands/lakh/crore 区切りが用いられます
+console.log(new Intl.NumberFormat('en-IN').format(number));
+// → 1,23,456.789
+
+// nu 拡張キーにより漢数字などの番号方式が使えます
+console.log(new Intl.NumberFormat('zh-Hans-CN-u-nu-hanidec').format(number));
+// → 一二三,四五六.七八九
+
+// バリ語のようにサポートされないかもしれない言語を用いる場合は
+// フォールバック言語を含めます。次の例ではインドネシア語です。
+console.log(new Intl.NumberFormat(['ban', 'id']).format(number));
+// → 123.456,789
+</pre>
+
+<h3 id="Using_options" name="Using_options">options の使用</h3>
+
+<p><code>options</code>引数を使うと結果をカスタマイズできます。</p>
+
+<pre class="brush: js notranslate">var number = 123456.789;
+
+// 通貨フォーマットを用います
+console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number));
+// → 123.456,79 €
+
+// 日本円には小数点以下がありません
+console.log(new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(number));
+// → ¥123,457
+
+// 有効数字を3桁に狭めます
+console.log(new Intl.NumberFormat('en-IN', { maximumSignificantDigits: 3 }).format(number));
+// → 1,23,000
+</pre>
+
+<h3 id="style_と_unit_の使用">style と unit の使用</h3>
+
+<pre class="brush: js notranslate">console.log(new Intl.NumberFormat("pt-PT",  {
+    style: 'unit',
+    unit: "mile-per-hour"
+}).format(50));
+// → 50 mi/h
+
+console.log((16).toLocaleString('en-GB', {
+    style: "unit",
+    unit: "liter",
+    unitDisplay: "long"
+}));
+// → 16 litres
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#numberformat-objects', 'Intl.NumberFormat')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.NumberFormat")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Intl")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/numberformat/numberformat/index.html b/files/ja/web/javascript/reference/global_objects/intl/numberformat/numberformat/index.html
new file mode 100644
index 0000000000..2a1932a00b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/numberformat/numberformat/index.html
@@ -0,0 +1,257 @@
+---
+title: Intl.NumberFormat() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat
+tags:
+ - Constructor
+ - Intl
+ - JavaScript
+ - NumberFormat
+ - Reference
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.NumberFormat()</code></strong> コンストラクターは、言語に依存した数値の書式を有効にするオブジェクトを生成します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-numberformat.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Intl.NumberFormat([<var>locales</var>[, <var>options</var>]])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>locales</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p>BCP 47 言語タグを持つ文字列、またはそのような文字列の配列。 <code><var>locales</var></code> 引数の一般的な形式と解釈については、 {{jsxref("Intl", "Intl のページ", "#Locale_identification_and_negotiation", 1)}}を参照してください。次の Unicode 拡張キーが許可されています。</p>
+
+ <dl>
+ <dt><code>nu</code></dt>
+ <dd>使用される数値システムです。指定可能な値には "<code>adlm</code>", "<code>ahom</code>", "<code>arab</code>", "<code>arabext</code>", "<code>bali</code>", "<code>beng</code>", "<code>bhks</code>", "<code>brah</code>", "<code>cakm</code>", "<code>cham</code>", "<code>deva</code>", "<code>diak</code>", "<code>fullwide</code>", "<code>gong</code>", "<code>gonm</code>", "<code>gujr</code>", "<code>guru</code>", "<code>hanidec</code>", "<code>hmng</code>", "<code>hmnp</code>", "<code>java</code>", "<code>kali</code>", "<code>khmr</code>", "<code>knda</code>", "<code>lana</code>", "<code>lanatham</code>", "<code>laoo</code>", "<code>latn</code>", "<code>lepc</code>", "<code>limb</code>", "<code>mathbold</code>", "<code>mathdbl</code>", "<code>mathmono</code>", "<code>mathsanb</code>", "<code>mathsans</code>", "<code>mlym</code>", "<code>modi</code>", "<code>mong</code>", "<code>mroo</code>", "<code>mtei</code>", "<code>mymr</code>", "<code>mymrshan</code>", "<code>mymrtlng</code>", "<code>newa</code>", "<code>nkoo</code>", "<code>olck</code>", "<code>orya</code>", "<code>osma</code>", "<code>rohg</code>", "<code>saur</code>", "<code>segment</code>", "<code>shrd</code>", "<code>sind</code>", "<code>sinh</code>", "<code>sora</code>", "<code>sund</code>", "<code>takr</code>", "<code>talu</code>", "<code>tamldec</code>", "<code>telu</code>", "<code>thai</code>", "<code>tibt</code>", "<code>tirh</code>", "<code>vaii</code>", "<code>wara</code>", "<code>wcho</code>" があります。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>options</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p>以下のプロパティのすべてまたは一部を持つオブジェクトです。</p>
+
+ <dl>
+ <dt><code>compactDisplay</code></dt>
+ <dd><code>notation</code> が "<code>compact</code>" の場合のみ使用されます。 "<code>short</code>" (既定値) または "<code>long</code>" のどちらかを取ります。</dd>
+ <dt><code>currency</code></dt>
+ <dd>通貨の書式で使用するための通貨です。利用可能な値は ISO 4217 通貨コードであり、例えば米ドルは "<code>USD</code>"、ユーロは "<code>EUR</code>"、日本円には "<code>JPY</code>" です。 — <a href="http://www.currency-iso.org/en/home/tables/table-a1.html">Current currency &amp; funds code list</a> を参照してください。既定値はありません。 <code>style</code> が "<code>currency</code>" である場合、 <code>currency</code> プロパティを提供する必要があります。</dd>
+ <dt><code>currencyDisplay</code></dt>
+ <dd>通貨の書式で通貨を表示する方法です。利用可能な値は次の通りです。
+ <ul>
+ <li>"<code>symbol</code>" はローカライズされた通貨記号、例えば € などを使用します。これが既定値です。</li>
+ <li>"<code>narrowSymbol</code>" は短い形式の記号を使用します ("US$100" ではなく "$100")。</li>
+ <li>"<code>code</code>" は ISO 通貨コードを使用します。</li>
+ <li>"<code>name</code>" はローカライズされた通貨名、例えば "<code>dollar</code>" を使用します。</li>
+ </ul>
+ </dd>
+ <dt><code>currencySign</code></dt>
+ <dd>多くのロケールでは、会計の書式はマイナス記号を追加する代わりに数値を括弧で囲みます。この形式は <code>currencySign</code> オプションを "<code>accounting</code>" に設定すると有効になります。既定値は "<code>standard</code>" です。</dd>
+ <dt><code>localeMatcher</code></dt>
+ <dd>使用するロケール比較アルゴリズムです。使用可能な値は "<code>lookup</code>" および "<code>best fit</code>" です。既定値は "<code>best fit</code>" です。このオプションについての情報は、 {{jsxref("Global_Objects/Intl", "Intl page", "#Locale_negotiation", 1)}} を参照してください。</dd>
+ <dt><code>notation</code></dt>
+ <dd>数値を表示するための書式です。既定値は "<code>standard</code>" です。
+ <ul>
+ <li>"<code>standard</code>" 通常の数値の書式です。</li>
+ <li>"<code>scientific</code>" return the order-of-magnitude for formatted number.</li>
+ <li>"<code>engineering</code>" return the exponent of ten when divisible by three</li>
+ <li>"<code>compact</code>" string representing exponent, defaults is using the "short" form.</li>
+ </ul>
+ </dd>
+ <dt><code>numberingSystem</code></dt>
+ <dd>Numbering System. Possible values include: "<code>arab</code>", "<code>arabext</code>", " <code>bali</code>", "<code>beng</code>", "<code>deva</code>", "<code>fullwide</code>", " <code>gujr</code>", "<code>guru</code>", "<code>hanidec</code>", "<code>khmr</code>", " <code>knda</code>", "<code>laoo</code>", "<code>latn</code>", "<code>limb</code>", "<code>mlym</code>", " <code>mong</code>", "<code>mymr</code>", "<code>orya</code>", "<code>tamldec</code>", " <code>telu</code>", "<code>thai</code>", "<code>tibt</code>".</dd>
+ <dt><code>signDisplay</code></dt>
+ <dd>When to display the sign for the number; defaults to "<code>auto</code>"
+ <ul>
+ <li>"<code>auto</code>" sign display for negative numbers only</li>
+ <li>"<code>never</code>" never display sign</li>
+ <li>"<code>always</code>" always display sign</li>
+ <li>"<code>exceptZero</code>" sign display for positive and negative numbers, but not zero</li>
+ </ul>
+ </dd>
+ <dt><code>style</code></dt>
+ <dd>The formatting style to use , the default is "<code>decimal</code>".
+ <ul>
+ <li>"<code>decimal</code>" for plain number formatting.</li>
+ <li>"<code>currency</code>" for currency formatting.</li>
+ <li>"<code>percent</code>" for percent formatting</li>
+ <li>"<code>unit</code>" for unit formatting</li>
+ </ul>
+ </dd>
+ <dt><code>unit</code></dt>
+ <dd>The unit to use in <code>unit</code> formatting, Possible values are core unit identifiers, defined in <a href="http://unicode.org/reports/tr35/tr35-general.html#Unit_Elements" rel="nofollow">UTS #35, Part 2, Section 6</a>. A <a href="https://tc39.es/proposal-unified-intl-numberformat/section6/locales-currencies-tz_proposed_out.html#sec-issanctionedsimpleunitidentifier" rel="nofollow">subset</a> of units from the <a href="https://github.com/unicode-org/cldr/blob/master/common/validity/unit.xml">full list</a> was selected for use in ECMAScript. Pairs of simple units can be concatenated with "<code>-per-</code>" to make a compound unit. There is no default value; if the <code>style</code> is "<code>unit</code>", the <code>unit</code> property must be provided.</dd>
+ <dt><code>unitDisplay</code></dt>
+ <dd>The unit formatting style to use in <code>unit</code> formatting, the defaults is "<code>short</code>".
+ <ul>
+ <li>"<code>long</code>" (e.g., <code>16 litres</code>)</li>
+ <li>"<code>short</code>" (e.g., <code>16 l</code>)</li>
+ <li>"<code>narrow</code>" (e.g., <code>16l</code>)</li>
+ </ul>
+ </dd>
+ <dt><code>useGrouping</code></dt>
+ <dd>Whether to use grouping separators, such as thousands separators or thousand/lakh/crore separators. Possible values are true and false; the default is true.</dd>
+ </dl>
+ </dd>
+ <dd>
+ <p>The following properties fall into two groups: <code>minimumIntegerDigits</code>, <code>minimumFractionDigits</code>, and <code>maximumFractionDigits</code> in one group, <code>minimumSignificantDigits</code> and <code>maximumSignificantDigits</code> in the other. If at least one property from the second group is defined, then the first group is ignored.</p>
+
+ <dl>
+ <dt><code>minimumIntegerDigits</code></dt>
+ <dd>The minimum number of integer digits to use. Possible values are from 1 to 21; the default is 1.</dd>
+ <dt><code>minimumFractionDigits</code></dt>
+ <dd>The minimum number of fraction digits to use. Possible values are from 0 to 20; the default for plain number and percent formatting is 0; the default for currency formatting is the number of minor unit digits provided by the <a href="http://www.currency-iso.org/en/home/tables/table-a1.html">ISO 4217 currency code list</a> (2 if the list doesn't provide that information).</dd>
+ <dt><code>maximumFractionDigits</code></dt>
+ <dd>The maximum number of fraction digits to use. Possible values are from 0 to 20; the default for plain number formatting is the larger of <code>minimumFractionDigits</code> and 3; the default for currency formatting is the larger of <code>minimumFractionDigits</code> and the number of minor unit digits provided by the <a href="http://www.currency-iso.org/en/home/tables/table-a1.html">ISO 4217 currency code list</a> (2 if the list doesn't provide that information); the default for percent formatting is the larger of <code>minimumFractionDigits</code> and 0.</dd>
+ <dt><code>minimumSignificantDigits</code></dt>
+ <dd>The minimum number of significant digits to use. Possible values are from 1 to 21; the default is 1.</dd>
+ <dt><code>maximumSignificantDigits</code></dt>
+ <dd>The maximum number of significant digits to use. Possible values are from 1 to 21; the default is 21.</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_usage">Basic usage</h3>
+
+<p>In basic use without specifying a locale, a formatted string in the default locale and with default options is returned.</p>
+
+<pre class="brush: js notranslate">let amount = 3500;
+
+console.log(new Intl.NumberFormat().format(amount));
+// → '3,500' if in US English locale</pre>
+
+<h3 id="Decimal_and_percent_formatting">Decimal and percent formatting</h3>
+
+<pre class="brush: js notranslate">let amount = 3500;
+
+new Intl.NumberFormat('en-US', {style: 'decimal'}).format(amount);
+// → '3,500'
+new Intl.NumberFormat('en-US', {style: 'percent'}).format(amount);
+// → '350,000%'
+</pre>
+
+<h3 id="Unit_formatting">Unit formatting</h3>
+
+<p>If the <code>style</code> is <code>'unit'</code>, a <code>unit</code> property must be provided. Optionally, <code>unitDisplay</code> controls the unit formatting.</p>
+
+<pre class="brush: js notranslate">let amount = 3500;
+
+new Intl.NumberFormat('en-US', {style: 'unit', unit: 'liter'}).format(amount);
+// → '3,500 L'
+
+new Intl.NumberFormat('en-US', {style: 'unit', unit: 'liter', unitDisplay: 'long'}).format(amount);
+// → '3,500 liters'
+</pre>
+
+<h3 id="Currency_formatting">Currency formatting</h3>
+
+<p>If the <code>style</code> is <code>'currency'</code>, a <code>currency</code> property must be provided. Optionally, <code>currencyDisplay</code> and <code>currencySign</code> control the unit formatting.</p>
+
+<pre class="brush: js notranslate">let amount = -3500;
+new Intl.NumberFormat('en-US', {style: 'currency', currency: 'USD'}).format(amount);
+// → '-$3,500.00'
+
+new Intl.NumberFormat('bn', {
+ style: 'currency',
+ currency: 'USD',
+ currencyDisplay: 'name'
+}).format(amount);
+// → '-3,500.00 US dollars'
+
+new Intl.NumberFormat('bn', {
+ style: 'currency',
+ currency: 'USD',
+ currencySign: 'accounting'
+}).format(amount);
+// → '($3,500.00)'
+</pre>
+
+<h3 id="Scientific_engineering_or_compact_notations">Scientific, engineering or compact notations</h3>
+
+<p>Scientific and compact notation are represented by the <code>notation</code> option and can be formatted like this:</p>
+
+<pre class="brush: js notranslate">new Intl.NumberFormat('en-US', { notation: "scientific" }).format(987654321);
+// → 9.877E8
+
+new Intl.NumberFormat('pt-PT', { notation: "scientific" }).format(987654321);
+// → 9,877E8
+
+new Intl.NumberFormat('en-GB', { notation: "engineering" }).format(987654321);
+// → 987.654E6
+
+new Intl.NumberFormat('de', { notation: "engineering" }).format(987654321);
+// → 987,654E6
+
+new Intl.NumberFormat('zh-CN', { notation: "compact" }).format(987654321);
+// → 9.9亿
+
+new Intl.NumberFormat('fr', {
+ notation: "compact",
+ compactDisplay: "long"
+}).format(987654321);
+// → 988 millions
+
+new Intl.NumberFormat('en-GB', {
+ notation: "compact",
+ compactDisplay: "short"
+}).format(987654321);
+// → 988M</pre>
+
+<h3 id="Displaying_signs">Displaying signs</h3>
+
+<p>Display a sign for positive and negative numbers, but not zero:</p>
+
+<pre class="brush: js notranslate">new Intl.NumberFormat("en-US", {
+ style: "percent",
+ signDisplay: "exceptZero"
+}).format(0.55);
+// → '+55%'</pre>
+
+<p>Note that when the currency sign is "accounting", parentheses might be used instead of a minus sign:</p>
+
+<pre class="brush: js notranslate">new Intl.NumberFormat('bn', {
+ style: 'currency',
+ currency: 'USD',
+ currencySign: 'accounting',
+ signDisplay: 'always'
+}).format(-3500);
+
+// → '($3,500.00)'</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl-numberformat-constructor', 'Intl.NumberFormat constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.NumberFormat.NumberFormat")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Intl")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.html b/files/ja/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.html
new file mode 100644
index 0000000000..e32c959169
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.html
@@ -0,0 +1,139 @@
+---
+title: Intl.NumberFormat.prototype.resolvedOptions()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/resolvedOptions
+tags:
+ - Internationalization
+ - JavaScript
+ - Method
+ - NumberFormat
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/resolvedOptions
+---
+<div>{{JSRef}}</div>
+
+<p>ローケルを反映しているプロパティとこの{{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}オブジェクトの初期化中に計算された数値変換オプションをもった新しいオブジェクトを返します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox"><code><var>numberFormat</var>.resolvedOptions()</code></pre>
+
+<h2 id="説明">説明</h2>
+
+<p>ローケルを反映しているプロパティとこの{{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}オブジェクトの初期化中に計算された数値変換オプションをもった新しいオブジェクトを返します。オブジェクトは次のプロパティを持っています。:</p>
+
+<dl>
+ <dt><code>locale</code></dt>
+ <dd>実際に使われているローケルに対するBCP47言語タグ。Unicode表現値が入力BCP47言語タグでリクエストされたら、このローケルに対してリクエストされサポートされているキー/バリューペアは<code>locale</code>に含まれます。</dd>
+ <dt><code>numberingSystem</code></dt>
+ <dd>Unicode表現キー<code>"nu"</code>を使うかデフォルトとして設定される値。</dd>
+ <dt><code>style</code></dt>
+ <dt><code>useGrouping</code></dt>
+ <dd><code>options</code>引数でプロパティに対して提供されるかデフォルトとして設定される値。</dd>
+ <dt><code>currency</code></dt>
+ <dt><code>currencyDisplay</code></dt>
+ <dd><code>options</code>引数でプロパティに対して提供されるかデフォルトとして設定される値。<code>style</code>が<code>"currency"</code>の場合のみ、これらのプロパティは存在しています。</dd>
+</dl>
+
+<p>次の2つのプロパティのグループのうちどちらかのみが含まれています。:</p>
+
+<dl>
+ <dt><code>minimumIntegerDigits</code></dt>
+ <dt><code>minimumFractionDigits</code></dt>
+ <dt><code>maximumFractionDigits</code></dt>
+ <dd><code>options</code>引数でプロパティに対して提供されるかデフォルトとして設定される値。<code>minimumSignificantDigits</code>または<code>maximumSignificantDigits</code>が<code>options</code>引数で提供されなかった場合のみ、これらのプロパティは存在しています。</dd>
+ <dt><code>minimumSignificantDigits</code></dt>
+ <dt><code>maximumSignificantDigits</code></dt>
+ <dd><code>options</code>引数でプロパティに対して提供されるかデフォルトとして設定される値。 これらのプロパティのうち少なくとも1つが<code>options</code>引数で提供された場合のみ、これらのプロパティは存在しています。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<h3 id="resolvedOptions_メソッドを使う"><code>resolvedOptions</code> メソッドを使う</h3>
+
+<pre class="brush: js">var de = new Intl.NumberFormat('de-DE');
+var usedOptions = de.resolvedOptions();
+
+usedOptions.locale; // "de-DE"
+usedOptions.numberingSystem; // "latn"
+usedOption.style; // "decimal"
+usedOptions.minimumIntegerDigits; // 1
+usedOptions.minimumFractionDigits; // 0
+usedOptions.maximumFractionDigits; // 3
+usedOptions.useGrouping; // true
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int 1.0', '#sec-11.3.3', 'Intl.NumberFormat.prototype.resolvedOptions')}}</td>
+ <td>{{Spec2('ES Int 1.0')}}</td>
+ <td>Initial definition.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<div>{{CompatibilityTable}}</div>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari (WebKit)</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatChrome("24")}}</td>
+ <td>{{CompatGeckoDesktop("29")}}</td>
+ <td>{{CompatIE("11")}}</td>
+ <td>{{CompatOpera("15")}}</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Android</th>
+ <th>Chrome for Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Phone</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatChrome("26")}}</td>
+ <td>{{CompatNo}}<br>
+ {{bug("864843")}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.html b/files/ja/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.html
new file mode 100644
index 0000000000..8108241d0b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.html
@@ -0,0 +1,84 @@
+---
+title: Intl.NumberFormat.supportedLocalesOf()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/supportedLocalesOf
+tags:
+ - Internationalization
+ - JavaScript
+ - Method
+ - NumberFormat
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/supportedLocalesOf
+---
+<div>{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}</div>
+
+<h2 id="概要">概要</h2>
+
+<p>ランタイムのデフォルトローケルに戻る必要なしで数値変換でサポートされる提供されたローケルを含んでいる配列を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code>Intl.NumberFormat.supportedLocalesOf(<var>locales</var>[, <var>options</var>])</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>locales</code></dt>
+ <dd>BCP47言語タグをもった文字列、そのような文字列の配列。<code>locales</code>引数の一般的な形式に対して、{{jsxref("Global_Objects/Intl", "Intl page", "#Locale_identification_and_negotiation", 1)}}を確認して下さい。</dd>
+ <dt><code>options</code></dt>
+ <dd>
+ <p>任意。次のプロパティを持つオブジェクト:</p>
+
+ <dl>
+ <dt><code>localeMatcher</code></dt>
+ <dd>使用するローケルマッチングアルゴリズム。利用可能な値は<code>"lookup"</code> や <code>"best fit"</code>です。デフォルトは<code>"best fit"</code>です。このオプションについての情報のために、{{jsxref("Global_Objects/Intl", "Intl page", "#Locale_negotiation", 1)}}を確認して下さい。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="説明">説明</h2>
+
+<p><code>locales</code>で提供された言語パックのサブセットをもった配列を返します。返される言語タグでは、ランタイムが使われているローケルマッチングアルゴリズムが考慮して数値変換でローケルをサポートしているので、デフォルトローケルに戻る必要はありません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="例_supportedLocalesOfを使う">例: <code>supportedLocalesOf</code>を使う</h3>
+
+<p>数値フォーマットで、バリ語ではなく、インドネシア語とドイツ語をサポートしているランタイムを仮定すると、<code>supportedLocalesOf</code> はインドネシア語とドイツ語の言語タグを返します。<code>pinyin</code> は数値フォーマットには適切ではなくインドネシア語では使われていません。インドネシアの特定のドイツ語はサポートされそうにもありません。<code>"lookup"</code>アルゴリズムの指定に注意して下さい。<code>"best fit"</code> はインドネシア語はバリ語に対して、十分にふさわしいと決定するかもしれません。というのも、 ほとんどのバリの人はインドネシア語も理解するからです。それゆえバリ言語タグも同様に返します。</p>
+
+<pre class="brush: js">var locales = ['ban', 'id-u-co-pinyin', 'de-ID'];
+var options = { localeMatcher: 'lookup' };
+console.log(Intl.NumberFormat.supportedLocalesOf(locales, options).join(', '));
+// → "id-u-co-pinyin, de-ID"
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int 1.0', '#sec-11.2.2', 'Intl.NumberFormat.supportedLocalesOf')}}</td>
+ <td>{{Spec2('ES Int 1.0')}}</td>
+ <td>Initial definition.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>
+<div>
+
+
+<p>{{Compat("javascript.builtins.Intl.NumberFormat.supportedLocalesOf")}}</p>
+</div>
+</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/pluralrules/index.html b/files/ja/web/javascript/reference/global_objects/intl/pluralrules/index.html
new file mode 100644
index 0000000000..da798e66e2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/pluralrules/index.html
@@ -0,0 +1,86 @@
+---
+title: Intl.PluralRules
+slug: Web/JavaScript/Reference/Global_Objects/Intl/PluralRules
+tags:
+ - Class
+ - Internationalization
+ - Intl
+ - JavaScript
+ - PluralRules
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/PluralRules
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.PluralRules</code></strong> オブジェクトは、複数形が影響する書式や言語ルールを使用できるようにします。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("PluralRules.PluralRules()", "Intl.PluralRules.PluralRules()")}}</dt>
+ <dd>新しい <code>Intl.PluralRules</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/PluralRules/supportedLocalesOf", "Intl.PluralRules.supportedLocalesOf()")}}</dt>
+ <dd>指定したロケールのうち、ランタイムの既定のロケールにフォールバックすることなく対応されているものが入った配列を返します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/PluralRules/resolvedOptions", "Intl.PluralRules.prototype.resolvedOptions()")}}</dt>
+ <dd>オブジェクトの初期化中に計算されたロケールとコレクションのオプションを反映したプロパティを持った新しいオブジェクトを返します。</dd>
+ <dt>{{jsxref("Intl/PluralRules/select", "Intl.PluralRules.prototype.select()")}}</dt>
+ <dd>ロケールを意識した書式化に使用する複数形を示す {{jsxref("String")}} を返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_locales" name="Using_locales">locales の使用</h3>
+
+<p>この例では、ローカライズされた複数形ルールのいくつかをお見せします。アプリケーションのユーザーインターフェイスで使う言語のフォーマットを取得するには、 <code>locales</code> 引数に言語 (および必要に応じてフォールバック言語) を指定してください。</p>
+
+<pre class="brush: js notranslate">// アラビア語は別な複数形の規則を持っています。
+
+new Intl.PluralRules('ar-EG').select(0);
+// → 'zero'
+new Intl.PluralRules('ar-EG').select(1);
+// → 'one'
+new Intl.PluralRules('ar-EG').select(2);
+// → 'two'
+new Intl.PluralRules('ar-EG').select(6);
+// → 'few'
+new Intl.PluralRules('ar-EG').select(18);
+// → 'many'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#pluralrules-objects', 'Intl.PluralRules')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.PluralRules")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Intl")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/pluralrules/select/index.html b/files/ja/web/javascript/reference/global_objects/intl/pluralrules/select/index.html
new file mode 100644
index 0000000000..af854453f6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/pluralrules/select/index.html
@@ -0,0 +1,84 @@
+---
+title: Intl.PluralRules.select()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/PluralRules/select
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+ - PluralRules
+ - メソッド
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/PluralRules/select
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.PluralRules.prototype.select</code></strong> メソッドは、ロケールを考慮した書式設定に使用する複数形ルールを示す String を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>pluralCategory = pluralRule</var>.select(<var>number</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>number</code></dt>
+ <dd>複数のルールを取得するための数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>数字の複数形のカテゴリを表す <code>string</code> で、 <code>zero</code>, <code>one</code>, <code>two</code>, <code>few</code>, <code>many</code>, <code>other</code> のいずれかになります。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>この関数は、 {{jsxref("PluralRules")}} オブジェクトのロケールや書式オプションに応じて、複数形のカテゴリを選択します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_select" name="Using_select">select() の使用</h3>
+
+<pre class="brush: js notranslate"> new Intl.PluralRules('ar-EG').select(0);
+// → 'zero'
+
+new Intl.PluralRules('ar-EG').select(1);
+// → 'one'
+
+new Intl.PluralRules('ar-EG').select(2);
+// → 'two'
+
+new Intl.PluralRules('ar-EG').select(6);
+// → 'few'
+
+new Intl.PluralRules('ar-EG').select(18);
+// → 'many'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl.pluralrules.prototype.select', 'Intl.PluralRules.select()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.PluralRules.select")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("PluralRules", "Intl.PluralRules")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/pluralrules/supportedlocalesof/index.html b/files/ja/web/javascript/reference/global_objects/intl/pluralrules/supportedlocalesof/index.html
new file mode 100644
index 0000000000..ea219a5f0c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/pluralrules/supportedlocalesof/index.html
@@ -0,0 +1,83 @@
+---
+title: Intl.PluralRules.supportedLocalesOf()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/PluralRules/supportedLocalesOf
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+ - PluralRules
+ - メソッド
+ - 国際化
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/PluralRules/supportedLocalesOf
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.PluralRules.supportedLocalesOf()</code></strong> メソッドは、ランタイムの既定のロケールで代替する必要なく複数形の書式で対応されているものを含む配列を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Intl.PluralRules.supportedLocalesOf(<var>locales</var>[, <var>options</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>locales</var></code></dt>
+ <dd>BCP 47 言語タグを持つ文字列、またはそのような文字列の配列です。 <code>locales</code> 引数の一般的な形式については、 {{jsxref("Intl", "Intl のページ", "#Locale_identification_and_negotiation", 1)}}を参照してください。</dd>
+ <dt><code><var>options</var></code></dt>
+ <dd>
+ <p>省略可能です。以下のプロパティを持つことがあるオブジェクトです。</p>
+
+ <dl>
+ <dt><code>localeMatcher</code></dt>
+ <dd>使用するロケールの一致アルゴリズムです。指定可能な値は <code>lookup</code> および <code>best fit</code> で、既定値は <code>best fit</code> です。このオプションの詳細は、 {{jsxref("Intl", "Intl のページ", "#Locale_negotiation", 1)}}を参照してください。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定したロケールタグのサブセットを表す文字列の配列で、ランタイムの既定のロケールで代替する必要なく複数形の書式で対応されているものを含みます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>locales</code> で提供されている言語タグのサブセットを含む配列を返します。返される言語タグは、ランタイムが複数形のロケールに対応しているもので、使用しているロケール一致アルゴリズムで一致しているとみなされているものです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_supportedLocalesOf" name="Using_supportedLocalesOf">supportedLocalesOf() の使用</h3>
+
+<p>複数形の書式でインドネシア語とドイツ語に対応しており、バリ語に対応していないランタイムを想定すると、 <code>supportedLocalesOf</code> はインドネシア語とドイツ語の言語タグを変更せずに返しますが、 <code>pinyin</code> の照合は複数形の書式には関係なく、インドネシア語でも使用されません。ここでの <code>lookup</code> アルゴリズムの仕様に注意してください — バリ語話者のほとんどはインドネシア語も理解しているので、 <code>best fit</code> のマッチャーはインドネシア語がバリ語に適切に一致すると判断し、バリ語の言語タグも返すかもしれません。</p>
+
+<pre class="brush: js">var locales = ['ban', 'id-u-co-pinyin', 'de-ID'];
+var options = { localeMatcher: 'lookup' };
+console.log(Intl.PluralRules.supportedLocalesOf(locales, options).join(', '));
+// → "id-u-co-pinyin, de-ID"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl.pluralrules.supportedlocalesof', 'Intl.PluralRules.supportedLocalesOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.PluralRules.supportedLocalesOf")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("PluralRules", "Intl.PluralRules")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/format/index.html b/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/format/index.html
new file mode 100644
index 0000000000..8529542ad8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/format/index.html
@@ -0,0 +1,109 @@
+---
+title: Intl.RelativeTimeFormat.prototype.format()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/format
+tags:
+ - IntI
+ - Internationalization
+ - JavaScript
+ - Method
+ - Reference
+ - RelativeTimeFormat
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/format
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.RelativeTimeFormat.prototype.format()</code></strong> メソッドは <code>value</code> や <code>unit</code> を、この {{jsxref("Intl.RelativeTimeFormat")}} オブジェクトのロケールと整形オプションに従って整形します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-relativetimeformat-prototype-format.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: js notranslate"><var>relativeTimeFormat</var>.format(<var>value</var>, <var>unit</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>国際化された相対時間のメッセージに使用する数値です。</dd>
+</dl>
+
+<dl>
+ <dt><code><var>unit</var></code></dt>
+ <dd>国際化された相対時間のメッセージに使用する単位です。利用可能な値は、 "<code>year</code>", "<code>quarter</code>", "<code>month</code>", "<code>week</code>", "<code>day</code>", "<code>hour</code>", "<code>minute</code>", "<code>second</code>" です。複数形も許容されています。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>format</code> ゲッター関数は、この {{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} オブジェクトのロケールと整形オプションに従って値や単位を整形し、文字列に格納します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_format_usage" name="Basic_format_usage">基本的な format の使い方</h3>
+
+<p>以下の例は、英語を使用した相対時間のフォーマッターの生成方法を示しています。</p>
+
+<pre class="brush: js notranslate">// ロケールで既定値を明確に指定して
+// 相対時間フォーマッターを作成
+const rtf = new Intl.RelativeTimeFormat("en", {
+ localeMatcher: "best fit", // other values: "lookup"
+ numeric: "always", // other values: "auto"
+ style: "long", // other values: "short" or "narrow"
+});
+
+// 負の値 (-1) を使った相対時間の書式化
+rtf.format(-1, "day");
+// &gt; "1 day ago"
+
+// 正の値 (1) を使った相対時間の書式化
+rtf.format(1, "day");
+// &gt; "in 1 day"</pre>
+
+<h3 id="Using_the_auto_option" name="Using_the_auto_option">auto オプションの使用</h3>
+
+<p><code>numeric:auto</code> オプションが渡された場合は、 <code>1 day ago</code> や <code>in 1 day</code> の代わりに <code>yesterday</code> や <code>tomorrow</code> の文字列が生成されます。これにより、出力に数値が含まれなくなることがあります。</p>
+
+<pre class="brush: js notranslate">// ロケールで既定値を明確に指定して
+// 相対時間フォーマッターを作成
+const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
+
+// 負の値 (-1) を使った相対時間の書式化
+rtf.format(-1, "day");
+// &gt; "yesterday"
+
+// 正の値 (1) を使った相対時間の書式化
+rtf.format(1, "day");
+// &gt; "tomorrow"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状態</th>
+ <th scope="col">備考</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.RelativeTimeFormat.prototype.format', 'RelativeTimeFormat.format()')}}</td>
+ <td>第 4 段階</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.RelativeTimeFormat.format")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Intl.RelativeTimeFormat")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/formattoparts/index.html b/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/formattoparts/index.html
new file mode 100644
index 0000000000..01aea3d1f9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/formattoparts/index.html
@@ -0,0 +1,91 @@
+---
+title: Intl.RelativeTimeFormat.prototype.formatToParts()
+slug: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts
+tags:
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Method
+ - Prototype
+ - RelativeTimeFormat
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.RelativeTimeFormat.prototype.formatToParts()</code></strong> メソッドは、ロケールを考慮したカスタム書式設定に使用できる相対時間書式を部品単位で表すオブジェクトの配列 ({{jsxref("Array")}}) を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-relativetimeformat-prototype-formattoparts.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: js notranslate">RelativeTimeFormat.formatToParts(<var>value</var>, <var>unit</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>国際化された相対時間のメッセージに使用する数値です。</dd>
+</dl>
+
+<dl>
+ <dt><code><var>unit</var></code></dt>
+ <dd>国際化された相対時間のメッセージに使用する単位です。利用可能な値は、 "<code>year</code>", "<code>quarter</code>", "<code>month</code>", "<code>week</code>", "<code>day</code>", "<code>hour</code>", "<code>minute</code>", "<code>second</code>" です。複数形も許容されています。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>書式化された相対時間を部品単位で含むオブジェクトの配列 ({{jsxref("Array")}}) です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<div><code>Intl.RelativeTimeFormat.prototype.formatToParts</code> メソッドは、書式化メソッドのバージョンの一つで、書式化された数値を他の周囲のテキストから分離し、それぞれの構成部品に分解した、オブジェクトの「部分」を表すオブジェクトの配列を返すものです。これらのオブジェクトには二つのプロパティがあります。 type は <code>NumberFormat</code> の formatToParts 型で、値は出力の構成要素である文字列です。もし "part" が <code>NumberFormat</code> から来たものであれば、書式化された単位を示す unit プロパティを持ちます。</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_formatToParts" name="Using_formatToParts">formatToParts の使用</h3>
+
+<pre class="brush: js notranslate">const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
+
+// Format relative time using the day unit
+rtf.formatToParts(-1, "day");
+// &gt; [{ type: "literal", value: "yesterday"}]
+
+rtf.formatToParts(100, "day");
+// &gt; [{ type: "literal", value: "in " },
+// &gt; { type: "integer", value: "100", unit: "day" },
+// &gt; { type: "literal", value: " days" }]</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状態</th>
+ <th scope="col">備考</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Intl.RelativeTimeFormat.prototype.formatToParts', 'RelativeTimeFormat.formatToParts()')}}</td>
+ <td>第 4 段階</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.RelativeTimeFormat.format")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Intl.RelativeTimeFormat")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/index.html b/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/index.html
new file mode 100644
index 0000000000..1e774a8b10
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/index.html
@@ -0,0 +1,112 @@
+---
+title: Intl.RelativeTimeFormat
+slug: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat
+tags:
+ - Class
+ - Internationalization
+ - Intl
+ - JavaScript
+ - RelativeTimeFormat
+translation_of: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.RelativeTimeFormat</code></strong> オブジェクトは言語に依存の相対時間の書式化を可能にします。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/intl-relativetimeformat.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/RelativeTimeFormat/RelativeTimeFormat", "Intl.RelativeTimeFormat.RelativeTimeFormat()")}}</dt>
+ <dd>新しい <code>Intl.RelativeTimeFormat</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/RelativeTimeFormat/supportedLocalesOf", "Intl.RelativeTimeFormat.supportedLocalesOf()")}}</dt>
+ <dd>指定されたロケールのうち、実行時の既定のロケールにフォールバックせずに対応されるものを配列に収めて返します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Intl/RelativeTimeFormat/format", "Intl.RelativeTimeFormat.prototype.format()")}}</dt>
+ <dd><code>value</code> および <code>unit</code> を、指定された {{jsxref("Intl.RelativeTimeFormat")}} オブジェクトのロケールと書式化オプションに従って書式化します。</dd>
+ <dt>{{jsxref("Intl/RelativeTimeFormat/formatToParts", "Intl.RelativeTimeFormat.prototype.formatToParts()")}}</dt>
+ <dd>ロケール固有のカスタムフォーマットに使用可能な相対時間のフォーマットを部分的に表現したオブジェクトの {{jsxref("Array")}} を返します。</dd>
+ <dt>{{jsxref("Intl/RelativeTimeFormat/resolvedOptions", "Intl.RelativeTimeFormat.prototype.resolvedOptions()")}}</dt>
+ <dd>オブジェクトの初期化中に計算されたロケールやフォーマットのオプションを反映したプロパティを持つ新しいオブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_format_usage" name="Basic_format_usage">基本的な <code>format</code> の使用例</h3>
+
+<p>以下は英語の相対時間フォーマッターの使い方の例です。</p>
+
+<pre class="brush: js notranslate">// 明示的に渡された既定値を使って
+// ロケールの相対時間を生成します
+const rtf = new Intl.RelativeTimeFormat("en", {
+ localeMatcher: "best fit", // other values: "lookup"
+ numeric: "always", // other values: "auto"
+ style: "long", // other values: "short" or "narrow"
+});
+
+// 負数の値 (-1) を使った相対時間のフォーマット
+rtf.format(-1, "day");
+// &gt; "1 day ago"
+
+// 正数の値 (1) を使った相対時間のフォーマット
+rtf.format(1, "day");
+// &gt; "in 1 day"</pre>
+
+<h3 id="Using_formatToParts" name="Using_formatToParts">formatToParts の使用例</h3>
+
+<p>以下はフォーマットされた部品を返す相対時間フォーマッターの生成方法の例です。</p>
+
+<pre class="brush: js notranslate">const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
+
+// 日単位の相対時間フォーマット
+rtf.formatToParts(-1, "day");
+// &gt; [{ type: "literal", value: "yesterday"}]
+
+rtf.formatToParts(100, "day");
+// &gt; [{ type: "literal", value: "in " },
+// &gt; { type: "integer", value: "100", unit: "day" },
+// &gt; { type: "literal", value: " days" }]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状態</th>
+ <th scope="col">備考</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#relativetimeformat-objects', 'RelativeTimeFormat')}}</td>
+ <td>第 4 段階</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.RelativeTimeFormat")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://developers.google.com/web/updates/2018/10/intl-relativetimeformat">The Intl.RelativeTimeFormat API</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/relativetimeformat/index.html b/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/relativetimeformat/index.html
new file mode 100644
index 0000000000..fdc22fa753
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/intl/relativetimeformat/relativetimeformat/index.html
@@ -0,0 +1,122 @@
+---
+title: Intl.RelativeTimeFormat() コンストラクター
+slug: >-
+ Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat
+tags:
+ - Constructor
+ - Internationalization
+ - Intl
+ - JavaScript
+ - Reference
+ - RelativeTimeFormat
+translation_of: >-
+ Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Intl.RelativeTimeFormat()</code></strong> コンストラクターは、 {{jsxref("Intl/RelativeTimeFormat", "Intl.RelativeTimeFormat")}} オブジェクトを生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="notranslate">new Intl.RelativeTimeFormat([<var>locales</var>[, <var>options</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>locales</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p>BCP 47 言語タグを持つ文字列か、そのような文字列の配列です。 <code>locales</code> 引数の一般的な形式と解釈については、 {{jsxref("Global_Objects/Intl", "Intl ページ", "#Locale_identification_and_negotiation", 1)}}を参照してください。</p>
+ </dd>
+ <dt><code><var>options</var></code> {{optional_inline}}</dt>
+ <dd>以下のプロパティのうち一部またはすべてを持つオブジェクトです。
+ <dl>
+ <dt><code>localeMatcher</code></dt>
+ <dd>使用するロケールの一致アルゴリズムです。指定可能な値は <code>lookup</code> および <code>best fit</code> で、既定値は <code>best fit</code> です。このオプションの詳細は、 {{jsxref("Global_Objects/IntlIntl", "Intl", "#Locale_negotiation")}} を参照してください。</dd>
+ <dt><code>numeric</code></dt>
+ <dd>メッセージを出力する書式です。利用可能な値は次の通りです。
+ <ul>
+ <li>"<code>always</code>" (既定値、例えば <code>1 日前</code>)</li>
+ <li>"<code>auto</code>" (例えば <code>昨日</code>)。 "<code>auto</code>" にすると、出力に常に数値が入るとは限りません。</li>
+ </ul>
+ </dd>
+ <dt><code>style</code></dt>
+ <dd>国際化されたメッセージの長さです。利用可能な値は次の通りです。
+ <ul>
+ <li>"<code>long</code>" (既定値、例えば <code>in 1 month</code>)</li>
+ <li>"<code>short</code>" (例えば <code>in 1 mo.</code>)</li>
+ <li>"<code>narrow</code>" (例えば <code>in 1 mo.</code>) narrow スタイルは同じロケールでは short スタイルと同様になることがあります。</li>
+ </ul>
+ </dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_format_usage" name="Basic_format_usage">基本的な書式の使い方</h3>
+
+<p>以下の例は、英語を使用した相対時間のフォーマッターの生成方法を示しています。</p>
+
+<pre class="brush: js notranslate">// Create a relative time formatter in your locale
+// with default values explicitly passed in.
+const rtf = new Intl.RelativeTimeFormat("en", {
+ localeMatcher: "best fit", // other values: "lookup"
+ numeric: "always", // other values: "auto"
+ style: "long", // other values: "short" or "narrow"
+});
+
+// 負の値 (-1) を使った相対時間のフォーマット
+rtf.format(-1, "day");
+// &gt; "1 day ago"
+
+// 正の値 (1) を使った相対時間のフォーマット
+rtf.format(1, "day");
+// &gt; "in 1 day"</pre>
+
+<h3 id="Using_the_auto_option" name="Using_the_auto_option">auto オプションの使用</h3>
+
+<p><code>numeric:auto</code> オプションが渡された場合は、 <code>1 day ago</code> や <code>in 1 day</code> の代わりに <code>yesterday</code> や <code>tomorrow</code> の文字列が生成されます。これにより、出力に数値が含まれなくなることがあります。</p>
+
+<pre class="brush: js notranslate">// Create a relative time formatter in your locale
+// with numeric: "auto" option value passed in.
+const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
+
+// Format relative time using negative value (-1).
+rtf.format(-1, "day");
+// &gt; "yesterday"
+
+// Format relative time using positive day unit (1).
+rtf.format(1, "day");
+// &gt; "tomorrow"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状態</th>
+ <th scope="col">備考</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-intl-relativetimeformat-constructor', 'RelativeTimeFormat()')}}</td>
+ <td>第 4 段階</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Intl.RelativeTimeFormat.RelativeTimeFormat")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://developers.google.com/web/updates/2018/10/intl-relativetimeformat">The Intl.RelativeTimeFormat API</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/isfinite/index.html b/files/ja/web/javascript/reference/global_objects/isfinite/index.html
new file mode 100644
index 0000000000..79698e2600
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/isfinite/index.html
@@ -0,0 +1,88 @@
+---
+title: isFinite()
+slug: Web/JavaScript/Reference/Global_Objects/isFinite
+tags:
+ - Functions
+ - JavaScript
+ - Method
+ - Reference
+ - inFinite
+translation_of: Web/JavaScript/Reference/Global_Objects/isFinite
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p>グローバル関数 <code><strong>isFinite()</strong></code> は渡された値が有限数かどうかを判定します。必要に応じて、引数はまず数値へと変換されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-isfinite.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">isFinite(<var>testValue</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>testValue</var></code></dt>
+ <dd>有限性の評価を行いたい値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>正または負の {{jsxref("Infinity")}} か {{jsxref("NaN")}} か {{jsxref("undefined")}} の場合は <strong><code>false</code></strong> です。それ以外の場合は <strong><code>true</code></strong> です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>isFinite</code> はグローバルオブジェクトの関数プロパティです。</p>
+
+<p>この関数を使用すると、ある数値が有限数かどうかを判定できます。 <code>isFinite</code> 関数はその引数内の数値を調査します。この関数は、引数が <code>NaN</code>、正の無限大、負の無限大のいずれかの場合に <code>false</code> を返し、それ以外は <code>true</code> を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_isFinite" name="Using_isFinite">isFinite の使用</h3>
+
+<pre class="brush: js notranslate">isFinite(Infinity); // false
+isFinite(NaN); // false
+isFinite(-Infinity); // false
+
+isFinite(0); // true
+isFinite(2e64); // true
+isFinite(910); // true
+
+isFinite(null); // true が返される、より堅牢性の高い
+ // Number.isFinite(null) では false となる
+
+isFinite('0'); // true が返される、より堅牢性の高い
+ // Number.isFinite("0") では false となる
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-isfinite-number', 'isFinite')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.isFinite")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.isFinite()")}}</li>
+ <li>{{jsxref("Number.NaN")}}</li>
+ <li>{{jsxref("Number.POSITIVE_INFINITY")}}</li>
+ <li>{{jsxref("Number.NEGATIVE_INFINITY")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/isnan/index.html b/files/ja/web/javascript/reference/global_objects/isnan/index.html
new file mode 100644
index 0000000000..7f0de4c76e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/isnan/index.html
@@ -0,0 +1,115 @@
+---
+title: isNaN()
+slug: Web/JavaScript/Reference/Global_Objects/isNaN
+tags:
+ - JavaScript
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/isNaN
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p><code><strong>isNaN()</strong></code> 関数は引数が {{jsxref("NaN")}} (非数) かどうかを判定します。<code>isNaN</code> 関数の型強制は<a href="#Description">興味深いルール</a>を持つことに注意してください。値が非数かどうかを判定する代用方法として、ECMAScript 2015 で定義されている {{jsxref("Number.isNaN()")}} が使用できます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-isnan.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">isNaN(<var>value</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>value</code></dt>
+ <dd>テストされる値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>もし引数が {{jsxref("NaN")}} であるならば <strong><code>true</code></strong> を返し, そうでなければ <strong><code>false</code></strong> を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<h3 id="The_necessity_of_an_isNaN_function" name="The_necessity_of_an_isNaN_function">isNaN 関数の必要性</h3>
+
+<p>JavaScript にあるその他すべての値とは違い、ある数値が {{jsxref("NaN")}} であるかの判定に等値性評価演算子(== と ===)を使用することはできません。なぜなら <code>NaN == NaN</code> と <code>NaN === NaN</code> はどちらも <code>false</code> と評価されるからです。そこで、<code>isNaN</code> が必要となります。</p>
+
+<h3 id="Origin_of_NaN_values" name="Origin_of_NaN_values">NaN 値の生成条件</h3>
+
+<p><code>NaN</code> の値は算術演算の結果が<strong>未定義</strong>か<strong>表現不可能な</strong>値となった時に生成されます。こうした値が常にオーバーフロー状態を表現するわけではありません。<code>NaN</code> はプリミティブな数値が利用不可能といった、非数値を数値へと型強制した結果生成されることもあります。</p>
+
+<p>例えば、ゼロをゼロ除算した場合の結果は <code>NaN</code> になりますが、その他の数をゼロ除算した場合は異なります。</p>
+
+<h3 id="Confusing_special-case_behavior" name="Confusing_special-case_behavior">特殊な場合における厄介な動作</h3>
+
+<p><code>isNaN</code> 関数の定義はごく初期のバージョン以降、数値ではない引数における振る舞いが分かりにくいものとなっていました。<code>isNaN</code> 関数の引数が<a href="http://es5.github.com/#x8.5" title="http://es5.github.com/#x8.5">数値型</a>ではない場合、その値はまず数へと型強制されます。その結果の値はその後 {{jsxref("NaN")}} かどうかがテストされます。このようにして、数値型に型強制される際に結果が NaN ではない数値となる非数値(とりわけ型強制されると 0 や 1 の値になる空文字列や真偽値プリミティブ)に対しては、予想外なことに "false" が返されます{{訳注("「NaN でない」という結果から「数値である」と誤って解釈されてしまう")}}。無論、例えば空文字列は「数ではありません」。この混乱は、"not a number" (数ではない)というこの用語が IEEE-754 浮動小数点数定義で表現された数において特別な意味があるという事実に起因しています。この関数は、「この値を数値型に型強制した場合、IEEE-754 における 'Not A Number' という値になりますか?」という質問に答えるものとして解釈すべきです。</p>
+
+<p>ECMAScript 2015 では {{jsxref("Number.isNaN()")}} 関数が存在します。<code>Number.isNaN(x)</code> は <code>x</code> が <code>NaN</code> かどうかをテストする確実な方法です。しかしながら <code>Number.isNaN</code> においても、<code>NaN</code> の意味は単純ではない明確な数値的意味を持つ "not a number" のままです。<code>Number.isNaN</code> が利用できない場合、<code>x</code> が <code>NaN</code> かどうかを確実にテストする代わりの方法として <code>(x != x)</code> という式があります。この式の結果は信頼性のない <code>isNaN</code> が引き起こす誤検出の影響を受けません。</p>
+
+<p><code>isNaN</code> に対する polyfill の一つの例は以下のようになります(この polyfill は <code>NaN</code> が自分自身と常に等しくならないという特徴を利用しています):</p>
+
+<pre class="brush: js notranslate">var isNaN = function(value) {
+    var n = Number(value);
+    return n !== n;
+};</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js notranslate">isNaN(NaN); // true
+isNaN(undefined); // true
+isNaN({}); // true
+
+isNaN(true); // false
+isNaN(null); // false
+isNaN(37); // false
+
+// strings
+isNaN('37'); // false: "37" は非数でない数値 37 に変換される
+isNaN('37.37'); // false: "37.37" は非数でない数値 37.37 に変換される
+isNaN("37,5"); // true
+isNaN('123ABC'); // true:  parseInt("123ABC") の結果は 123、しかし Number("123ABC") の結果は NaN
+isNaN(''); // false: 空文字列は非数でない 0 に変換される
+isNaN(' '); // false: 半角スペースからなる文字列は非数でない 0 に変換される
+
+// dates
+isNaN(new Date()); // false
+isNaN(new Date().toString()); // true
+
+// isNaN が信頼性に欠ける理由となる誤検出の例
+isNaN('blabla'); // true: "blabla" が数値に変換される。
+ // 数値への変換が失敗し NaN が返される。
+</pre>
+
+<h3 id="Useful_special-case_behavior" name="Useful_special-case_behavior">特殊な場合における便利な動作</h3>
+
+<p><code>isNaN()</code> のふるまいを考慮した別の使用方法があります。<code>isNaN(x)</code> が <code>false</code> を返す場合、<code>NaN</code> を返すことなく算術式内で <code>x</code> を使用できます。<code>true</code> を返す場合、<code>x</code> を使用すると全ての算術式で <code>NaN</code> を返すことになります。これはつまり、JavaScript において <code>isNaN(x) == true</code> という式は、<code>x - 0</code> という式が <code>NaN</code> を返すかどうか、というケースと同等である(JavaScript では <code>x - 0 == NaN</code> は常に false を返すため、このことを確認できませんが)ということです。実際、<code>isNaN(x)</code>、<code>isNaN(x - 0)</code>、<code>isNaN(Number(x))</code>、<code>Number.isNaN(x - 0)</code>、そして <code>Number.isNaN(Number(x))</code> は常に同じ値を返し、JavaScript では <code>isNaN(x)</code> がこれらの条件を表す最も短い形式となります。</p>
+
+<p>例えばこの動作を使って、ある関数への引数が算術処理可能か(数値として利用できるか)どうかをテストするのに利用し、そうでない場合はデフォルト値などを与えるようにできます。この方法によりコンテキスト次第で値を暗黙的に変換する汎用性の高い JavaScript 関数を作成できます。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-isnan-number', 'isNaN')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.isNaN")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("NaN")}}</li>
+ <li>{{jsxref("Number.isNaN()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/iterator/index.html b/files/ja/web/javascript/reference/global_objects/iterator/index.html
new file mode 100644
index 0000000000..3a641ff7d9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/iterator/index.html
@@ -0,0 +1,95 @@
+---
+title: Iterator
+slug: Web/JavaScript/Reference/Global_Objects/Iterator
+tags:
+ - Deprecated
+ - JavaScript
+ - Legacy Iterator
+ - Reference
+translation_of: Archive/Web/Iterator
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<div class="warning"><strong>非標準。</strong> <code><strong>Iterator</strong></code> 関数は SpiderMonkey固有の機能で、ある時点で削除されます。将来向きの用途に対して、<a href="/docs/Web/JavaScript/Reference/Statements/for...of" title="/docs/Web/JavaScript/Reference/Statements/for...of">for..of</a>ループと<a href="/docs/Web/JavaScript/Guide/The_Iterator_protocol">iterator protocol</a>を使用することを検討してください。</div>
+
+<h2 id="概要">概要</h2>
+
+<p>レガシーイテレータプロトコルを実装し、オブジェクトの列挙可能なプロパティに対して反復するオブジェクトを返します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">Iterator(<var>object</var>, [keyOnly])</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>object</code></dt>
+ <dd>プロパティを反復処理するオブジェクト。</dd>
+ <dt><code>keyOnly</code></dt>
+ <dd><code>keyOnly</code> が truthy な値である場合は、<code>Iterator.prototype.next</code> が <code>property_name</code> のみ返します。</dd>
+</dl>
+
+<h2 id="説明">説明</h2>
+
+<p>使用方法の概要が<a href="/docs/JavaScript/Guide/Iterators_and_Generators" title="/docs/JavaScript/Guide/Iterators_and_Generators">Iterators and Generators</a>ページで提供されています。</p>
+
+<h2 id="メソッド">メソッド</h2>
+
+<dl>
+ <dt><code><strong>Iterator.prototype.next</strong></code></dt>
+ <dd><code>[property_name, property_value]</code>フォーマットで次のアイテムを返します。それ以上のアイテムが存在しない場合、<code><a href="/docs/Web/JavaScript/Reference/Global_Objects/StopIteration">StopIteration</a></code>をスローします。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<h3 id="オブジェクトのプロパティを反復処理する">オブジェクトのプロパティを反復処理する</h3>
+
+<pre class="brush: js">var a = {
+ x: 10,
+ y: 20,
+};
+var iter = Iterator(a);
+console.log(iter.next()); // ["x", 10]
+console.log(iter.next()); // ["y", 20]
+console.log(iter.next()); // throws StopIteration
+</pre>
+
+<h3 id="レガシーデストラクタfor-in文を使用してオブジェクトのプロパティを反復処理する">レガシーデストラクタ<code>for-in</code>文を使用してオブジェクトのプロパティを反復処理する</h3>
+
+<pre class="brush: js">var a = {
+ x: 10,
+ y: 20,
+};
+
+for (var [name, value] in Iterator(a)) {
+ console.log(name, value); // x 10
+ // y 20
+}
+</pre>
+
+<h3 id="for-ofとともにイテレータを使用する">for-ofとともにイテレータを使用する</h3>
+
+<pre class="brush: js">var a = {
+ x: 10,
+ y: 20,
+};
+
+for (var [name, value] of Iterator(a)) { // @@iterator is used
+ console.log(name, value); // x 10
+ // y 20
+}</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<p>非標準。すべての現在の仕様書でサポートされていません。</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>サポートされていません。バージョン 57 より前の Firefox でサポートしていました。</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/docs/JavaScript/Guide/Iterators_and_Generators" title="/en-US/docs/JavaScript/Guide/Iterators_and_Generators">Iterators and Generators</a></li>
+ <li><code><a href="/docs/Web/JavaScript/Reference/Global_Objects/StopIteration">StopIteration</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/json/index.html b/files/ja/web/javascript/reference/global_objects/json/index.html
new file mode 100644
index 0000000000..a6aced23b1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/json/index.html
@@ -0,0 +1,161 @@
+---
+title: JSON
+slug: Web/JavaScript/Reference/Global_Objects/JSON
+tags:
+ - JSON
+ - JavaScript
+ - Namespace
+ - Object
+ - Reference
+ - 名前空間
+translation_of: Web/JavaScript/Reference/Global_Objects/JSON
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>JSON</code></strong> オブジェクトは、 <a class="external" href="https://json.org/">JavaScript Object Notation</a> ({{glossary("JSON")}}) をパースするメソッドや、値を JSON に変換するメソッドを持ちます。これは呼び出しや構築をすることができず、また2つのメソッドプロパティを除いて、それ自身に興味深い機能性はありません。</span></p>
+
+<h2 id="JavaScript_と_JSON_の違い">JavaScript と JSON の違い</h2>
+
+<p>JSON は、オブジェクト、配列、数値、文字列、真偽値、そして {{jsxref("null")}} をシリアライズする構文です。これは JavaScript の構文に基づいていますが、区別されるものです。ある JavaScript が JSON であるわけでは<em>ありません</em>。</p>
+
+<dl>
+ <dt><strong>Objects と Arrays</strong></dt>
+ <dd>プロパティ名は二重引用符で括った文字列にしなければなりません。また、<a href="/ja/docs/Web/JavaScript/Reference/Trailing_commas">末尾にカンマ</a>を置いてはいけません。</dd>
+ <dt><strong>Numbers</strong></dt>
+ <dd>先頭にゼロを置くことは禁止されています。また、小数点は1桁以上の数字の後ろに置かなければなりません。 <code>NaN</code> と <code>Infinity</code> には対応していません。</dd>
+ <dt><strong>あらゆる JSON のテキストは有効な JavaScript の式です...</strong></dt>
+ <dd>...ただし、 <a href="https://github.com/tc39/proposal-json-superset">proposal to make all JSON text valid ECMA-262</a> を実装した JavaScript エンジンのみでの話です。この提案を実装していないエンジンでは、 U+2028 LINE SEPARATOR と U+2029 PARAGRAPH SEPARATOR は JSON の文字列リテラルとプロパティのキーでは許されますが、これらの機能を JavaScript 文字列リテラルの中で使用すると {{jsxref("SyntaxError")}} になります。</dd>
+</dl>
+
+<p>{{jsxref("JSON.parse()")}} が文字列を JSON として解釈し、 {{jsxref("eval")}} が文字列を JavaScript として実行するこの例を考えてみてください。</p>
+
+<pre class="brush: js notranslate">let code = '"\u2028\u2029"'
+JSON.parse(code) // どのエンジンでも "\u2028\u2029" と評価される
+eval(code) // 古いエンジンでは SyntaxError が発生する
+</pre>
+
+<p>他の違いとしては、二重引用符で囲まれた文字列のみを許可していることや、 {{jsxref("undefined")}} やコメントの規定がないことなどが挙げられます。 JSON に基づいたより人間に優しい設定フォーマットを使いたい場合、 Babel コンパイラーによって使われる <a href="https://json5.org/">JSON5</a> と、より一般的に使われる <a href="https://en.wikipedia.org/wiki/YAML">YAML</a> があります。</p>
+
+<h3 id="Full_JSON_syntax" name="Full_JSON_syntax">JSON の完全な構文</h3>
+
+<p>JSON の完全な構文は以下のとおりです。</p>
+
+<pre class="syntaxbox notranslate"><var>JSON</var> = <strong>null</strong>
+ <em>or</em> <strong>true</strong> <em>or</em> <strong>false</strong>
+ <em>or</em> <var>JSONNumber</var>
+ <em>or</em> <var>JSONString</var>
+ <em>or</em> <var>JSONObject</var>
+ <em>or</em> <var>JSONArray</var>
+
+<var>JSONNumber</var> = <strong>-</strong> <var>PositiveNumber</var>
+ <em>or</em> <var>PositiveNumber</var>
+<var>PositiveNumber</var> = DecimalNumber
+ <em>or</em> <var>DecimalNumber</var> <strong>.</strong> <var>Digits</var>
+ <em>or</em> <var>DecimalNumber</var> <strong>.</strong> <var>Digits</var> <var>ExponentPart</var>
+ <em>or</em> <var>DecimalNumber</var> <var>ExponentPart</var>
+<var>DecimalNumber</var> = <strong>0</strong>
+ <em>or</em> <var>OneToNine</var> <var>Digits</var>
+<var>ExponentPart</var> = <strong>e</strong> <var>Exponent</var>
+ <em>or</em> <strong>E</strong> <var>Exponent</var>
+<var>Exponent</var> = <var>Digits</var>
+ <em>or</em> <strong>+</strong> <var>Digits</var>
+ <em>or</em> <strong>-</strong> <var>Digits</var>
+<var>Digits</var> = <var>Digit</var>
+ <em>or</em> <var>Digits</var> <var>Digit</var>
+<var>Digit</var> = <strong>0</strong> through <strong>9</strong>
+<var>OneToNine</var> = <strong>1</strong> through <strong>9</strong>
+
+<var>JSONString</var> = <strong>""</strong>
+ <em>or</em> <strong>"</strong> <var>StringCharacters</var> <strong>"</strong>
+<var>StringCharacters</var> = <var>StringCharacter</var>
+ <em>or</em> <var>StringCharacters</var> <var>StringCharacter</var>
+<var>StringCharacter</var> = any character
+ <em>except</em> <strong>"</strong> <em>or</em> <strong>\</strong> <em>or</em> U+0000 through U+001F
+ <em>or</em> <var>EscapeSequence</var>
+<var>EscapeSequence</var> = <strong>\"</strong> <em>or</em> <strong>\/</strong> <em>or</em> <strong>\\</strong> <em>or</em> <strong>\b</strong> <em>or</em> <strong>\f</strong> <em>or</em> <strong>\n</strong> <em>or</em> <strong>\r</strong> <em>or</em> <strong>\t</strong>
+ <em>or</em> <strong>\u</strong> <var>HexDigit</var> <var>HexDigit</var> <var>HexDigit</var> <var>HexDigit</var>
+<var>HexDigit</var> = <strong>0</strong> through <strong>9</strong>
+ <em>or</em> <strong>A</strong> through <strong>F</strong>
+ <em>or</em> <strong>a</strong> through <strong>f</strong>
+
+<var>JSONObject</var> = <strong>{</strong> <strong>}</strong>
+ <em>or</em> <strong>{</strong> <var>Members</var> <strong>}</strong>
+<var>Members</var> = <var>JSONString</var> <strong>:</strong> <var>JSON</var>
+ <em>or</em> <var>Members</var> <strong>,</strong> <var>JSONString</var> <strong>:</strong> <var>JSON</var>
+
+<var>JSONArray</var> = <strong>[</strong> <strong>]</strong>
+ <em>or</em> <strong>[</strong> <var>ArrayElements</var> <strong>]</strong>
+<var>ArrayElements</var> = <var>JSON</var>
+ <em>or</em> <var>ArrayElements</var> <strong>,</strong> <var>JSON</var>
+</pre>
+
+<p>重要でない{{glossary("whitespace", "ホワイトスペース")}}は、基本的に任意の場所に置くことができますが、 <code><var>JSONNumber</var></code> (数値に空白を含んではいけません) や <code><var>JSONString</var></code> (一致する文字であると解釈されるか、エラーが発生します) の内部を除きます。ホワイトスペースとして有効な文字はタブ文字 (<a href="http://unicode-table.com/en/0009/">U+0009</a>)、キャリッジリターン (<a href="http://unicode-table.com/en/000D/">U+000D</a>)、ラインフィード (<a href="http://unicode-table.com/en/000A/">U+000A</a>)、空白 (<a href="http://unicode-table.com/en/0020/">U+0020</a>) のみです。</p>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("JSON.parse()", "JSON.parse(<var>text</var>[, <var>reviver</var>])")}}</dt>
+ <dd>文字列 <code><var>text</var></code> を JSON として解析し、オプションで生成された値とそのプロパティを変換し、値を返します。 JavaScript と JSON の違いに関連するものを含め、 JSON の構文に違反すると {{jsxref("SyntaxError")}} が発生します。 <code><var>reviver</var></code> オプションを使用すると、他のデータ型を表すために使われた <code><var>replacer</var></code> を解釈することができます。</dd>
+ <dt>{{jsxref("JSON.stringify()", "JSON.stringify(<var>value</var>[, <var>replacer</var>[, <var>space</var>]])")}}</dt>
+ <dd>指定した値に対応する JSON 文字列を返します。オプションで、特定のプロパティのみを含むか、ユーザー定義の方法でプロパティ値を置き換えることもできます。既定では、すべての {{jsxref("undefined")}} のインスタンスは {{jsxref("null")}} に置き換えられ、その他の対応していないネイティブデータ型は打ち切られます。 <code><var>replacer</var></code> オプションでは、他の動作を指定することができます。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<h3 id="JSONの例">JSONの例</h3>
+
+<pre class="brush: json notranslate">{
+  "browsers": {
+    "firefox": {
+      "name": "Firefox",
+      "pref_url": "about:config",
+      "releases": {
+        "1": {
+          "release_date": "2004-11-09",
+          "status": "retired",
+          "engine": "Gecko",
+          "engine_version": "1.7"
+        }
+ }
+ }
+ }
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-json-object', 'JSON')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.JSON")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.prototype.toJSON()")}}</li>
+</ul>
+
+<h2 id="Tools" name="Tools">ツール</h2>
+
+<ul>
+ <li><a href="http://www.jsondiff.com/">JSON Diff</a> checker</li>
+ <li><a href="http://jsonbeautifier.org/">JSON Beautifier/editor</a></li>
+ <li><a href="http://jsonparser.org/">JSON Parser</a></li>
+ <li><a href="https://tools.learningcontainer.com/json-validator/">JSON Validator</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/json/parse/index.html b/files/ja/web/javascript/reference/global_objects/json/parse/index.html
new file mode 100644
index 0000000000..bb6736a553
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/json/parse/index.html
@@ -0,0 +1,219 @@
+---
+title: JSON.parse()
+slug: Web/JavaScript/Reference/Global_Objects/JSON/parse
+tags:
+ - ECMAScript 5
+ - JSON
+ - JavaScript
+ - Method
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/JSON/parse
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>JSON.parse()</code></strong> メソッドは文字列を JSON として解析し、文字列によって記述されている JavaScript の値やオブジェクトを構築します。任意の <strong>reviver</strong> 関数で、生成されたオブジェクトが返される前に変換を実行することができます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/json-parse.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">JSON.parse(<var>text</var>[, <var>reviver</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>text</var></code></dt>
+ <dd>JSON として解析する文字列。JSON の構文の説明は {{jsxref("JSON")}} オブジェクトを参照してください。</dd>
+ <dt><code><var>reviver</var></code> {{optional_inline}}</dt>
+ <dd>もし関数である場合、解析により作り出された元の値を、オブジェクトを返す前に変換する方法を指示します。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Object")}}, {{jsxref("Array")}}, 文字列, 数値, 論理値, null 値のいずれかで、指定された JSON の <code><var>text</var></code> に対応する値です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>解析する文字列が有効な JSON でない場合、{{jsxref("SyntaxError")}} 例外が発生します。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">// From https://github.com/douglascrockford/JSON-js/blob/master/json2.js
+if (typeof JSON.parse !== "function") {
+    var rx_one = /^[\],:{}\s]*$/;
+    var rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;
+    var rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
+    var rx_four = /(?:^|:|,)(?:\s*\[)+/g;
+    var rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+    JSON.parse = function(text, reviver) {
+
+        // The parse method takes a text and an optional reviver function, and returns
+        // a JavaScript value if the text is a valid JSON text.
+
+        var j;
+
+        function walk(holder, key) {
+
+            // The walk method is used to recursively walk the resulting structure so
+            // that modifications can be made.
+
+            var k;
+            var v;
+            var value = holder[key];
+            if (value &amp;&amp; typeof value === "object") {
+                for (k in value) {
+                    if (Object.prototype.hasOwnProperty.call(value, k)) {
+                        v = walk(value, k);
+                        if (v !== undefined) {
+                            value[k] = v;
+                        } else {
+                            delete value[k];
+                        }
+                    }
+                }
+            }
+            return reviver.call(holder, key, value);
+        }
+
+
+        // Parsing happens in four stages. In the first stage, we replace certain
+        // Unicode characters with escape sequences. JavaScript handles many characters
+        // incorrectly, either silently deleting them, or treating them as line endings.
+
+        text = String(text);
+        rx_dangerous.lastIndex = 0;
+        if (rx_dangerous.test(text)) {
+            text = text.replace(rx_dangerous, function(a) {
+                return (
+                    "\\u" +
+                    ("0000" + a.charCodeAt(0).toString(16)).slice(-4)
+                );
+            });
+        }
+
+        // In the second stage, we run the text against regular expressions that look
+        // for non-JSON patterns. We are especially concerned with "()" and "new"
+        // because they can cause invocation, and "=" because it can cause mutation.
+        // But just to be safe, we want to reject all unexpected forms.
+
+        // We split the second stage into 4 regexp operations in order to work around
+        // crippling inefficiencies in IE's and Safari's regexp engines. First we
+        // replace the JSON backslash pairs with "@" (a non-JSON character). Second, we
+        // replace all simple value tokens with "]" characters. Third, we delete all
+        // open brackets that follow a colon or comma or that begin the text. Finally,
+        // we look to see that the remaining characters are only whitespace or "]" or
+        // "," or ":" or "{" or "}". If that is so, then the text is safe for eval.
+
+        if (
+            rx_one.test(
+                text
+                .replace(rx_two, "@")
+                .replace(rx_three, "]")
+                .replace(rx_four, "")
+            )
+        ) {
+
+            // In the third stage we use the eval function to compile the text into a
+            // JavaScript structure. The "{" operator is subject to a syntactic ambiguity
+            // in JavaScript: it can begin a block or an object literal. We wrap the text
+            // in parens to eliminate the ambiguity.
+
+            j = eval("(" + text + ")");
+
+            // In the optional fourth stage, we recursively walk the new structure, passing
+            // each name/value pair to a reviver function for possible transformation.
+
+            return (typeof reviver === "function") ?
+                walk({
+                    "": j
+                }, "") :
+                j;
+        }
+
+        // If the text is not JSON parseable, then a SyntaxError is thrown.
+
+        throw new SyntaxError("JSON.parse");
+    };
+}</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_JSON.parse" name="Using_JSON.parse">JSON.parse() の使用</h3>
+
+<pre class="brush: js notranslate">JSON.parse('{}'); // {}
+JSON.parse('true'); // true
+JSON.parse('"foo"'); // "foo"
+JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
+JSON.parse('null'); // null
+</pre>
+
+<h3 id="Using_the_reviver_parameter" name="Using_the_reviver_parameter">reviver 引数の使用</h3>
+
+<p><code><var>reviver</var></code> が指定された場合、解析によって計算された値は、オブジェクトを返す前に<em>変換</em>されます。正確に言えば、計算された値とそのすべてのプロパティ(最もネストされたプロパティから始まり、元の値へと進みます)はそれぞれ <code><var>reviver</var></code> を通して変換されます。<code><var>reviver</var></code> は処理されるプロパティを含むオブジェクトが <code>this</code> として、また文字列のプロパティ名とプロパティの値を引数として呼び出されます。もし <code><var>reviver</var></code> 関数が {{jsxref("undefined")}} を返したり、何の値も返さなかったり(例えば実行が関数の終わりで{{訳注('<code>return</code> 文によってではなくて')}}終了した場合)した場合、そのプロパティはオブジェクトから削除されます。そうでなければそのプロパティはその戻り値として再定義されます。</p>
+
+<p>もし <code><var>reviver</var></code> が一部の値だけを変換して他を変換しないのであれば、必ずすべての変換されない値をそのまま返すようにします。そうしなければ、それらの値は結果のオブジェクトから削除されるでしょう。</p>
+
+<pre class="brush: js notranslate">JSON.parse('{"p": 5}', (key, value) =&gt;
+ typeof value === 'number'
+ ? value * 2 // 数値ならば値の2倍を返す
+ : value // それ以外ならば変更しない
+);
+
+// { p: 10 }
+
+JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) =&gt; {
+ console.log(key); // 現在のプロパティ名を出力する。最後は ""。
+ return value; // 変更されていないプロパティの値を返す。
+});
+
+// 1
+// 2
+// 4
+// 6
+// 5
+// 3
+// ""
+</pre>
+
+<h3 id="JSON.parse_does_not_allow_trailing_commas" name="JSON.parse_does_not_allow_trailing_commas">JSON.parse() は末尾のカンマを許容しない</h3>
+
+<pre class="example-bad brush: js example-bad notranslate">// 両方とも SyntaxError をスローする
+JSON.parse('[1, 2, 3, 4, ]');
+JSON.parse('{"foo" : 1, }');
+</pre>
+
+<h3 id="JSON.parse_does_not_allow_single_quotes" name="JSON.parse_does_not_allow_single_quotes">JSON.parse() は単一引用符を許容しない</h3>
+
+<pre class="example-bad brush: js example-bad notranslate">// SyntaxError が発生
+JSON.parse("{'foo': 1}");
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-json.parse', 'JSON.parse')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.JSON.parse")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("JSON.stringify()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/json/stringify/index.html b/files/ja/web/javascript/reference/global_objects/json/stringify/index.html
new file mode 100644
index 0000000000..ad2a1cd2ee
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/json/stringify/index.html
@@ -0,0 +1,364 @@
+---
+title: JSON.stringify()
+slug: Web/JavaScript/Reference/Global_Objects/JSON/stringify
+tags:
+ - JSON
+ - JavaScript
+ - Method
+ - Objects
+ - Reference
+ - stringify
+translation_of: Web/JavaScript/Reference/Global_Objects/JSON/stringify
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>JSON.stringify()</code></strong> メソッドは、ある JavaScript のオブジェクトや値を JSON 文字列に変換します。置き換え関数を指定して値を置き換えたり、置き換え配列を指定して指定されたプロパティのみを含むようにしたりすることもできます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/json-stringify.html")}}</div>
+
+<p class="hidden">この対話型サンプルのソースファイルは GitHub リポジトリに格納されています。対話型サンプルプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">JSON.stringify(<var>value</var>[, <var>replacer</var>[, <var>space</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>JSON 文字列に変換する値です。</dd>
+ <dt><code><var>replacer</var></code> {{optional_inline}}</dt>
+ <dd>文字列化の手順の挙動を変更する関数、または値のオブジェクトを JSON 文字列に含めるプロパティを選択する許可リストとして機能する {{JSxRef("String")}} と {{JSxRef("Number")}} の配列。もしこの値が {{JSxRef("null")}} であるか提供されなかった場合は、結果の文字列にオブジェクトのすべてのプロパティが含まれます。</dd>
+ <dt><code><var>space</var></code> {{optional_inline}}</dt>
+ <dd>出力する JSON 文字列に可読性を目的に空白を挿入するために使う {{JSxRef("String")}} または {{JSxRef("Number")}} オブジェクトです。
+ <p>これが <code>Number</code> のときは、空白として使う空白文字の数を示します。この数の上限は10です (それより大きい数値は、単に <code>10</code> となります)。 1 より小さい値は空白を使わないことを示します。</p>
+
+ <p>これが <code>String</code> のときは、その文字列 (10文字より長い場合はその最初の10文字) が空白として使われます。もしこの引数が提供されない (または null である) 場合は、空白は使用されません。</p>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた値を表現する JSON 文字列。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li>{{JSxRef("TypeError")}} ("cyclic object value") 例外は、循環参照が見つかった時に発生します。</li>
+ <li>{{JSxRef("TypeError")}} ("BigInt value can't be serialized in JSON") 例外は、 {{JSxRef("BigInt")}} 値を文字列化しようとしたときに発生します。</li>
+</ul>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>JSON.stringify()</code> は値をそれを表す JSON 表記に変換します。</p>
+
+<ul>
+ <li>値が <code><a href="#toJSON_behavior">toJSON()</a></code> メソッドを持っている場合は、データがどのようにシリアライズされるかを定義する必要があります。</li>
+ <li>{{JSxRef("Boolean")}}、 {{JSxRef("Number")}}、 {{JSxRef("String")}} の各オブジェクトは、文字列化の際に慣習的な変換セマンティクスに従い、対応するプリミティブ値に変換されます。</li>
+ <li>{{JSxRef("undefined")}}、 関数 ({{JSxRef("Function")}})、シンボル ({{JSxRef("Symbol")}}) は有効な JSON 値ではありません。変換中にそのような値に遭遇した場合は、 (オブジェクトの中で発見された場合は) 省略されたり、 (配列の中で見つかった場合は) {{JSxRef("null")}} に変換されたりします。 <code>JSON.stringify</code> は <code>JSON.stringify(function(){})</code> や <code>JSON.stringify(undefined)</code> のように「純粋」な値を渡した場合に <code>undefined</code> を返すことがあります。</li>
+ <li>シンボル ({{JSxRef("Symbol")}}) がキーとなっているプロパティはすべて、 <code><var>replacer</var></code> 関数を使用する場合でも完全に無視されます。</li>
+ <li>{{JSxRef("Date")}} のインスタンスは文字列を返す <code>toJSON()</code> を実装しています (<code>date.toISOString()</code> と同じです)。したがって、これらは文字列として扱われます。</li>
+ <li>{{JSxRef("Infinity")}} および {{JSxRef("NaN")}} の数値は、 {{JSxRef("null")}} の値と同様、すべて <code>null</code> と見なされます。</li>
+ <li>その他のすべての {{JSxRef("Object")}} のインスタンスは ({{JSxRef("Map")}}, {{JSxRef("Set")}}, {{JSxRef("WeakMap")}}, {{JSxRef("WeakSet")}} を含め)、列挙可能なプロパティのみがシリアライズされます。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_JSON.stringify" name="Using_JSON.stringify">JSON.stringify の使用</h3>
+
+<pre class="brush: js notranslate">JSON.stringify({}); // '{}'
+JSON.stringify(true); // 'true'
+JSON.stringify('foo'); // '"foo"'
+JSON.stringify([1, 'false', false]); // '[1,"false",false]'
+JSON.stringify([NaN, null, Infinity]); // '[null,null,null]'
+JSON.stringify({ x: 5 }); // '{"x":5}'
+
+JSON.stringify(new Date(2006, 0, 2, 15, 4, 5))
+// '"2006-01-02T15:04:05.000Z"'
+
+JSON.stringify({ x: 5, y: 6 });
+// '{"x":5,"y":6}'
+JSON.stringify([new Number(3), new String('false'), new Boolean(false)]);
+// '[3,"false",false]'
+
+// 文字列がキーとなった配列要素は列挙可能ではなく、 JSON では意味をなさない
+let a = ['foo', 'bar'];
+a['baz'] = 'quux'; // a: [ 0: 'foo', 1: 'bar', baz: 'quux' ]
+JSON.stringify(a);
+// '["foo","bar"]'
+
+JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] });
+// '{"x":[10,null,null,null]}'
+
+// 標準データ構造
+JSON.stringify([new Set([1]), new Map([[1, 2]]), new WeakSet([{a: 1}]), new WeakMap([[{a: 1}, 2]])]);
+// '[{},{},{},{}]'
+
+// 型付き配列
+JSON.stringify([new Int8Array([1]), new Int16Array([1]), new Int32Array([1])]);
+// '[{"0":1},{"0":1},{"0":1}]'
+JSON.stringify([new Uint8Array([1]), new Uint8ClampedArray([1]), new Uint16Array([1]), new Uint32Array([1])]);
+// '[{"0":1},{"0":1},{"0":1},{"0":1}]'
+JSON.stringify([new Float32Array([1]), new Float64Array([1])]);
+// '[{"0":1},{"0":1}]'
+
+// toJSON()
+JSON.stringify({ x: 5, y: 6, toJSON(){ return this.x + this.y; } });
+// '11'
+
+// シンボル:
+JSON.stringify({ x: undefined, y: Object, z: Symbol('') });
+// '{}'
+JSON.stringify({ [Symbol('foo')]: 'foo' });
+// '{}'
+JSON.stringify({ [Symbol.for('foo')]: 'foo' }, [Symbol.for('foo')]);
+// '{}'
+JSON.stringify({ [Symbol.for('foo')]: 'foo' }, function(k, v) {
+ if (typeof k === 'symbol') {
+ return 'a symbol';
+ }
+});
+// undefined
+
+// 列挙可能でないプロパティ:
+JSON.stringify( Object.create(null, { x: { value: 'x', enumerable: false }, y: { value: 'y', enumerable: true } }) );
+// '{"y":"y"}'
+
+
+// BigInt の値は例外が発生
+JSON.stringify({x: 2n});
+// TypeError: BigInt value can't be serialized in JSON
+</pre>
+
+<h3 id="The_replacer_parameter" name="The_replacer_parameter">replacer 引数</h3>
+
+<p><code><var>replacer</var></code> 引数は関数または配列です。</p>
+
+<p><strong>関数の場合</strong>、 <var>key</var> と文字列化される <var>value</var> の2つの引数を取ります。キーをもつオブジェクトが <code><var>replacer</var></code> では <code>this</code> 引数として提供されます。</p>
+
+<p>最初、 <code><var>replacer</var></code> 関数が、文字列化されるオブジェクト自体を表すキーとして空文字列で呼び出されます。それから、文字列化されるオブジェクトのそれぞれのプロパティや配列に対して呼び出されます。</p>
+
+<p>これは、 JSON 文字列に加えるべき値を次のように返します。</p>
+
+<ul>
+ <li>数値 ({{JSxRef("Number")}}), 文字列 ({{JSxRef("String")}}), 論理値 ({{JSxRef("Boolean")}}), {{JSxRef("null")}} を返すと、その値を文字列化したものがプロパティの値として使用されます。</li>
+ <li>関数 ({{JSxRef("Function")}}), シンボル ({{JSxRef("Symbol")}}), {{JSxRef("undefined")}} を返すと、出力にはそのプロパティが含まれなくなります。</li>
+ <li>その他のオブジェクトを返した場合、そのオブジェクトはそれぞれのプロパティに <code><var>replacer</var></code> 関数を呼び出して再帰的に文字列化します。</li>
+</ul>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> <code><var>replacer</var></code> 関数を使用して配列から値を削除することはできません。 <code>undefined</code> や関数を返すと、代わりに <code>null</code> が使用されます。</p>
+</div>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> <code><var>replacer</var></code> が、オブジェクトが初期状態であるか、空文字列のキーを持つプロパティであるかを判別するには (どちらの場合もキーが空文字列になり、オブジェクトが値になる可能性があるので)、繰り返し回数を追跡しておく必要があります (繰り返しが1回を超えた場合、空文字列のキーであることが分かります)。</p>
+</div>
+
+<h4 id="Example_replacer_as_a_function" name="Example_replacer_as_a_function">関数としての replacer の例</h4>
+
+<pre class="brush: js notranslate">function replacer(key, value) {
+ // Filtering out properties
+ if (typeof value === 'string') {
+ return undefined;
+ }
+ return value;
+}
+
+var foo = {foundation: 'Mozilla', model: 'box', week: 45, transport: 'car', month: 7};
+JSON.stringify(foo, replacer);
+// '{"week":45,"month":7}'
+</pre>
+
+<h4 id="Example_replacer_as_an_array" name="Example_replacer_as_an_array">配列としての replacer の例</h4>
+
+<p><code><var>replacer</var></code> が配列である場合、その配列の値は結果の JSON 文字列に含めるプロパティの名前を示します。</p>
+
+<pre class="brush: js notranslate">JSON.stringify(foo, ['week', 'month']);
+// '{"week":45,"month":7}', "week" と "month" プロパティだけが保持される
+</pre>
+
+<h3 id="The_space_argument" name="The_space_argument">space 引数</h3>
+
+<p><code>space</code> 引数で最終的な文字列での空白の数を調整できます。</p>
+
+<ul>
+ <li><strong>数値であれば</strong>、レベルの階層がそれぞれその数の空白文字 (最大10文字) でインデントされます。</li>
+ <li><strong>文字列であれば</strong>、レベル階層がそれぞれこの文字列 (またはその最初の10文字) でインデントされます。</li>
+</ul>
+
+<pre class="brush: js notranslate">JSON.stringify({ a: 2 }, null, ' ');
+// '{
+// "a": 2
+// }'
+</pre>
+
+<p>タブ文字を使うと、標準的な表示の整形と同様になります。</p>
+
+<pre class="brush: js notranslate">JSON.stringify({ uno: 1, dos: 2 }, null, '\t');
+// returns the string:
+// '{
+// "uno": 1,
+// "dos": 2
+// }'
+</pre>
+
+<h3 id="toJSON_behavior" name="toJSON_behavior">toJSON() の挙動</h3>
+
+<p>文字列化されるオブジェクトに <code>toJSON</code> という名前の値に関数を持ったプロパティがある場合、その <code>toJSON()</code> メソッドで JSON の文字列化の挙動をカスタマイズできます。シリアライズされるオブジェクトの代わりに、その <code>toJSON()</code> メソッドが呼び出されたときの返値がシリアライズされます。 <code>JSON.stringify()</code> は <code>toJSON</code> に以下のどれか1つの引数をつけて呼び出します。</p>
+
+<ul>
+ <li>このオブジェクトがプロパティの値であった場合は、プロパティ名</li>
+ <li>配列内の値で会った場合は、配列のインデックス番号を文字列で</li>
+ <li><code>JSON.stringify()</code> がこのオブジェクトに対して直接呼び出された場合は、空文字列</li>
+</ul>
+
+<p>例</p>
+
+<pre class="brush: js notranslate">var obj = {
+ data: 'data',
+
+ toJSON (key) {
+ if (key)
+ return `Now I am a nested object under key '${key}'`;
+ else
+ return this;
+ }
+};
+
+JSON.stringify(obj);
+// '{"data":"data"}'
+
+JSON.stringify({ obj }); // Shorthand property names (ES2015).
+// '{"obj":"Now I am a nested object under key 'obj'"}'
+
+JSON.stringify([ obj ]);
+// '["Now I am a nested object under key '0'"]'
+</pre>
+
+<h3 id="循環参照をシリアライズした場合の_JSON.stringify_に関する問題">循環参照をシリアライズした場合の JSON.stringify() に関する問題</h3>
+
+<p><a href="https://www.json.org/">JSON 形式</a>はオブジェクト参照に対応していないため (<a href="http://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03">IETF 草稿</a>はありますが)、循環参照のあるオブジェクトをエンコードしようとすると {{JSxRef("TypeError")}} が発生します。</p>
+
+<pre class="brush: js example-bad notranslate">const circularReference = {};
+circularReference.myself = circularReference;
+
+// 循環参照をシリアライズすると "TypeError: cyclic object value" が発生
+JSON.stringify(circularReference);
+</pre>
+
+<p>循環参照をシリアライズするためには、これに対応したライブラリを使用したり (Douglas Crockford による <a href="https://github.com/douglascrockford/JSON-js/blob/master/cycle.js">cycle.js</a> など)、自分自身で解決策を実装したりする方法があります。循環参照を探索してシリアライズされた値に置き換える (または削除する) 必要があるでしょう。</p>
+
+<h3 id="Issue_with_plain_JSON.stringify_for_use_as_JavaScript" name="Issue_with_plain_JSON.stringify_for_use_as_JavaScript">JavaScript としての使用に際してのそのままの JSON.stringify の問題</h3>
+
+<p>従来、 JSON は <a href="http://timelessrepo.com/json-isnt-a-javascript-subset">JavaScript の完全に厳密なサブセットではありません</a>でした。文字コードポイント U+2028 LINE SEPARATOR (改行) と U+2029 PARAGRAPH SEPARATOR (改段落) は JSON テキスト内の文字列リテラルやプロパティ名に使用することができます。しかし、 JavsScript のテキスト内で同様の文脈では使用することができず、 Unicode エスケープを使用した <code>\u2028</code> および <code>\u2029</code> しか使うことができません。これは最近変更され、どちらのコードポイントも JSON と JavaScript の両方の文字列で使用することができるようになりました。</p>
+
+<p>したがって、古い JavaScript エンジンとの互換性が必要な場合は、 <code>JSON.stringify</code> から返された文字列を JavaScript の文字列に代入するために、直接 <code>eval</code> や <code>new Function</code> に渡したり、 <a href="https://ja.wikipedia.org/wiki/JSONP">JSONP</a> URL の一部として用いたりするのは危険です。次のユーティリティを使用することができます。</p>
+
+<pre class="brush: js notranslate">function jsFriendlyJSONStringify (s) {
+ return JSON.stringify(s).
+ replace(/\u2028/g, '\\u2028').
+ replace(/\u2029/g, '\\u2029');
+}
+
+var s = {
+ a: String.fromCharCode(0x2028),
+ b: String.fromCharCode(0x2029)
+};
+try {
+ eval('(' + JSON.stringify(s) + ')');
+} catch (e) {
+ console.log(e); // "SyntaxError: unterminated string literal"
+}
+
+// catch する必要はない
+eval('(' + jsFriendlyJSONStringify(s) + ')');
+
+// Firefox での console.log はコンソールにログ出力をする場合
+// Unicode エスケープを解除するので、alert を使う
+alert(jsFriendlyJSONStringify(s)); // {"a":"\u2028","b":"\u2029"}
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>注</strong>: 配列以外のオブジェクトのプロパティでは、特定の順番で文字列化されることは保証されていません。文字列化された同じオブジェクトの中でプロパティの順番に依存しないようにしてください。</p>
+</div>
+
+<pre class="brush: js notranslate">var a = JSON.stringify({ foo: "bar", baz: "quux" })
+//'{"foo":"bar","baz":"quux"}'
+var b = JSON.stringify({ baz: "quux", foo: "bar" })
+//'{"baz":"quux","foo":"bar"}'
+console.log(a !== b) // true
+
+// 一部の記憶関数は JSON.stringify を使用して引数をシリアライズしており、
+// 上記のような同じオブジェクトに出会った時にキャッチし損ねることがあります
+</pre>
+
+<h3 id="Example_of_using_JSON.stringify_with_localStorage" name="Example_of_using_JSON.stringify_with_localStorage">localStorage で JSON.stringify() を使った例</h3>
+
+<p>ユーザーが作成したオブジェクトを格納し、ブラウザーが閉じた後に復元できるようにしたい場合は以下の例が <code>JSON.stringify()</code> を適用した模範例です。</p>
+
+<pre class="brush: js notranslate">// JSON の一例を作成
+var session = {
+ 'screens': [],
+ 'state': true
+};
+session.screens.push({ 'name': 'screenA', 'width': 450, 'height': 250 });
+session.screens.push({ 'name': 'screenB', 'width': 650, 'height': 350 });
+session.screens.push({ 'name': 'screenC', 'width': 750, 'height': 120 });
+session.screens.push({ 'name': 'screenD', 'width': 250, 'height': 60 });
+session.screens.push({ 'name': 'screenE', 'width': 390, 'height': 120 });
+session.screens.push({ 'name': 'screenF', 'width': 1240, 'height': 650 });
+
+// JSON.stringify() で JSON 文字列に変換してから
+// session の名前で localStorage に保存
+localStorage.setItem('session', JSON.stringify(session));
+
+// JSON.stringify() で生成されて localStorage に保存された文字列を
+// 再び JSON オブジェクトに変換する方法の例
+var restoredSession = JSON.parse(localStorage.getItem('session'));
+
+// ここで変数 restoredSession には localStorage に保存されていた
+// オブジェクトが入っている
+console.log(restoredSession);
+</pre>
+
+<h3 id="Well-formed_JSON.stringify" name="Well-formed_JSON.stringify">Well-formed JSON.stringify()</h3>
+
+<p><a href="https://github.com/tc39/proposal-well-formed-stringify">well-formed JSON.stringify 仕様</a>を実装しているエンジンは、サロゲート文字 、 U+D800 から U+DFFF までのすべてのコードポイントを、リテラルではなく Unicode エスケープシーケンスを使用して文字列化します。この変更前は、入力にサロゲート文字が含まれている場合、 <code>JSON.stringify</code> はサロゲート文字をそのまま出力していました。このような文字列は妥当な UTF-8 または UTF-16 でエンコードされていませんでした。</p>
+
+<pre class="brush: js; no-line-numbers notranslate">JSON.stringify("\uD800"); // '"�"'</pre>
+
+<p>しかし、この変更で <code>JSON.stringify</code> は lone surrogates を JSON エスケープシーケンスによって表すようになり、妥当な UTF-8 または UTF-16 でエンコードすることができるようになりました。</p>
+
+<pre class="brush: js; no-line-numbers notranslate">JSON.stringify("\uD800"); // '"\\ud800"'</pre>
+
+<p>この変更では、サロゲート文字の Unicode エスケープをサロゲート文字と同一のものとして扱うため、 <code>JSON.stringify</code> の結果を、 JSON テキストを妥当である限りどのようなものでも受け付ける <code>JSON.parse</code> のような API に渡したときに後方互換性があります。 <code>JSON.stringify</code> の結果を直接解析する場合<em>のみ</em>、 <code>JSON.stringify</code> がこれらのコードポイントに対して2通りのエンコーディングをする可能性があることに注意して扱う必要があります。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-json.stringify', 'JSON.stringify')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.JSON.stringify")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("JSON.parse()")}}</li>
+ <li><a href="https://github.com/douglascrockford/JSON-js/blob/master/cycle.js">cycle.js</a> – <code>JSON.decycle</code> と <code>JSON.retrocycle</code> の2つの関数を導入します。これらは循環的な構造と DAG を、拡張されたレトロ互換性のある JSON 形式にエンコードおよびデコードすることができます。</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/@@iterator/index.html b/files/ja/web/javascript/reference/global_objects/map/@@iterator/index.html
new file mode 100644
index 0000000000..961f7acd85
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/@@iterator/index.html
@@ -0,0 +1,95 @@
+---
+title: 'Map.prototype[@@iterator]()'
+slug: Web/JavaScript/Reference/Global_Objects/Map/@@iterator
+tags:
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Map
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/@@iterator
+---
+<div>{{JSRef}}</div>
+
+<p class="seoSummary"><strong><code>@@iterator</code></strong> プロパティの初期値は、 {{jsxref("Map.prototype.entries()", "entries")}} メソッドの初期値と同じ関数オブジェクトです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-@@iterator.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>myMap</var>[Symbol.iterator]</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>マップの <strong>iterator</strong> 関数で、既定では {{jsxref("Map.prototype.entries()", "entries()")}} 関数です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_iterator" name="Using_iterator">[@@iterator]() の使用</h3>
+
+<pre class="brush:js notranslate">const myMap = new Map()
+myMap.set('0', 'foo')
+myMap.set(1, 'bar')
+myMap.set({}, 'baz')
+
+const mapIter = myMap[Symbol.iterator]()
+
+console.log(mapIter.next().value) // ["0", "foo"]
+console.log(mapIter.next().value) // [1, "bar"]
+console.log(mapIter.next().value) // [Object, "baz"]
+</pre>
+
+<h3 id="Using_iterator_with_for..of" name="Using_iterator_with_for..of">[@@iterator]() と for..of の併用</h3>
+
+<pre class="brush: js notranslate">const myMap = new Map()
+myMap.set('0', 'foo')
+myMap.set(1, 'bar')
+myMap.set({}, 'baz')
+
+for (const entry of myMap) {
+ console.log(entry)
+}
+// ["0", "foo"]
+// [1, "bar"]
+// [{}, "baz"]
+
+for (const [key, value] of myMap) {
+ console.log(`${key}: ${value}`)
+}
+// 0: foo
+// 1: bar
+// [Object]: baz
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map.prototype-@@iterator', 'Map.prototype[@@iterator]()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.@@iterator")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map.prototype.entries()")}}</li>
+ <li>{{jsxref("Map.prototype.keys()")}}</li>
+ <li>{{jsxref("Map.prototype.values()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/@@species/index.html b/files/ja/web/javascript/reference/global_objects/map/@@species/index.html
new file mode 100644
index 0000000000..4a428acdad
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/@@species/index.html
@@ -0,0 +1,64 @@
+---
+title: 'get Map[@@species]'
+slug: Web/JavaScript/Reference/Global_Objects/Map/@@species
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Map
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/@@species
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Map[@@species]</code></strong> アクセサープロパティは、 <code>Map</code> コンストラクターを返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>species アクセサープロパティは <code>Map</code> オブジェクトのデフォルトコンストラクターを返します。サブクラスのコンストラクターは、コンストラクターに代入して変更することによりオーバーライドすることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Species_in_ordinary_objects" name="Species_in_ordinary_objects">通常のオブジェクトの species</h3>
+
+<p>species プロパティはデフォルトコンストラクター関数を返しますので、 <code>Map</code> オブジェクトには <code>Map</code> コンストラクターを返します。</p>
+
+<pre class="brush: js notranslate">Map[Symbol.species]; // function Map()</pre>
+
+<h3 id="Species_in_derived_objects" name="Species_in_derived_objects">派生オブジェクトの species</h3>
+
+<p>派生したコレクションオブジェクトの中では (例えばカスタムマップである <code>MyMap</code>)、 <code>MyMap</code> の species は <code>MyMap</code> コンストラクターになっています。しかし、これをオーバーライドして、派生クラスのメソッド内で親の <code>Map</code> オブジェクトを返したい場合があります。</p>
+
+<pre class="brush: js notranslate">class MyMap extends Map {
+ // Overwrite MyMap species to the parent Map constructor
+ static get [Symbol.species]() { return Map; }
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-map-@@species', 'get Map [ @@species ]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.@@species")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map")}}</li>
+ <li>{{jsxref("Symbol.species")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/@@tostringtag/index.html b/files/ja/web/javascript/reference/global_objects/map/@@tostringtag/index.html
new file mode 100644
index 0000000000..74da140e51
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/@@tostringtag/index.html
@@ -0,0 +1,60 @@
+---
+title: 'Map.prototype[@@toStringTag]'
+slug: Web/JavaScript/Reference/Global_Objects/Map/@@toStringTag
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Map
+ - Property
+ - Prototype
+ - Reference
+ - プロパティ
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/@@toStringTag
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Map[@@toStringTag]</code></strong> プロパティは、 "Map" の初期値を持ちます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-@@tostringtag.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0,0,1)}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Map[Symbol.toStringTag]</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toStringTag" name="Using_toStringTag">toStringTag の使用</h3>
+
+<pre class="brush:js">Object.prototype.toString.call(new Map()) // "[object Map]"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map.prototype-@@tostringtag', 'Map.prototype[@@toStringTag]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.@@toStringTag")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Symbol.toStringTag")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/clear/index.html b/files/ja/web/javascript/reference/global_objects/map/clear/index.html
new file mode 100644
index 0000000000..266ab6f9fe
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/clear/index.html
@@ -0,0 +1,72 @@
+---
+title: Map.prototype.clear()
+slug: Web/JavaScript/Reference/Global_Objects/Map/clear
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Map
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/clear
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>clear()</code></strong> メソッドは <code>Map</code> オブジェクトからすべての要素を削除します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-clear.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>myMap</var>.clear();
+</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}}.</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_clear" name="Using_clear">clear() の使用</h3>
+
+<pre class="brush: js notranslate">var myMap = new Map();
+myMap.set('bar', 'baz');
+myMap.set(1, 'foo');
+
+myMap.size; // 2
+myMap.has('bar'); // true
+
+myMap.clear();
+
+myMap.size; // 0
+myMap.has('bar') // false
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map.prototype.clear', 'Map.prototype.clear')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.clear")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/delete/index.html b/files/ja/web/javascript/reference/global_objects/map/delete/index.html
new file mode 100644
index 0000000000..30dcc4c848
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/delete/index.html
@@ -0,0 +1,75 @@
+---
+title: Map.prototype.delete()
+slug: Web/JavaScript/Reference/Global_Objects/Map/delete
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Map
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/delete
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>delete()</code></strong> メソッドは <code>Map</code> オブジェクトから特定の要素を削除します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-delete.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>myMap</var>.delete(<var>key</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>key</var></code></dt>
+ <dd><code>Map</code> オブジェクトから削除する要素のキーです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>Map</code> オブジェクトの要素が削除されたら <code>true</code> を、要素が存在しなければ <code>false</code> を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_delete" name="Using_delete">delete() メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var myMap = new Map();
+myMap.set('bar', 'foo');
+
+myMap.delete('bar'); // 正常に削除出来れば true を返す
+myMap.has('bar'); // 存在しない要素を確認すると false を返す
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map.prototype.delete', 'Map.prototype.delete')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-map.prototype.delete', 'Map.prototype.delete')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.delete")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/entries/index.html b/files/ja/web/javascript/reference/global_objects/map/entries/index.html
new file mode 100644
index 0000000000..fd4710ebf5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/entries/index.html
@@ -0,0 +1,71 @@
+---
+title: Map.prototype.entries()
+slug: Web/JavaScript/Reference/Global_Objects/Map/entries
+tags:
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Map
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/entries
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>entries()</code></strong> メソッドは、挿入順で <code>Map</code> オブジェクトの要素に対する <code>[key, value]</code> ペアを含む新しい <a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators">Iterator</a> オブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-entries.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>myMap</var>.entries()</code></pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい {{jsxref("Map")}} の反復子オブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_entries" name="Using_entries">entries() の使用</h3>
+
+<pre class="brush:js notranslate">let myMap = new Map()
+myMap.set('0', 'foo')
+myMap.set(1, 'bar')
+myMap.set({}, 'baz')
+
+let mapIter = myMap.entries()
+
+console.log(mapIter.next().value) // ["0", "foo"]
+console.log(mapIter.next().value) // [1, "bar"]
+console.log(mapIter.next().value) // [Object, "baz"]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map.prototype.entries', 'Map.prototype.entries')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.entries")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map.prototype.keys()")}}</li>
+ <li>{{jsxref("Map.prototype.values()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/foreach/index.html b/files/ja/web/javascript/reference/global_objects/map/foreach/index.html
new file mode 100644
index 0000000000..9685b460bd
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/foreach/index.html
@@ -0,0 +1,107 @@
+---
+title: Map.prototype.forEach()
+slug: Web/JavaScript/Reference/Global_Objects/Map/forEach
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Map
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/forEach
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>forEach()</code></strong> メソッドは、指定された関数を <code>Map</code> オブジェクト内にあるキーと値のペアそれぞれに対して1回ずつ、挿入順に実行します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-foreach.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>myMap</var>.forEach(<var>callback</var>([<var>value</var>][, <var>key</var>][, <var>map</var>])[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>
+ <p><code><var>myMap</var></code> のそれぞれの項目に対して実行される関数。以下の引数を取ります。</p>
+
+ <dl>
+ <dt><code><var>value</var></code> {{Optional_Inline}}</dt>
+ <dd>それぞれの反復処理における値です。</dd>
+ <dt><code><var>key</var></code> {{Optional_Inline}}</dt>
+ <dd>それぞれの反復処理におけるキーです。</dd>
+ <dt><code><var>map</var></code> {{Optional_Inline}}</dt>
+ <dd>反復処理されるマップです (上記の構文ボックスでは <code><var>myMap</var></code> です)。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code> {{Optional_Inline}}</dt>
+ <dd><code><var>callback</var></code> の実行時に <code>this</code> として使用される値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}} です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>forEach</code> メソッドは、指定された関数 <code><var>callback</var></code> を、マップの実在するそれぞれのキーに対して一度ずつ呼び出します。これは削除されたキーに対しては呼び出しません。ただし、存在していて <code>undefined</code> である値に対しては呼び出します。</p>
+
+<p><code><var>callback</var></code> は次の <strong>3 つの引数</strong>で呼び出されます。</p>
+
+<ul>
+ <li>項目の値 (<code><var>value</var></code>)</li>
+ <li>項目のキー (<code><var>key</var></code>)</li>
+ <li>走査中の <strong><code>Map</code> オブジェクト</strong></li>
+</ul>
+
+<p><code><var>thisArg</var></code> 引数が <code>forEach</code> に指定されると、 <code><var>callback</var></code> の呼び出し時にそのオブジェクトが <code>this</code> の値として使用されます。与えられなかった場合は、 <code>undefined</code> が <code>this</code> の値として渡されます。 <code><var>callback</var></code> によって究極に管理される <code>this</code> の値は、<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数から見える <code>this</code> を特定する一般規則</a>に従います。</p>
+
+<p>それぞれの値に対して一度ずつ実行されますが、 <code>forEach</code> が終了するまでに削除され再追加された場合は除きます。 <code><var>callback</var></code> はその前に削除された値に対しては実行されません。 <code>forEach</code> が終了する前に追加された新しい値に対しては実行されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Printing_the_contents_of_a_Map_object" name="Printing_the_contents_of_a_Map_object">Map オブジェクトの内容を表示</h3>
+
+<p>以下のコードは <code>Map</code> オブジェクト内の各要素を1行ずつ出力します。</p>
+
+<pre class="brush:js notranslate">function logMapElements(value, key, map) {
+ console.log(`map.get('${key}') = ${value}`)
+}
+new Map([['foo', 3], ['bar', {}], ['baz', undefined]]).forEach(logMapElements)
+// logs:
+// "map.get('foo') = 3"
+// "map.get('bar') = [object Object]"
+// "map.get('baz') = undefined"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.forEach")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Set.prototype.forEach()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/get/index.html b/files/ja/web/javascript/reference/global_objects/map/get/index.html
new file mode 100644
index 0000000000..6b2a330995
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/get/index.html
@@ -0,0 +1,72 @@
+---
+title: Map.prototype.get()
+slug: Web/JavaScript/Reference/Global_Objects/Map/get
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Map
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/get
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>get()</code></strong> メソッドは、指定された要素を <code>Map</code> オブジェクトから返します。指定されたキーに関連付けられた値がオブジェクトである場合は、そのオブジェクトの参照を受け取ることになり、そのオブジェクトに対して変更を行った場合は、 <code>Map</code> オブジェクトの中にあるものに変更が行われます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-get.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>myMap</var>.get(<var>key</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>key</var></code></dt>
+ <dd><code>Map</code> オブジェクトから返される要素のキーです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたキーに関連付けられた要素が返されます。 <code>Map</code> オブジェクト内にキーが見つからない場合は、 <code>undefined</code> を返されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_get" name="Using_get">Using get()</h3>
+
+<pre class="brush: js notranslate">let myMap = new Map();
+myMap.set('bar', 'foo');
+
+myMap.get('bar'); // "foo" を返す
+myMap.get('baz'); // undefined を返す
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map.prototype.get', 'Map.prototype.get')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.get")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map")}}</li>
+ <li>{{jsxref("Map.prototype.set()")}}</li>
+ <li>{{jsxref("Map.prototype.has()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/has/index.html b/files/ja/web/javascript/reference/global_objects/map/has/index.html
new file mode 100644
index 0000000000..5aed70a252
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/has/index.html
@@ -0,0 +1,72 @@
+---
+title: Map.prototype.has()
+slug: Web/JavaScript/Reference/Global_Objects/Map/has
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Map
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/has
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>has()</code></strong> メソッドは、指定されたキーに対する要素が存在するかどうかを示す論理値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-has.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>myMap</var>.has(<var>key</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>key</var></code></dt>
+ <dd><code>Map</code> オブジェクト内に存在するかテストするための要素のキーです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>特定のキーに対する要素が <code>Map</code> オブジェクト内に存在していたら、<code>true</code> を返します。さもなければ、<code>false</code> を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_has" name="Using_has">has() の使用</h3>
+
+<pre class="brush: js notranslate">let myMap = new Map()
+myMap.set('bar', "foo")
+
+myMap.has('bar') // returns true
+myMap.has('baz') // returns false
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map.prototype.has', 'Map.prototype.has')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.has")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map")}}</li>
+ <li>{{jsxref("Map.prototype.set()")}}</li>
+ <li>{{jsxref("Map.prototype.get()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/index.html b/files/ja/web/javascript/reference/global_objects/map/index.html
new file mode 100644
index 0000000000..87298d6f3f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/index.html
@@ -0,0 +1,369 @@
+---
+title: Map
+slug: Web/JavaScript/Reference/Global_Objects/Map
+tags:
+ - Class
+ - ECMAScript 2015
+ - JavaScript
+ - Map
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Map
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Map</code></strong> オブジェクトはキーと値のペアを保持し、キーが最初に挿入された順序を覚えています。</span>キーや値には任意の値 (オブジェクトと{{glossary("Primitive", "プリミティブ値")}})を使用することができます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Map</code> オブジェクトは、その要素について挿入順で反復処理を行うことができます。 {{jsxref("Statements/for...of", "for...of")}} ループは各反復で <code>[<var>キー</var>, <var>値</var>]</code> の配列を返します。</p>
+
+<h3 id="Key_equality" name="Key_equality">キーの等価性</h3>
+
+<ul>
+ <li>キーの等価性は <a href="/ja/docs/Web/JavaScript/Equality_comparisons_and_sameness#Same-value-zero_equality"><code>sameValueZero</code></a> アルゴリズムに基づきます。</li>
+ <li>{{jsxref("NaN")}} は <code>NaN</code> と同じとみなされ (<code>NaN !== NaN</code> であっても)、他の値はすべて <code>===</code> 演算子の意味に従って等価性が考慮されます。</li>
+ <li>現在の ECMAScript 仕様書では、 <code>-0</code> と <code>+0</code> は等しいと考えられています。但し、以前の草稿ではそのようになっていませんでした。詳細は <em>"Value equality for -0 and 0"</em> を<a href="#Browser_compatibility">ブラウザーの互換性</a>一覧で確認してください。</li>
+</ul>
+
+<h3 id="Objects_vs._Maps" name="Objects_vs._Maps">Object と Map の比較</h3>
+
+<p>{{jsxref("Object")}} と <code>Map</code> は似ています。 — どちらもキーを値に設定したり、それらの値を受け取ったり、キーを削除したり、キーに何かが格納されているかどうかを判定したりすることができます。この意味で (そして他の内蔵オブジェクトがなかったため)、従来 <code>Object</code> は <code>Map</code> として使われてきました。</p>
+
+<p>しかし、いくつかの場面で <code>Map</code> の方が勝るような重要な違いがあります。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="row"></th>
+ <th scope="col">Map</th>
+ <th scope="col">Object</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">思いがけないキー</th>
+ <td><code>Map</code> は既定では何もキーを持っていません。明示的に設定したものだけを含みます。</td>
+ <td>
+ <p><code>Object</code> にはプロトタイプがあります。よって既定のキーを含んでいるので、注意しないと自分のキーと衝突する可能性があります。</p>
+
+ <div class="blockIndicator note">
+ <p><strong>注:</strong> ES5 では、 {{jsxref("Object.create", "Object.create(null)")}} を使用すると回避できますが、これはめったに行われていません。</p>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <th scope="row">キーの型</th>
+ <td><code>Map</code> のキーはあらゆる値がなることができます (関数、オブジェクト、あらゆるプリミティブなど)。</td>
+ <td><code>Object</code> のキーは {{jsxref("String")}} または {{jsxref("Symbol")}} でなければなりません。</td>
+ </tr>
+ <tr>
+ <th scope="row">キーの順序</th>
+ <td>
+ <p><code>Map</code> のキーは、単純で直感的な方法で順序付けられます。すなわち、反復処理を行うと、 <code>Map</code> オブジェクトは挿入順でキーを返します。</p>
+ </td>
+ <td>
+ <p>通常の <code>Object</code> のキーは現在では順序付けされていますが、以前はそうではなかったので、順序は複雑です。結果として、プロパティの順序に頼らない方が良いでしょう。</p>
+
+ <p>この順序は ECMAScript 2015 で初めて自身のプロパティに対してのみ定義されましたが、 ECMAScript 2020 では継承されたプロパティに対しても同様に順序が定義されています。 <a href="https://tc39.es/ecma262/#sec-ordinaryownpropertykeys">OrdinaryOwnPropertyKeys</a> と <a href="https://tc39.es/ecma262/#sec-enumerate-object-properties">EnumerateObjectProperties</a> の抽象指定操作を参照してください。しかし、オブジェクトのプロパティが<strong>すべて</strong>反復処理される単一の単一のメカニズムはないことに注意してください。 ({{jsxref("Statements/for...in", "for-in")}} は列挙可能な文字列キーのプロパティのみを含む、 {{jsxref("Object.keys")}} は自分自身の列挙可能な文字列キーのプロパティのみを含む、 {{jsxref("Object.getOwnPropertyNames")}} は列挙不可能な場合でも自分自身の文字列キーのプロパティを含む、 {{jsxref("Object.getOwnPropertySymbols")}} は、 <code>Symbol</code> キーを持つプロパティに対しても同じことを行う、など。)</p>
+ </td>
+ </tr>
+ <tr>
+ <th scope="row">
+ <p>大きさ</p>
+ </th>
+ <td><code>Map</code> の中の項目数は、 {{jsxref("Map.prototype.size", "size")}} プロパティで簡単に得ることができます。 property.</td>
+ <td><code>Object</code> の中の項目数は、手動で数える必要があります。</td>
+ </tr>
+ <tr>
+ <th scope="row">反復処理</th>
+ <td><code>Map</code> は <a href="/ja/docs/Web/JavaScript/Guide/iterable">iterable</a> ですので、直接反復処理を行うことができます。</td>
+ <td><code>Object</code> では反復処理を行うのに、いくつかの形でキーの一覧を取得して、そのうえで反復処理を行う必要があります。</td>
+ </tr>
+ <tr>
+ <th scope="row">性能</th>
+ <td>
+ <p>キーと値の組を頻繁に追加したり削除したりすることが求められるシナリオでは、性能がより良くなります。</p>
+ </td>
+ <td>
+ <p>キーと値の組を頻繁に追加したり削除したりすることに最適化されていません。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Setting_object_properties" name="Setting_object_properties">オブジェクトプロパティの設定</h3>
+
+<p>Map オブジェクトに対してオブジェクトプロパティを設定すると正しく動作しますが、混乱を催すことが考えられます。</p>
+
+<p>たとえば、次の例は一応動作するように見えます。</p>
+
+<pre class="syntaxbox example-bad brush js notranslate">let wrongMap = new Map()
+wrongMap['bla'] = 'blaa'
+wrongMap['bla2'] = 'blaaa2'
+
+console.log(wrongMap) // Map { bla: 'blaa', bla2: 'blaaa2' }
+</pre>
+
+<p>しかし、このようにプロパティを設定すると、 Map データ構造に符合しません。一般的なオブジェクトの機能を使用します。 'bla' の値はクエリを行うための Map に格納されません。データにその他の操作を行うと失敗します。</p>
+
+<pre class="syntaxbox example-bad brush js notranslate">wrongMap.has('bla') // false
+wrongMap.delete('bla') // false
+console.log(wrongMap) // Map { bla: 'blaa', bla2: 'blaaa2' }</pre>
+
+<p>Map にデータを格納する正しい方法は、 <code>set(<var>key</var>, <var>value</var>)</code> メソッドを使用する方法です。</p>
+
+<pre class="syntaxbox brush js example-good notranslate">let contacts = new Map()
+contacts.set('Jessie', {phone: "213-555-1234", address: "123 N 1st Ave"})
+contacts.has('Jessie') // true
+contacts.get('Hilary') // undefined
+contacts.set('Hilary', {phone: "617-555-4321", address: "321 S 2nd St"})
+contacts.get('Jessie') // {phone: "213-555-1234", address: "123 N 1st Ave"}
+contacts.delete('Raymond') // false
+contacts.delete('Jessie') // true
+console.log(contacts.size) // 1
+
+</pre>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Map/Map", "Map()")}}</dt>
+ <dd>新しい <code>Map</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Map.@@species", "get Map[@@species]")}}</dt>
+ <dd>派生クラスを生成するためのコンストラクター関数です。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Map.prototype.size")}}</dt>
+ <dd><code>Map</code> オブジェクトの中のキーと値の組の数を返します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Map.prototype.clear()")}}</dt>
+ <dd><code>Map</code>オブジェクトからすべてのキーと値の組を削除します。</dd>
+ <dt>{{jsxref("Map.delete", "Map.prototype.delete(<var>key</var>)")}}</dt>
+ <dd><code>Map</code> オブジェクトに要素が存在し、削除された場合は <code>true</code> を返します、要素が存在しなければ <code>false</code> を返します。その後では <code>Map.prototype.has(<var>key</var>)</code> が <code>false</code> を返すようになります。</dd>
+ <dt>{{jsxref("Map.get", "Map.prototype.get(<var>key</var>)")}}</dt>
+ <dd><code><var>key</var></code> で指定されたキーに結び付けられた値を返します。存在しない場合は <code>undefined</code> を返します。</dd>
+ <dt>{{jsxref("Map.has", "Map.prototype.has(<var>key</var>)")}}</dt>
+ <dd><code><var>key</var></code> で指定されたキーに結び付けられた要素が <code>Map</code> オブジェクト内に存在するかどうかを示す boolean を返します。</dd>
+ <dt>{{jsxref("Map.set", "Map.prototype.set(<var>key</var>, <var>value</var>)")}}</dt>
+ <dd><code>Map</code> オブジェクト内の <code><var>key</var></code> で指定されたキーの値を <code><var>value</var></code> に設定します。その <code>Map</code> オブジェクトを返します。</dd>
+</dl>
+
+<h3 id="Iteration_methods" name="Iteration_methods">反復処理メソッド</h3>
+
+<dl>
+ <dt>{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}</dt>
+ <dd>新しい<strong>イテレーター</strong>オブジェクトを返し、これには <code>Map</code>オブジェクト内の各要素の <strong><code>[<var>key</var>, <var>value</var>] の配列</code></strong>が挿入順で含まれます。</dd>
+ <dt>{{jsxref("Map.prototype.keys()")}}</dt>
+ <dd>新しい<strong>イテレーター</strong>オブジェクトを返し、これには <code>Map</code>オブジェクト内の各要素の<strong>キー</strong>が挿入順で含まれます。</dd>
+ <dt>{{jsxref("Map.prototype.values()")}}</dt>
+ <dd>新しい<strong>イテレーター</strong>オブジェクトを返し、これには <code>Map</code>オブジェクト内の各要素の<strong>値</strong>が挿入順で含まれます。</dd>
+ <dt>{{jsxref("Map.prototype.entries()")}}</dt>
+ <dd><code>Map</code>オブジェクト内の要素に対して挿入順にすべての要素の <code>[<var>key</var>, <var>value</var>]</code> の配列を含む、新しい<strong>イテレーター</strong>オブジェクトを返します。</dd>
+ <dt>{{jsxref("Map.forEach", "Map.prototype.forEach(<var>callbackFn</var>[, <var>thisArg</var>])")}}</dt>
+ <dd><code><var>callbackFn</var></code> を、 <code>Map</code> オブジェクトに存在するそれぞれのキーと値の組に対して1回ずつ、挿入順に呼び出します。 <code><var>thisArg</var></code> 引数が <code>forEach</code> に与えられた場合は、それぞれのコールバックでこれを <code>this</code> の値として使用します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_Map_object" name="Using_the_Map_object">Map オブジェクトの使用</h3>
+
+<pre class="brush: js notranslate">let myMap = new Map()
+
+let keyString = '文字列'
+let keyObj = {}
+let keyFunc = function() {}
+
+// 値を設定する
+myMap.set(keyString, "'文字列' と結び付けられた値")
+myMap.set(keyObj, "keyObj と結び付けられた値")
+myMap.set(keyFunc, "keyFunc と結び付けられた値")
+
+myMap.size // 3
+
+// 値を取得する
+myMap.get(keyString) // "'文字列' と結び付けられた値"
+myMap.get(keyObj) // "keyObj と結び付けられた値"
+myMap.get(keyFunc) // "keyFunc と結び付けられた値"
+
+myMap.get('文字列') // "'文字列' と結び付けられた値"
+ // keyString === '文字列' であるため
+myMap.get({}) // undefined, keyObj !== {} であるため
+myMap.get(function() {}) // undefined, keyFunc !== function () {} であるため
+</pre>
+
+<h3 id="Using_NaN_as_Map_keys" name="Using_NaN_as_Map_keys">NaN を Map のキーとして使用</h3>
+
+<p>{{jsxref("NaN")}} もまたキーとして使うことができます。すべての <code>NaN</code> は自身と等しくない (<code>NaN !== NaN</code> は真) にもかかわらず、以下の例は動作します。これは <code>NaN</code> が互いに区別できないためです。</p>
+
+<pre class="brush: js notranslate">let myMap = new Map()
+myMap.set(NaN, 'not a number')
+
+myMap.get(NaN)
+// "not a number"
+
+let otherNaN = Number('foo')
+myMap.get(otherNaN)
+// "not a number"
+</pre>
+
+<h3 id="Iterating_Map_with_for..of" name="Iterating_Map_with_for..of">for..of を使用した Map の反復処理</h3>
+
+<p>Map は <code>for..of</code> ループを使用して反復処理を行うことができます。</p>
+
+<pre class="brush: js notranslate">let myMap = new Map()
+myMap.set(0, 'zero')
+myMap.set(1, 'one')
+
+for (let [key, value] of myMap) {
+ console.log(key + ' = ' + value)
+}
+// 0 = zero
+// 1 = one
+
+for (let key of myMap.keys()) {
+ console.log(key)
+}
+// 0
+// 1
+
+for (let value of myMap.values()) {
+ console.log(value)
+}
+// zero
+// one
+
+for (let [key, value] of myMap.entries()) {
+ console.log(key + ' = ' + value)
+}
+// 0 = zero
+// 1 = one
+</pre>
+
+<h3 id="Iterating_Map_with_forEach" name="Iterating_Map_with_forEach">forEach() で Map を反復処理</h3>
+
+<p>Map は {{jsxref("Map.prototype.forEach", "forEach()")}} メソッドを使用して反復できます。</p>
+
+<pre class="brush: js notranslate">myMap.forEach(function(value, key) {
+ console.log(key + ' = ' + value)
+})
+// 0 = zero
+// 1 = one
+</pre>
+
+<h3 id="Relation_with_Array_objects" name="Relation_with_Array_objects">Array オブジェクトとの関係</h3>
+
+<pre class="brush: js notranslate">let kvArray = [["キー1", "値1"], ["キー2", "値2"]];
+
+// 通常の Map コンストラクターを使って、キー・値の 2 次元配列をマップに変換する
+let myMap = new Map(kvArray)
+
+myMap.get("キー1") // "値1" を返す
+
+// 展開演算子を使って、マップをキー・値の 2 次元配列に変換する
+console.log(Array.from(myMap)) // kvArray とまったく同じ Array を表示する
+
+// あるいは展開演算子をキーまたは値のイテレーターに使って、キーまたは値のみの配列を得る
+console.log([...myMap])
+
+// または keys() や values() のイテレーターを使用して配列に変換する
+console.log(Array.from(myMap.keys())) // ["key1", "key2"] が出力される
+</pre>
+
+<h3 id="Cloning_and_merging_Maps" name="Cloning_and_merging_Maps">Map の複製と混合</h3>
+
+<p><code>Array</code> と同様に、 <code>Map</code> は複製することができます。</p>
+
+<pre class="brush: js notranslate">let original = new Map([
+ [1, 'one']
+])
+
+let clone = new Map(original)
+
+console.log(clone.get(1)) // one
+console.log(original === clone) // false (useful for shallow comparison)</pre>
+
+<div class="blockIndicator note">
+<p><strong>重要:</strong> <em>データ自身</em>は複製されないことに注意しておいてください。</p>
+</div>
+
+<p>Map はキーの固有性を保持しながら混合可能です。</p>
+
+<pre class="brush: js notranslate">let first = new Map([
+ [1, 'one'],
+ [2, 'two'],
+ [3, 'three'],
+])
+
+let second = new Map([
+ [1, 'uno'],
+ [2, 'dos']
+])
+
+// 2つのマップを混合します。重複するキーは後勝ちになります。
+// スプレッド演算子は基本的に Map を Array に変換します。
+let merged = new Map([...first, ...second])
+
+console.log(merged.get(1)) // uno
+console.log(merged.get(2)) // dos
+console.log(merged.get(3)) // three</pre>
+
+<p>Map は Array と混合することもできます。</p>
+
+<pre class="brush: js notranslate">let first = new Map([
+ [1, 'one'],
+ [2, 'two'],
+ [3, 'three'],
+])
+
+let second = new Map([
+ [1, 'uno'],
+ [2, 'dos']
+])
+
+// マップと配列を混合します。重複するキーは後勝ちになります。
+let merged = new Map([...first, ...second, [1, 'eins']])
+
+console.log(merged.get(1)) // eins
+console.log(merged.get(2)) // dos
+console.log(merged.get(3)) // three</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map-objects', 'Map')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set")}}</li>
+ <li>{{jsxref("WeakMap")}}</li>
+ <li>{{jsxref("WeakSet")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/keys/index.html b/files/ja/web/javascript/reference/global_objects/map/keys/index.html
new file mode 100644
index 0000000000..d4ce212d2d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/keys/index.html
@@ -0,0 +1,71 @@
+---
+title: Map.prototype.keys()
+slug: Web/JavaScript/Reference/Global_Objects/Map/keys
+tags:
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Map
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/keys
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>keys()</code></strong> メソッドは、 <code>Map</code> オブジェクトに挿入された要素のキーを挿入順に列挙する新しい<strong><a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators">イテレーター</a></strong>オブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-keys.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>myMap</var>.keys()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Map")}} の新しいイテレーターオブジェクト。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_keys" name="Using_keys">keys() の使用</h3>
+
+<pre class="brush:js notranslate">var myMap = new Map();
+myMap.set('0', 'foo');
+myMap.set(1, 'bar');
+myMap.set({}, 'baz');
+
+var mapIter = myMap.keys();
+
+console.log(mapIter.next().value); // "0"
+console.log(mapIter.next().value); // 1
+console.log(mapIter.next().value); // Object
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map.prototype.keys', 'Map.prototype.keys')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.keys")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map.prototype.entries()")}}</li>
+ <li>{{jsxref("Map.prototype.values()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/map/index.html b/files/ja/web/javascript/reference/global_objects/map/map/index.html
new file mode 100644
index 0000000000..91aaf5520a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/map/index.html
@@ -0,0 +1,64 @@
+---
+title: Map() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Map/Map
+tags:
+ - Constructor
+ - JavaScript
+ - Map
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/Map
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Map()</code> コンストラクター</strong>は、 {{jsxref("Map")}} オブジェクトを生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Map([<var>iterable</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>iterable</var></code></dt>
+ <dd>{{jsxref("Array")}} または他の<a href="/ja/docs/Web/JavaScript/Guide/iterable">反復処理可能</a>なオブジェクトで、要素はキーと値の組です。 (たとえば、 <code>[[ 1, 'one' ],[ 2, 'two' ]]</code> のような2つの要素を持つ配列。) それぞれのそれぞれのキーと値の組が新しい <code>Map</code> に追加されます。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_a_new_Map" name="Creating_a_new_Map">新しい Map の生成</h3>
+
+<pre class="brush: js notranslate">let myMap = new Map([
+ [1, 'one'],
+ [2, 'two'],
+ [3, 'three'],
+])
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map-constructor', 'Map constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.Map")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set")}}</li>
+ <li>{{jsxref("WeakMap")}}</li>
+ <li>{{jsxref("WeakSet")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/set/index.html b/files/ja/web/javascript/reference/global_objects/map/set/index.html
new file mode 100644
index 0000000000..7793857adb
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/set/index.html
@@ -0,0 +1,87 @@
+---
+title: Map.prototype.set()
+slug: Web/JavaScript/Reference/Global_Objects/Map/set
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Map
+ - Method
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/set
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>set()</code></strong> メソッドは、指定されたキーと値を持つ要素を <code>Map</code> オブジェクトに追加したり、更新したりします。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-set.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>myMap</var>.set(<var>key</var>, <var>value</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>key</var></code></dt>
+ <dd><code>Map</code> オブジェクトに追加する要素のキーです。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd><code>Map</code> オブジェクトに追加する要素の値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>Map</code>オブジェクト。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_set" name="Using_set">set() の使用</h3>
+
+<pre class="brush: js notranslate">let myMap = new Map()
+
+// マップに新しい要素を追加する
+myMap.set('bar', 'foo')
+myMap.set(1, 'foobar')
+
+// マップにある要素を更新する
+myMap.set('bar', 'baz')
+</pre>
+
+<h3 id="Using_the_set_with_chaining" name="Using_the_set_with_chaining">set() のメソッドチェーンの使用</h3>
+
+<p><code>set()</code> メソッドは <code>Map</code> オブジェクトを返すため、以下のようにメソッドチェーンを作ることができます。</p>
+
+<pre class="brush: js notranslate">// チェーンを使用してマップに新しい要素を追加する
+myMap.set('bar', 'foo')
+ .set(1, 'foobar')
+ .set(2, 'baz');
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map.prototype.set', 'Map.prototype.set')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.set")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map")}}</li>
+ <li>{{jsxref("Map.prototype.get()")}}</li>
+ <li>{{jsxref("Map.prototype.has()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/size/index.html b/files/ja/web/javascript/reference/global_objects/map/size/index.html
new file mode 100644
index 0000000000..a65d7f6edc
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/size/index.html
@@ -0,0 +1,60 @@
+---
+title: Map.prototype.size
+slug: Web/JavaScript/Reference/Global_Objects/Map/size
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Map
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/size
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>size</code></strong> アクセサープロパティは、 {{jsxref("Map")}} オブジェクトにある要素の数を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-size.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>size</code> の値は <code>Map</code> オブジェクトにいくつの項目があるかを表す整数値です。 <code>size</code> の set アクセサー関数は <code>undefined</code> です。このプロパティを変更することはできません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_size" name="Using_size">size の使用</h3>
+
+<pre class="brush:js notranslate">var myMap = new Map();
+myMap.set('a', 'alpha');
+myMap.set('b', 'beta');
+myMap.set('g', 'gamma');
+
+myMap.size // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-map.prototype.size', 'Map.prototype.size')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.size")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/map/values/index.html b/files/ja/web/javascript/reference/global_objects/map/values/index.html
new file mode 100644
index 0000000000..baabf38459
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/map/values/index.html
@@ -0,0 +1,70 @@
+---
+title: Map.prototype.values()
+slug: Web/JavaScript/Reference/Global_Objects/Map/values
+tags:
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Map
+ - Method
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Map/values
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>values()</code></strong> メソッドは、 <code>Map</code> オブジェクトに挿入された要素を挿入順に列挙する新しい<strong><a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators">イテレーター</a></strong>オブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/map-prototype-values.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>myMap</var>.values()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Map")}} の新しいイテレーターオブジェクト。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_values" name="Using_values">values() の使用</h3>
+
+<pre class="brush:js notranslate">var myMap = new Map();
+myMap.set('0', 'foo');
+myMap.set(1, 'bar');
+myMap.set({}, 'baz');
+
+var mapIter = myMap.values();
+
+console.log(mapIter.next().value); // "foo"
+console.log(mapIter.next().value); // "bar"
+console.log(mapIter.next().value); // "baz"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-map.prototype.values', 'Map.prototype.values')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Map.values")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map.prototype.entries()")}}</li>
+ <li>{{jsxref("Map.prototype.keys()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/abs/index.html b/files/ja/web/javascript/reference/global_objects/math/abs/index.html
new file mode 100644
index 0000000000..f8ae38085c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/abs/index.html
@@ -0,0 +1,87 @@
+---
+title: Math.abs()
+slug: Web/JavaScript/Reference/Global_Objects/Math/abs
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/abs
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Math.abs()</code></strong> 関数は、数値の絶対値を返します。</span></p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.abs</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mrow><mo stretchy="false">|</mo><mi>x</mi><mo stretchy="false">|</mo></mrow><mo>=</mo><mrow><mo>{</mo><mtable columnalign="left left"><mtr><mtd><mi>x</mi></mtd><mtd><mtext>if</mtext><mspace width="1em"></mspace><mi>x</mi><mo>&gt;</mo><mn>0</mn></mtd></mtr><mtr><mtd><mi>0</mi></mtd><mtd><mtext>if</mtext><mspace width="1em"></mspace><mi>x</mi><mo>=</mo><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mi>x</mi></mtd><mtd><mtext>if</mtext><mspace width="1em"></mspace><mi>x</mi><mo>&lt;</mo><mn>0</mn></mtd></mtr></mtable></mrow></mrow><annotation encoding="TeX">{\mathtt{\operatorname{Math.abs}(z)}} = {|z|} = \begin{cases} x &amp; \text{if} \quad x \geq 0 \\ x &amp; \text{if} \quad x &lt; 0 \end{cases} </annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-abs.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.abs(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値の絶対値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>abs()</code> は <code>Math</code> オブジェクトの静的メソッドなので、 <code>Math</code> オブジェクトを生成してメソッドとして使用するのではなく、常に <code>Math.abs()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Behavior_of_Math.abs" name="Behavior_of_Math.abs">Math.abs() の動作</h3>
+
+<p>空のオブジェクト、複数のメンバーを持つ配列、数値でない文字列、 {{jsxref("undefined")}}、 空の変数を渡すと、 {{jsxref("NaN")}} を返します。 {{jsxref("null")}} を渡すと空文字列を返し、空の配列は 0 を返します。</p>
+
+<pre class="brush: js notranslate" dir="rtl">Math.abs('-1'); // 1
+Math.abs(-2); // 2
+Math.abs(null); // 0
+Math.abs(''); // 0
+Math.abs([]); // 0
+Math.abs([2]); // 2
+Math.abs([1,2]); // NaN
+Math.abs({}); // NaN
+Math.abs('string'); // NaN
+Math.abs(); // NaN
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.abs', 'Math.abs')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.abs")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.ceil()")}}</li>
+ <li>{{jsxref("Math.floor()")}}</li>
+ <li>{{jsxref("Math.round()")}}</li>
+ <li>{{jsxref("Math.sign()")}}</li>
+ <li>{{jsxref("Math.trunc()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/acos/index.html b/files/ja/web/javascript/reference/global_objects/math/acos/index.html
new file mode 100644
index 0000000000..23d1ec9998
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/acos/index.html
@@ -0,0 +1,86 @@
+---
+title: Math.acos()
+slug: Web/JavaScript/Reference/Global_Objects/Math/acos
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/acos
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.acos()</code></strong> 関数は、引数として与えた数値の逆余弦 (アークコサイン) をラジアン単位で返します。</p>
+
+<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>∊</mo><mo stretchy="false">[</mo><mrow><mo>-</mo><mn>1</mn></mrow><mo>;</mo><mn>1</mn><mo stretchy="false">]</mo><mo>,</mo><mspace width="thickmathspace"></mspace><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.acos</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">arccos</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> the unique </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mo>∊</mo><mo stretchy="false">[</mo><mn>0</mn><mo>;</mo><mi>π</mi><mo stretchy="false">]</mo><mspace width="thinmathspace"></mspace><mtext>such that</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">cos</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.acos}(x)} = \arccos(x) = \text{ the unique } \; y \in [0; \pi] \, \text{such that} \; \cos(y) = x</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-acos.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.acos(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>コサインを表す数値で、 <code><var>x</var></code> は <code>-1</code> と <code>1</code> の間です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値が <code>-1</code> から <code>1</code> までの場合、その逆余弦 (アークコサイン) をラジアン単位で返します。それ以外の場合は {{jsxref("NaN")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Math.acos()</code> メソッドは、-1 から 1 までの <code>x</code> に対して、0 から π までのラジアンの数値を返します。<code>x</code> の値がこの範囲を越えている場合、このメソッドは {{jsxref("NaN")}} を返します。</p>
+
+<p><code>acos()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.acos()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.acos" name="Using_Math.acos">Math.acos() の使用</h3>
+
+<pre class="brush: js notranslate">Math.acos(-2); // NaN
+Math.acos(-1); // 3.141592653589793
+Math.acos(0); // 1.5707963267948966
+Math.acos(0.5); // 1.0471975511965979
+Math.acos(1); // 0
+Math.acos(2); // NaN
+</pre>
+
+<p>値が -1 未満か 1 より大きい数値の場合、<code>Math.acos()</code> は {{jsxref("NaN")}} を返します。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.acos', 'Math.acos')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.acos")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.asin()")}}</li>
+ <li>{{jsxref("Math.atan()")}}</li>
+ <li>{{jsxref("Math.atan2()")}}</li>
+ <li>{{jsxref("Math.cos()")}}</li>
+ <li>{{jsxref("Math.sin()")}}</li>
+ <li>{{jsxref("Math.tan()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/acosh/index.html b/files/ja/web/javascript/reference/global_objects/math/acosh/index.html
new file mode 100644
index 0000000000..f271a15f8e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/acosh/index.html
@@ -0,0 +1,91 @@
+---
+title: Math.acosh()
+slug: Web/JavaScript/Reference/Global_Objects/Math/acosh
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/acosh
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.acosh()</code></strong> 関数は、数値の双曲線余弦 (ハイパーボリックアークコサイン) を返します。</p>
+
+<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>≥</mo><mn>1</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.acosh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="thinmathspace">arcosh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> the unique </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mo>≥</mo><mn>0</mn><mspace width="thickmathspace"></mspace><mtext>such that</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">cosh</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x \geq 1, \mathtt{\operatorname{Math.acosh}(x)} = \operatorname{arcosh}(x) = \text{ the unique } \; y \geq 0 \; \text{such that} \; \cosh(y) = x</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-acosh.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.acosh(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値の双曲線余弦 (ハイパーボリックアークコサイン) です。数値が <strong>1</strong> 未満であれば、 {{jsxref("NaN")}} になります。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>acosh()</code> は <code>Math</code> の静的メソッドであるため、作成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.acosh()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.acosh" name="Using_Math.acosh">Math.acosh() の使用</h3>
+
+<pre class="brush: js notranslate">Math.acosh(-1); // NaN
+Math.acosh(0); // NaN
+Math.acosh(0.5); // NaN
+Math.acosh(1); // 0
+Math.acosh(2); // 1.3169578969248166
+</pre>
+
+<p>1 未満の値に対しては、 <code>Math.acosh()</code> は {{jsxref("NaN")}} を返します。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><math><semantics><mrow><mi>x</mi><mo>≥</mo><mn>1</mn></mrow><annotation encoding="TeX">x \geq 1</annotation></semantics></math>に対して、<math><semantics><mrow><mo lspace="0em" rspace="thinmathspace">arcosh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mo lspace="0em" rspace="0em">ln</mo><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><msqrt><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>-</mo><mn>1</mn></mrow></msqrt></mrow><mo>)</mo></mrow></mrow><annotation encoding="TeX">\operatorname {arcosh} (x) = \ln \left(x + \sqrt{x^{2} - 1} \right)</annotation></semantics></math> になり、次の関数でエミュレートできます。</p>
+
+<pre class="brush: js notranslate">Math.acosh = Math.acosh || function(x) {
+ return Math.log(x + Math.sqrt(x * x - 1));
+};
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.acosh', 'Math.acosh')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.acosh")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.asinh()")}}</li>
+ <li>{{jsxref("Math.atanh()")}}</li>
+ <li>{{jsxref("Math.cosh()")}}</li>
+ <li>{{jsxref("Math.sinh()")}}</li>
+ <li>{{jsxref("Math.tanh()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/asin/index.html b/files/ja/web/javascript/reference/global_objects/math/asin/index.html
new file mode 100644
index 0000000000..b69aefa639
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/asin/index.html
@@ -0,0 +1,86 @@
+---
+title: Math.asin()
+slug: Web/JavaScript/Reference/Global_Objects/Math/asin
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/asin
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.asin()</code></strong> 関数は、引数として与えた数値の逆正弦 (アークサイン) をラジアン単位で返します。</p>
+
+<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>∊</mo><mo stretchy="false">[</mo><mrow><mo>-</mo><mn>1</mn></mrow><mo>;</mo><mn>1</mn><mo stretchy="false">]</mo><mo>,</mo><mspace width="thickmathspace"></mspace><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.asin</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">arcsin</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> the unique </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mo>∊</mo><mrow><mo>[</mo><mrow><mo>-</mo><mfrac><mi>π</mi><mn>2</mn></mfrac><mo>;</mo><mfrac><mi>π</mi><mn>2</mn></mfrac></mrow><mo>]</mo></mrow><mspace width="thinmathspace"></mspace><mtext>such that</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">sin</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.asin}(x)} = \arcsin(x) = \text{ the unique } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{such that} \; \sin(y) = x</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-asin.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>Math.asin(<var>x</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値が <strong>-1</strong> から <strong>1</strong> までの場合、その逆正弦 (アークサイン) をラジアン単位で返します。さもなければ、 {{jsxref("NaN")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Math.asin()</code> メソッドは、 <code>-1</code> から <code>1</code> までの <var>x</var> に対して、 <math><semantics><mrow><mo>-</mo><mfrac><mi>π</mi><mn>2</mn></mfrac></mrow><annotation encoding="TeX">-\frac{\pi}{2}</annotation></semantics></math> から <math><semantics><mfrac><mi>π</mi><mn>2</mn></mfrac><annotation encoding="TeX">\frac{\pi}{2}</annotation></semantics></math> までのラジアンの数値を返します。 <var>x</var> の値がこの範囲を越えている場合、このメソッドは {{jsxref("NaN")}} を返します。</p>
+
+<p><code>asin()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.asin()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.asin" name="Using_Math.asin">Math.asin() の使用</h3>
+
+<pre class="brush: js notranslate">Math.asin(-2); // NaN
+Math.asin(-1); // -1.5707963267948966 (-pi/2)
+Math.asin(0); // 0
+Math.asin(0.5); // 0.5235987755982989
+Math.asin(1); // 1.5707963267948966 (pi/2)
+Math.asin(2); // NaN
+</pre>
+
+<p>値が -1 未満か 1 より大きい数値の場合、<code>Math.asin()</code> は {{jsxref("NaN")}} を返します。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.asin', 'Math.asin')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.asin")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.acos()")}}</li>
+ <li>{{jsxref("Math.atan()")}}</li>
+ <li>{{jsxref("Math.atan2()")}}</li>
+ <li>{{jsxref("Math.cos()")}}</li>
+ <li>{{jsxref("Math.sin()")}}</li>
+ <li>{{jsxref("Math.tan()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/asinh/index.html b/files/ja/web/javascript/reference/global_objects/math/asinh/index.html
new file mode 100644
index 0000000000..55ae559ce6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/asinh/index.html
@@ -0,0 +1,98 @@
+---
+title: Math.asinh()
+slug: Web/JavaScript/Reference/Global_Objects/Math/asinh
+tags:
+ - JavaScript
+ - Math
+ - Mathod
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/asinh
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.asinh()</code></strong> 関数は、数値の双曲線逆正弦 (ハイパーボリックアークサイン) を返します。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.asinh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="thinmathspace">arsinh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> the unique </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>such that</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">sinh</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\mathtt{\operatorname{Math.asinh}(x)} = \operatorname{arsinh}(x) = \text{ the unique } \; y \; \text{such that} \; \sinh(y) = x</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-asinh.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>Math.asinh(<var>x</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値の双曲線逆正弦 (ハイパーボリックアークサイン) です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>asinh()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.asinh()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.asinh" name="Using_Math.asinh">Math.asinh() の使用</h3>
+
+<pre class="brush: js notranslate">Math.asinh(1); // 0.881373587019543
+Math.asinh(0); // 0
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>Math.asinh</code> は、次の関数でエミュレートできます。</p>
+
+<pre class="brush: js notranslate">if (!Math.asinh) Math.asinh = function(x) {
+ var absX = Math.abs(x), w
+ if (absX &lt; 3.725290298461914e-9) // |x| &lt; 2^-28
+ return x
+ if (absX &gt; 268435456) // |x| &gt; 2^28
+ w = Math.log(absX) + Math.LN2
+ else if (absX &gt; 2) // 2^28 &gt;= |x| &gt; 2
+ w = Math.log(2 * absX + 1 / (Math.sqrt(x * x + 1) + absX))
+ else
+ var t = x * x, w = Math.log1p(absX + t / (1 + Math.sqrt(1 + t)))
+
+ return x &gt; 0 ? w : -w
+}
+</pre>
+
+<p><code>Math.log1p</code> にもポリフィルを適用する必要があるかもしれません。詳しくは <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/log1p">Math.log1p</a> を参照してください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.asinh', 'Math.asinh')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.asinh")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.acosh()")}}</li>
+ <li>{{jsxref("Math.atanh()")}}</li>
+ <li>{{jsxref("Math.cosh()")}}</li>
+ <li>{{jsxref("Math.sinh()")}}</li>
+ <li>{{jsxref("Math.tanh()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/atan/index.html b/files/ja/web/javascript/reference/global_objects/math/atan/index.html
new file mode 100644
index 0000000000..3c71b12b6d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/atan/index.html
@@ -0,0 +1,89 @@
+---
+title: Math.atan()
+slug: Web/JavaScript/Reference/Global_Objects/Math/atan
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.atan()</code></strong> 関数は、引数として与えた数値のアークタンジェントをラジアン単位で返します。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.atan</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">arctan</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> the unique </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mo>∊</mo><mrow><mo>[</mo><mrow><mo>-</mo><mfrac><mi>π</mi><mn>2</mn></mfrac><mo>;</mo><mfrac><mi>π</mi><mn>2</mn></mfrac></mrow><mo>]</mo></mrow><mspace width="thinmathspace"></mspace><mtext>such that</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">tan</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\mathtt{\operatorname{Math.atan}(x)} = \arctan(x) = \text{ the unique } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{such that} \; \tan(y) = x</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-atan.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>Math.atan(<var>x</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値のアークタンジェント (ラジアン単位) です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Math.atan()</code> メソッドは <math><semantics><mrow><mo>-</mo><mfrac><mi>π</mi><mn>2</mn></mfrac></mrow><annotation encoding="TeX">-\frac{\pi}{2}</annotation></semantics></math> から <math><semantics><mfrac><mi>π</mi><mn>2</mn></mfrac><annotation encoding="TeX">\frac{\pi}{2}</annotation></semantics></math> までのラジアンの数値を返します。</p>
+
+<p><code>atan()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.atan()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.atan" name="Using_Math.atan">Math.atan() の使用</h3>
+
+<pre class="brush: js notranslate">Math.atan(1); // 0.7853981633974483
+Math.atan(0); // 0
+Math.atan(-0); // -0
+
+Math.atan(Infinity); <span class="objectBox objectBox-number"> // 1.5707963267948966
+Math.atan(-Infinity); // -1.5707963267948966
+
+</span>// The angle that the line [(0,0);(x,y)] forms with the x-axis in a Cartesian coordinate system
+Math.atan(y / x);
+</pre>
+
+<p>様式上の理由から <strong>±</strong><code>Infinity</code> の使用を避けたいと思うことがあるかもしれません。その場合、 {{jsxref("Math.atan2()")}} を第二引数を <code>0</code> としてを使うとよりよいかもしれません。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.atan', 'Math.atan')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.atan")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.acos()")}}</li>
+ <li>{{jsxref("Math.asin()")}}</li>
+ <li>{{jsxref("Math.atan2()")}}</li>
+ <li>{{jsxref("Math.cos()")}}</li>
+ <li>{{jsxref("Math.sin()")}}</li>
+ <li>{{jsxref("Math.tan()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/atan2/index.html b/files/ja/web/javascript/reference/global_objects/math/atan2/index.html
new file mode 100644
index 0000000000..0d801b8f3a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/atan2/index.html
@@ -0,0 +1,96 @@
+---
+title: Math.atan2()
+slug: Web/JavaScript/Reference/Global_Objects/Math/atan2
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan2
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.atan2()</code></strong> 関数は、<code>Math.atan2(y, x)</code> に対して点 (0, 0) から点 (x, y) までの半直線と、正の x 軸の間の平面上での角度 (ラジアン単位) を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-atan2.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.atan2(<var>y</var>, <var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>y</var></code></dt>
+ <dd>点の y 座標です。</dd>
+ <dt><code><var>x</var></code></dt>
+ <dd>点の x 座標です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>点 (0, 0) から点 <math><semantics><annotation encoding="TeX">(x,y)</annotation></semantics></math> までの半直線と、正の x 軸の間の (<math><semantics><mrow><mo stretchy="false">[</mo><mo>-</mo><mi>π</mi><mo>,</mo><mi>π</mi><mo stretchy="false">]</mo></mrow><annotation encoding="TeX">[-\pi, \pi]</annotation></semantics></math> 内の) ラジアン単位の角度です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Math.atan2()</code> メソッドは、<code>(x, y)</code> 座標のシータ角を表す -π から π までの数値を返します。これは、ラジアン単位で表された、正の X 軸と点 <code>(x, y)</code> の間の反時計回りの角度です。このメソッドへ渡す引数は、初めに y 座標、次に x 座標であることに注意してください。</p>
+
+<p><img alt="A simple diagram showing the angle returned by atan2(y, x)" src="https://mdn.mozillademos.org/files/11557/atan2.png" style="height: 300px; width: 300px;"></p>
+
+<p><code>Math.atan2()</code> は、<code>x</code> と <code>y</code> が別々に渡され、 <code>Math.atan()</code> は2つの引数の比率が渡されます。</p>
+
+<p><code>atan2()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.atan2()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.atan2" name="Using_Math.atan2">Math.atan2() の使用</h3>
+
+<pre class="brush: js notranslate">Math.atan2(90, 15); // 1.4056476493802699
+Math.atan2(15, 90); // 0.16514867741462683
+
+Math.atan2(±0, -0); // ±PI.
+Math.atan2(±0, +0); // ±0.
+Math.atan2(±0, -x); // ±PI for x &gt; 0.
+Math.atan2(±0, x); // ±0 for x &gt; 0.
+Math.atan2(-y, ±0); // -PI/2 for y &gt; 0.
+Math.atan2(y, ±0); // PI/2 for y &gt; 0.
+Math.atan2(±y, -Infinity); // ±PI for finite y &gt; 0.
+Math.atan2(±y, +Infinity); // ±0 for finite y &gt; 0.
+Math.atan2(±Infinity, x); // ±PI/2 for finite x.
+Math.atan2(±Infinity, -Infinity); // ±3*PI/4.
+Math.atan2(±Infinity, +Infinity); // ±PI/4.
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.atan2', 'Math.atan2')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.atan2")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.acos()")}}</li>
+ <li>{{jsxref("Math.asin()")}}</li>
+ <li>{{jsxref("Math.atan()")}}</li>
+ <li>{{jsxref("Math.cos()")}}</li>
+ <li>{{jsxref("Math.sin()")}}</li>
+ <li>{{jsxref("Math.tan()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/atanh/index.html b/files/ja/web/javascript/reference/global_objects/math/atanh/index.html
new file mode 100644
index 0000000000..fd35f305e2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/atanh/index.html
@@ -0,0 +1,92 @@
+---
+title: Math.atanh()
+slug: Web/JavaScript/Reference/Global_Objects/Math/atanh
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/atanh
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.atanh()</code></strong> 関数は、数値の双曲線逆正接 (ハイパーボリックアークタンジェント) を返します。</p>
+
+<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>∊</mo><mrow><mo>(</mo><mrow><mo>-</mo><mn>1</mn><mo>,</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.atanh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="thinmathspace">arctanh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> the unique </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>such that</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">tanh</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x \in \left( -1, 1 \right), \mathtt{\operatorname{Math.atanh}(x)} = \operatorname{arctanh}(x) = \text{ the unique } \; y \; \text{such that} \; \tanh(y) = x</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-atanh.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>Math.atanh(<var>x</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値の双曲線逆正接 (ハイパーボリックアークタンジェント) です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>atanh()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.atanh()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.atanh" name="Using_Math.atanh">Math.atanh() の使用</h3>
+
+<pre class="brush: js notranslate">Math.atanh(-2); // NaN
+Math.atanh(-1); // -Infinity
+Math.atanh(0); // 0
+Math.atanh(0.5); // 0.5493061443340548
+Math.atanh(1); // Infinity
+Math.atanh(2); // NaN
+</pre>
+
+<p>1よりも大きな値もしくは -1 よりも小さな値に対しては、 {{jsxref("NaN")}} が返されます。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><math><semantics><mrow><mrow><mo>|</mo><mi>x</mi><mo>|</mo></mrow><mo>&lt;</mo><mn>1</mn></mrow><annotation encoding="TeX">\left|x\right| &lt; 1</annotation></semantics></math>に対して、 <math><semantics><mrow><mo lspace="0em" rspace="thinmathspace">artanh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo lspace="0em" rspace="0em">ln</mo><mrow><mo>(</mo><mfrac><mrow><mn>1</mn><mo>+</mo><mi>x</mi></mrow><mrow><mn>1</mn><mo>-</mo><mi>x</mi></mrow></mfrac><mo>)</mo></mrow></mrow><annotation encoding="TeX">\operatorname {artanh} (x) = \frac{1}{2}\ln \left( \frac{1 + x}{1 - x} \right)</annotation></semantics></math> になり、次の関数でエミュレートできます。</p>
+
+<pre class="brush: js notranslate">Math.atanh = Math.atanh || function(x) {
+ return Math.log((1+x)/(1-x)) / 2;
+};
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.atanh', 'Math.atanh')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.atanh")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.acosh()")}}</li>
+ <li>{{jsxref("Math.asinh()")}}</li>
+ <li>{{jsxref("Math.cosh()")}}</li>
+ <li>{{jsxref("Math.sinh()")}}</li>
+ <li>{{jsxref("Math.tanh()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/cbrt/index.html b/files/ja/web/javascript/reference/global_objects/math/cbrt/index.html
new file mode 100644
index 0000000000..23f22f4e8d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/cbrt/index.html
@@ -0,0 +1,95 @@
+---
+title: Math.cbrt()
+slug: Web/JavaScript/Reference/Global_Objects/Math/cbrt
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/cbrt
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.cbrt()</code></strong> 関数は、引数として与えた数の立方根を返します。すなわち、</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mrow><mi>M</mi><mi>a</mi><mi>t</mi><mi>h</mi><mo>.</mo><mi>c</mi><mi>b</mi><mi>r</mi><mi>t</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mroot><mi>x</mi><mn>3</mn></mroot><mo>=</mo><mtext>the unique</mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>such that</mtext><mspace width="thickmathspace"></mspace><msup><mi>y</mi><mn>3</mn></msup><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\mathtt{Math.cbrt(x)} = \sqrt[3]{x} = \text{the unique} \; y \; \text{such that} \; y^3 = x</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-cbrt.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>Math.cbrt(<var>x</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><var>x</var></dt>
+ <dd>数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値の立方根です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>cbrt()</code> は <code>Math</code> の静的なメソッドであるため、自ら生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に、 <code>Math.cbrt()</code> として使用してください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>すべての <math><semantics><mrow><mi>x</mi><mo>≥</mo><mn>0</mn></mrow><annotation encoding="TeX">x \geq 0</annotation></semantics></math> に対して、 <math><semantics><mrow><mroot><mi>x</mi><mn>3</mn></mroot><mo>=</mo><msup><mi>x</mi><mrow><mn>1</mn><mo>/</mo><mn>3</mn></mrow></msup></mrow><annotation encoding="TeX">\sqrt[3]{x} = x^{1/3}</annotation></semantics></math> が存在し、次の関数でエミュレートできます:</p>
+
+<pre class="brush: js notranslate">if (!Math.cbrt) {
+ Math.cbrt = (function(pow) {
+  return function cbrt(x){
+  // ensure negative numbers remain negative:
+ return x &lt; 0 ? -pow(-x, 1/3) : pow(x, 1/3);
+  };
+ })(Math.pow); // localize Math.pow to increase efficiency
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.cbrt" name="Using_Math.cbrt">Math.cbrt() の使用</h3>
+
+<pre class="brush: js notranslate">Math.cbrt(NaN); // NaN
+Math.cbrt(-1); // -1
+Math.cbrt(-0); // -0
+Math.cbrt(-Infinity); // -Infinity
+Math.cbrt(0); // 0
+Math.cbrt(1); // 1
+Math.cbrt(Infinity); // Infinity
+Math.cbrt(null); // 0
+Math.cbrt(2); // 1.2599210498948732
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.cbrt', 'Math.cbrt')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.cbrt")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.pow()")}}</li>
+ <li>{{jsxref("Math.sqrt()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/ceil/index.html b/files/ja/web/javascript/reference/global_objects/math/ceil/index.html
new file mode 100644
index 0000000000..0ef1df742e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/ceil/index.html
@@ -0,0 +1,155 @@
+---
+title: Math.ceil()
+slug: Web/JavaScript/Reference/Global_Objects/Math/ceil
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/ceil
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.ceil()</code></strong> 関数は、引数として与えた数以上の最小の整数を返します。</p>
+
+<p><strong>注: </strong><code>Math.ceil({{jsxref("null")}})</code> は整数の 0 を返し、 {{jsxref("NaN")}} エラーは返しません。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-ceil.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code>Math.ceil(<var>x</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>引数として与えた数以上の最小の整数を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>ceil()</code> は <code>Math</code> オブジェクトの静的メソッドなので、 <code>Math</code> オブジェクトを生成してメソッドとして使用するのではなく、常に <code>Math.ceil()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.ceil" name="Using_Math.ceil">Math.ceil() の使用</h3>
+
+<p>以下の例は、<code>Math.ceil()</code> を使用した例です。</p>
+
+<pre class="brush: js">Math.ceil(.95); // 1
+Math.ceil(4); // 4
+Math.ceil(7.004); // 8
+Math.ceil(-0.95); // -0
+Math.ceil(-4); // -4
+Math.ceil(-7.004); // -7
+</pre>
+
+<h3 id="Decimal_adjustment" name="Decimal_adjustment">10進補正 (Decimal adjustment)</h3>
+
+<pre class="brush: js">// Closure
+(function() {
+ /**
+ * Decimal adjustment of a number.
+ *
+ * @param {String} type The type of adjustment.
+ * @param {Number} value The number.
+ * @param {Integer} exp The exponent (the 10 logarithm of the adjustment base).
+ * @returns {Number} The adjusted value.
+ */
+ function decimalAdjust(type, value, exp) {
+ // If the exp is undefined or zero...
+ if (typeof exp === 'undefined' || +exp === 0) {
+ return Math[type](value);
+ }
+ value = +value;
+ exp = +exp;
+ // If the value is not a number or the exp is not an integer...
+ if (isNaN(value) || !(typeof exp === 'number' &amp;&amp; exp % 1 === 0)) {
+ return NaN;
+ }
+ // Shift
+ value = value.toString().split('e');
+ value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
+ // Shift back
+ value = value.toString().split('e');
+ return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
+ }
+
+ // Decimal round
+ if (!Math.round10) {
+ Math.round10 = function(value, exp) {
+ return decimalAdjust('round', value, exp);
+ };
+ }
+ // Decimal floor
+ if (!Math.floor10) {
+ Math.floor10 = function(value, exp) {
+ return decimalAdjust('floor', value, exp);
+ };
+ }
+ // Decimal ceil
+ if (!Math.ceil10) {
+ Math.ceil10 = function(value, exp) {
+ return decimalAdjust('ceil', value, exp);
+ };
+ }
+})();
+
+// Round
+Math.round10(55.55, -1); // 55.6
+Math.round10(55.549, -1); // 55.5
+Math.round10(55, 1); // 60
+Math.round10(54.9, 1); // 50
+Math.round10(-55.55, -1); // -55.5
+Math.round10(-55.551, -1); // -55.6
+Math.round10(-55, 1); // -50
+Math.round10(-55.1, 1); // -60
+// Floor
+Math.floor10(55.59, -1); // 55.5
+Math.floor10(59, 1); // 50
+Math.floor10(-55.51, -1); // -55.6
+Math.floor10(-51, 1); // -60
+// Ceil
+Math.ceil10(55.51, -1); // 55.6
+Math.ceil10(51, 1); // 60
+Math.ceil10(-55.59, -1); // -55.5
+Math.ceil10(-59, 1); // -50
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.ceil', 'Math.ceil')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.ceil")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.abs()")}}</li>
+ <li>{{jsxref("Math.floor()")}}</li>
+ <li>{{jsxref("Math.round()")}}</li>
+ <li>{{jsxref("Math.sign()")}}</li>
+ <li>{{jsxref("Math.trunc()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/clz32/index.html b/files/ja/web/javascript/reference/global_objects/math/clz32/index.html
new file mode 100644
index 0000000000..d5b390382e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/clz32/index.html
@@ -0,0 +1,181 @@
+---
+title: Math.clz32()
+slug: Web/JavaScript/Reference/Global_Objects/Math/clz32
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/clz32
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.clz32()</code></strong> 関数は、引数として与えられた数値の 32 ビットバイナリ表現での先頭の 0 の個数を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-clz32.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.clz32(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値の32ビットバイナリ表現での先頭の 0 の個数。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>"<code>clz32</code>" は <strong>CountLeadingZeroes32</strong> の省略形です。</p>
+
+<p><code><var>x</var></code> が数値でない場合、まず数値に変換され、32ビット符号なし整数値に変換されます。</p>
+
+<p>変換された 32 ビット符号なし整数値が <code>0</code> の場合、すべてのビットが <code>0</code> であるため、<code>32</code> を返します。</p>
+
+<p>この関数は <a href="/ja/docs/Emscripten">Emscripten</a> のような JS にコンパイルするシステムに対して特に役に立ちます。</p>
+
+<h3 id="Count_Leading_Ones_and_beyond" name="Count_Leading_Ones_and_beyond">先頭の1を数える</h3>
+
+<p>現在のところ、 "Count Leading Ones" を表す <code>Math.clon</code> はありません ("clo" ではなく "clon" と名付けられています、なぜなら "clo" と "clz" は特に英語を話さない人にとっては似すぎているからです)。しかし、 <code>clon</code> 関数は、数値のビットを逆数にして、その結果を <code>Math.clz32</code> に渡すことで簡単に作ることができます。 1 の逆数は 0 であり、その逆も同様です。このように、ビットを逆数にすると、測定された 0 の量が (<code>Math.clz32</code> からの) 逆数になり、 <code>Math.clz32</code> はゼロの数を数えるのではなく、1 の数を数えるようになります。</p>
+
+<p>以下の32ビットワード値を想定してみます。</p>
+
+<pre class="brush: js notranslate">var a = 32776; // 00000000000000001000000000001000 (16 leading zeros)
+Math.clz32(a); // 16
+
+var b = ~32776; // 11111111111111110111111111110111 (32776 inversed, 0 leading zeros)
+Math.clz32(b); // 0 (this is equal to how many leading one's there are in a)</pre>
+
+<p>この論理を使用すると、 <code>clon</code> 関数は次のように作成することができます。</p>
+
+<pre class="brush: js notranslate">var clz = Math.clz32;
+function clon(integer){
+ return clz(~integer);
+}
+</pre>
+
+<p>さらに、この技術を拡張して、以下に示すようなジャンプレスの「Count Trailing Zeros」と「Count Trailing Ones」関数を作成することができます。以下の <code>ctrz</code> 関数は、すべての上位ビットを最も低いビットで埋め、そのビットを否定して上位のセットビットをすべて消去するので、clz が使用できます。</p>
+
+<pre class="brush: js notranslate">var clz = Math.clz32;
+function ctrz(integer){ // count trailing zeros
+ // 1. fill in all the higher bits after the first one
+ integer |= integer &lt;&lt; 16;
+ integer |= integer &lt;&lt; 8;
+ integer |= integer &lt;&lt; 4;
+ integer |= integer &lt;&lt; 2;
+ integer |= integer &lt;&lt; 1;
+ // 2. Now, inversing the bits reveals the lowest bits
+ return 32 - clz(~integer) |0; // `|0` ensures integer coercion
+}
+function ctron(integer){ // count trailing ones
+ // No shift-filling-in-with-ones operator is available in
+ // JavaScript, so the below code is the fastest
+ return ctrz(~integer);
+ /* Alternate implementation for demonstrational purposes:
+ // 1. erase all the higher bits after the first zero
+ integer &amp;= (integer &lt;&lt; 16) | 0xffff;
+ integer &amp;= (integer &lt;&lt; 8 ) | 0x00ff;
+ integer &amp;= (integer &lt;&lt; 4 ) | 0x000f;
+ integer &amp;= (integer &lt;&lt; 2 ) | 0x0003;
+ integer &amp;= (integer &lt;&lt; 1 ) | 0x0001;
+ // 2. Now, inversing the bits reveals the lowest zeros
+ return 32 - clon(~integer) |0;
+ */
+}
+</pre>
+
+<p>これらのヘルパー関数を ASM.JS モジュールに入れます。そして、そうすれば、真のパフォーマンスの傑作ができあがります。このような状況は、まさに ASM.JS のために設計されたものです。</p>
+
+<pre class="brush: js notranslate">var countTrailsMethods = (function(stdlib, foreign, heap) {
+ "use asm";
+ var clz = stdlib.Math.clz32;
+ function ctrz(integer) { // count trailing zeros
+ integer = integer | 0; // coerce to an integer
+ // 1. fill in all the higher bits after the first one
+ // ASMjs for some reason does not allow ^=,&amp;=, or |=
+ integer = integer | (integer &lt;&lt; 16);
+ integer = integer | (integer &lt;&lt; 8);
+ integer = integer | (integer &lt;&lt; 4);
+ integer = integer | (integer &lt;&lt; 2);
+ integer = integer | (integer &lt;&lt; 1);
+ // 2. Now, inversing the bits reveals the lowest bits
+ return 32 - clz(~integer) |0;
+ }
+ function ctron(integer) { // count trailing ones
+ integer = integer | 0; // coerce to an integer
+ return ctrz(~integer) |0;
+ }
+ // unfourtunately, ASM.JS demands slow crummy objects:
+ return {a: ctrz, b: ctron};
+})(window, null, null);
+var ctrz = countTrailsMethods.a;
+var ctron = countTrailsMethods.b;</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.clz32" name="Using_Math.clz32">Math.clz32() の使用</h3>
+
+<pre class="brush: js notranslate">Math.clz32(1); // 31
+Math.clz32(1000); // 22
+Math.clz32(); // 32
+
+var stuff = [NaN, Infinity, -Infinity, 0, -0, false, null, undefined, 'foo', {}, []];
+stuff.every(n =&gt; Math.clz32(n) == 32); // true
+
+Math.clz32(true); // 31
+Math.clz32(3.5); // 30</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>以下のポリフィルが最も効果的です。</p>
+
+<pre class="brush: js notranslate">if (!Math.clz32) Math.clz32 = (function(log, LN2){
+ return function(x) {
+ // Let n be ToUint32(x).
+ // Let p be the number of leading zero bits in
+ // the 32-bit binary representation of n.
+ // Return p.
+ var asUint = x &gt;&gt;&gt; 0;
+ if (asUint === 0) {
+ return 32;
+ }
+ return 31 - (log(asUint) / LN2 | 0) |0; // the "| 0" acts like math.floor
+ };
+})(Math.log, Math.LN2);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.clz32', 'Math.clz32')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.clz32")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math")}}</li>
+ <li>{{jsxref("Math.imul")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/cos/index.html b/files/ja/web/javascript/reference/global_objects/math/cos/index.html
new file mode 100644
index 0000000000..b70725a5c6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/cos/index.html
@@ -0,0 +1,85 @@
+---
+title: Math.cos()
+slug: Web/JavaScript/Reference/Global_Objects/Math/cos
+tags:
+ - Geometry
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+ - Trigonometry
+ - cos
+ - cosine
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/cos
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Math.cos()</code></strong> は静的関数で、指定された角度の余弦 ({{interwiki("wikipedia", "コサイン")}}) を返します。ここで角度は{{interwiki("wikipedia", "ラジアン")}}で指定します。この値は</span> <math style="display: inline;"> <mstyle displaystyle="true"> <mfrac> <msub> <mrow> <mtext>length</mtext> </mrow> <mrow> <mrow> <mtext>adjacent</mtext> </mrow> </mrow> </msub> <msub> <mrow> <mtext>length</mtext> </mrow> <mrow> <mrow> <mtext>hypotenuse</mtext> </mrow> </mrow> </msub> </mfrac> </mstyle> </math> です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-cos.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.cos(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>余弦を返すラジアンの角度。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値の余弦 (コサイン) です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Math.cos()</code> メソッドはラジアンで指定された角度の余弦 (コサイン) を表す -1 から 1 までの範囲の数値を表します。</p>
+
+<p><code>cos()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.cos()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.cos" name="Using_Math.cos">Math.cos() の使用</h3>
+
+<pre class="brush: js notranslate">Math.cos(0); // 1
+Math.cos(1); // 0.5403023058681398
+
+Math.cos(Math.PI); // -1
+Math.cos(2 * Math.PI); // 1
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.cos', 'Math.cos')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.cos")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.acos()")}}</li>
+ <li>{{jsxref("Math.asin()")}}</li>
+ <li>{{jsxref("Math.atan()")}}</li>
+ <li>{{jsxref("Math.atan2()")}}</li>
+ <li>{{jsxref("Math.sin()")}}</li>
+ <li>{{jsxref("Math.tan()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/cosh/index.html b/files/ja/web/javascript/reference/global_objects/math/cosh/index.html
new file mode 100644
index 0000000000..087086fa4d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/cosh/index.html
@@ -0,0 +1,95 @@
+---
+title: Math.cosh()
+slug: Web/JavaScript/Reference/Global_Objects/Math/cosh
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/cosh
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.cosh()</code></strong> 関数は、引数として与えた数の双曲線余弦 (ハイパーボリックコサイン) を返します。これは{{jsxref("Math.E", "定数 e", "", 1)}} を使用して次のように表すことができます。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mo lspace="0em" rspace="thinmathspace">Math.cosh(x)</mo></mstyle><mo>=</mo><mfrac><mrow><msup><mi>e</mi><mi>x</mi></msup><mo>+</mo><msup><mi>e</mi><mrow><mo>-</mo><mi>x</mi></mrow></msup></mrow><mn>2</mn></mfrac></mrow><annotation encoding="TeX">\mathtt{\operatorname{Math.cosh(x)}} = \frac{e^x + e^{-x}}{2}</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-cosh.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.cosh(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された数値の双曲線余弦 (ハイパーボリックコサイン) です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>cosh()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.cosh()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.cosh" name="Using_Math.cosh">Math.cosh() の使用</h3>
+
+<pre class="brush: js notranslate">Math.cosh(0); // 1
+Math.cosh(1); // 1.5430806348152437
+Math.cosh(-1); // 1.5430806348152437
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>これは {{jsxref("Math.exp()")}} 関数を使用して次のようにエミュレートできます。</p>
+
+<pre class="brush: js notranslate">Math.cosh = Math.cosh || function(x) {
+ return (Math.exp(x) + Math.exp(-x)) / 2;
+}
+</pre>
+
+<p>または {{jsxref("Math.exp()")}} 関数を一度だけ呼び出すようにすると、次のようになります。</p>
+
+<pre class="brush: js notranslate">Math.cosh = Math.cosh || function(x) {
+ var y = Math.exp(x);
+ return (y + 1 / y) / 2;
+};
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.cosh', 'Math.cosh')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.cosh")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.acosh()")}}</li>
+ <li>{{jsxref("Math.asinh()")}}</li>
+ <li>{{jsxref("Math.atanh()")}}</li>
+ <li>{{jsxref("Math.sinh()")}}</li>
+ <li>{{jsxref("Math.tanh()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/e/index.html b/files/ja/web/javascript/reference/global_objects/math/e/index.html
new file mode 100644
index 0000000000..c837f079a9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/e/index.html
@@ -0,0 +1,67 @@
+---
+title: Math.E
+slug: Web/JavaScript/Reference/Global_Objects/Math/E
+tags:
+ - JavaScript
+ - Math
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/E
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.E</code></strong> プロパティは自然対数の底 (e)、約 2.718 を表します。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.E</mi></mstyle><mo>=</mo><mi>e</mi><mo>≈</mo><mn>2.718</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.E}} = e \approx 2.718</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-e.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>E</code> は <code>Math</code> オブジェクトの静的プロパティなので、 <code>Math</code> オブジェクトを生成してプロパティとして使用するのではなく、常に <code>Math.E</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.E" name="Using_Math.E">Math.E の使用</h3>
+
+<p>以下の関数は、e を返します。</p>
+
+<pre class="brush: js notranslate">function getNapier() {
+ return Math.E;
+}
+
+getNapier(); // 2.718281828459045
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.e', 'Math.E')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.E")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.log1p()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/exp/index.html b/files/ja/web/javascript/reference/global_objects/math/exp/index.html
new file mode 100644
index 0000000000..c790ba115c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/exp/index.html
@@ -0,0 +1,78 @@
+---
+title: Math.exp()
+slug: Web/JavaScript/Reference/Global_Objects/Math/exp
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/exp
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.exp()</code></strong> 関数は <code>e<sup>x</sup></code> (<code>x</code> は引数、 <code>e</code> は{{jsxref("Math.E", "オイラー数 (ネイピア定数とも)", "", 1)}}、自然対数の底) を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-exp.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.exp(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>e<sup><var>x</var></sup></code> (<code>e</code> は{{jsxref("Math.E", "オイラー数", "", 1)}}、 <code><var>x</var></code> は引数) を表す数値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>exp()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.exp()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.exp" name="Using_Math.exp">Math.exp() の使用</h3>
+
+<pre class="brush: js notranslate">Math.exp(-1); // 0.36787944117144233
+Math.exp(0); // 1
+Math.exp(1); // 2.718281828459045
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.exp', 'Math.exp')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.exp")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.E")}}</li>
+ <li>{{jsxref("Math.expm1()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.log10()")}}</li>
+ <li>{{jsxref("Math.log1p()")}}</li>
+ <li>{{jsxref("Math.log2()")}}</li>
+ <li>{{jsxref("Math.pow()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/expm1/index.html b/files/ja/web/javascript/reference/global_objects/math/expm1/index.html
new file mode 100644
index 0000000000..dd66595f56
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/expm1/index.html
@@ -0,0 +1,87 @@
+---
+title: Math.expm1()
+slug: Web/JavaScript/Reference/Global_Objects/Math/expm1
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/expm1
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.expm1()</code></strong> 関数は <code>e<sup>x</sup> - 1</code> (<code>x</code> は引数、 {{jsxref("Math.E", "e", "", 1)}} は自然対数の底) を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-expm1.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.expm1(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>e<sup>x</sup> - 1</code> (<code>e</code> は{{jsxref("Math.E", "オイラー数", "", 1)}}、 <code>x</code> は引数) を表す数値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>expm1()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.expm1()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.expm1" name="Using_Math.expm1">Math.expm1() の使用</h3>
+
+<pre class="brush: js notranslate">Math.expm1(-1); // -0.6321205588285577
+Math.expm1(0); // 0
+Math.expm1(1); // 1.718281828459045
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>これは {{jsxref("Math.exp()")}} 関数の助けを借りてエミュレートすることができます。</p>
+
+<pre class="brush: js notranslate">Math.expm1 = Math.expm1 || function(x) {
+ return Math.exp(x) - 1;
+};
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.expm1', 'Math.expm1')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.expm1")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.E")}}</li>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.log10()")}}</li>
+ <li>{{jsxref("Math.log1p()")}}</li>
+ <li>{{jsxref("Math.log2()")}}</li>
+ <li>{{jsxref("Math.pow()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/floor/index.html b/files/ja/web/javascript/reference/global_objects/math/floor/index.html
new file mode 100644
index 0000000000..bac5d18b30
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/floor/index.html
@@ -0,0 +1,139 @@
+---
+title: Math.floor()
+slug: Web/JavaScript/Reference/Global_Objects/Math/floor
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/floor
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.floor()</code></strong> 関数は与えられた数値以下の最大の整数を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-floor.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.floor(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された数値以下の最大の整数を表す数値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>floor()</code> は <code>Math</code> オブジェクトの静的なメソッドなので、自ら生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に、<code>Math.floor()</code> として使用するようにしてください (<code>Math</code> のコンストラクターはありません)。</p>
+
+<div class="blockIndicator note">
+<p><strong>注: </strong><code>Math.floor(null)</code> は {{jsxref("NaN")}} ではなく 0 を返します。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.floor" name="Using_Math.floor">Math.floor() の使用</h3>
+
+<pre class="brush: js notranslate">Math.floor( 45.95); // 45
+Math.floor( 45.05); // 45
+Math.floor( 4 ); // 4
+Math.floor(-45.05); // -46
+Math.floor(-45.95); // -46
+</pre>
+
+<h3 id="Decimal_adjustment" name="Decimal_adjustment">十進数の丸め</h3>
+
+<pre class="brush: js notranslate">/**
+ * Decimal adjustment of a number.
+ *
+ * @param {String} type The type of adjustment.
+ * @param {Number} value The number.
+ * @param {Integer} exp The exponent (the 10 logarithm of the adjustment base).
+ * @returns {Number} The adjusted value.
+ */
+function decimalAdjust(type, value, exp) {
+ // If the exp is undefined or zero...
+ if (typeof exp === 'undefined' || +exp === 0) {
+ return Math[type](value);
+ }
+ value = +value;
+ exp = +exp;
+ // If the value is not a number or the exp is not an integer...
+ if (isNaN(value) || !(typeof exp === 'number' &amp;&amp; exp % 1 === 0)) {
+ return NaN;
+ }
+ // Shift
+ value = value.toString().split('e');
+ value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
+ // Shift back
+ value = value.toString().split('e');
+ return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
+}
+
+// Decimal round
+const round10 = (value, exp) =&gt; decimalAdjust('round', value, exp);
+// Decimal floor
+const floor10 = (value, exp) =&gt; decimalAdjust('floor', value, exp);
+// Decimal ceil
+const ceil10 = (value, exp) =&gt; decimalAdjust('ceil', value, exp);
+
+// Round
+round10(55.55, -1); // 55.6
+round10(55.549, -1); // 55.5
+round10(55, 1); // 60
+round10(54.9, 1); // 50
+round10(-55.55, -1); // -55.5
+round10(-55.551, -1); // -55.6
+round10(-55, 1); // -50
+round10(-55.1, 1); // -60
+// Floor
+floor10(55.59, -1); // 55.5
+floor10(59, 1); // 50
+floor10(-55.51, -1); // -55.6
+floor10(-51, 1); // -60
+// Ceil
+ceil10(55.51, -1); // 55.6
+ceil10(51, 1); // 60
+ceil10(-55.59, -1); // -55.5
+ceil10(-59, 1); // -50
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.floor', 'Math.floor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.floor")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.abs()")}}</li>
+ <li>{{jsxref("Math.ceil()")}}</li>
+ <li>{{jsxref("Math.round()")}}</li>
+ <li>{{jsxref("Math.sign()")}}</li>
+ <li>{{jsxref("Math.trunc()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/fround/index.html b/files/ja/web/javascript/reference/global_objects/math/fround/index.html
new file mode 100644
index 0000000000..8af6e99331
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/fround/index.html
@@ -0,0 +1,127 @@
+---
+title: Math.fround()
+slug: Web/JavaScript/Reference/Global_Objects/Math/fround
+tags:
+ - ES6
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+ - fround
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/fround
+---
+<div>{{JSRef}}</div>
+
+<p class="seoSummary"><strong><code>Math.fround()</code></strong> 関数は、ある {{jsxref("Number")}} を表す最も近い{{interwiki("wikipedia", "単精度浮動小数点数", "32ビット単精度")}}浮動小数点数を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-fround.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">var <var>singleFloat</var> = Math.fround(<var>doubleFloat</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>doubleFloat</var></code></dt>
+ <dd>{{jsxref("Number")}}。この引数が異なる方であった場合は、数値に変換されるか、変換できなければ {{jsxref("NaN")}} になります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた値を表す最も近い {{interwiki("wikipedia", "単精度浮動小数点数", "32 ビット単精度")}}浮動小数点数です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>JavaScriptは内部的に 64 ビットの倍精度浮動小数点数を使用しており、非常に高い精度を提供しています。しかし、例えば {{jsxref("Float32Array")}} から値を読み込む場合など 32 ビットの浮動小数点数を扱うことがあるかもしれません。これは混乱を招く可能性があります。 64 ビットの浮動小数点数と 32 ビットの浮動小数点数が等しいかどうかをチェックすると、一見同じように見える数値であっても失敗することがあります。</p>
+
+<p>これを解決するには、 <code>Math.fround()</code> を使用して、 64 ビット浮動小数点数を 32 ビットの浮動小数点数にキャストすることができます。内部的には、 JavaScript は数値を 64 ビットの浮動小数点数として扱い続けますが、仮数の23番目のビットに「偶数への丸め」を実行し、それに続く仮数ビットをすべて 0 に設定します。数値が 32 ビットの浮動小数点数の範囲外の場合は、 {{jsxref("Infinity")}} または <code>-Infinity</code> が返されます。</p>
+
+<p><code>fround()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.fround()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.fround" name="Using_Math.fround">Math.fround() の使用</h3>
+
+<p>1.5 という数値は二進数で正確に表すことができ、32ビットと64ビットとで同じになります。</p>
+
+<pre class="brush: js notranslate">Math.fround(1.5); // 1.5
+Math.fround(1.5) === 1.5; // true
+</pre>
+
+<p>しかし、 1.337 という数値は二進数では正確に表すことができず、32ビットと64ビットとで異なります。</p>
+
+<pre class="brush: js notranslate">Math.fround(1.337); // 1.3370000123977661
+Math.fround(1.337) === 1.337; // false
+</pre>
+
+<p><math><semantics><msup><mn>2</mn><mn>150</mn></msup><annotation encoding="TeX">2^150</annotation></semantics></math> は32ビット浮動小数点では大きすぎるため、 <code>Infinity</code> が返されます。</p>
+
+<pre class="brush: js notranslate">2 ** 150; // 1.42724769270596e+45
+Math.fround(2 ** 150); // Infinity
+</pre>
+
+<p>引数が数値に変換できない場合、または{{interwiki("wikipedia", "NaN", "非数")}} (<code>NaN</code>) であった場合、 <code>Math.fround()</code> は <code>NaN</code> を返します。</p>
+
+<pre class="brush: js notranslate">Math.fround('abc'); // NaN
+Math.fround(NaN); // NaN
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>これは {{jsxref("Float32Array")}} に対応している場合、次の関数でエミュレートできます。</p>
+
+<pre class="brush: js notranslate">Math.fround = Math.fround || (function (array) {
+ return function(x) {
+ return array[0] = x, array[0];
+ };
+})(new Float32Array(1));
+</pre>
+
+<p>古いブラウザーに対応するには、より遅いですが、次のものも利用できます。</p>
+
+<pre class="brush: js notranslate">if (!Math.fround) Math.fround = function(arg) {
+ arg = Number(arg);
+ // Return early for ±0 and NaN.
+ if (!arg) return arg;
+ var sign = arg &lt; 0 ? -1 : 1;
+ if (sign &lt; 0) arg = -arg;
+ // Compute the exponent (8 bits, signed).
+ var exp = Math.floor(Math.log(arg) / Math.LN2);
+ var powexp = Math.pow(2, Math.max(-126, Math.min(exp, 127)));
+ // Handle subnormals: leading digit is zero if exponent bits are all zero.
+ var leading = exp &lt; -127 ? 0 : 1;
+ // Compute 23 bits of mantissa, inverted to round toward zero.
+ var mantissa = Math.round((leading - arg / powexp) * 0x800000);
+ if (mantissa &lt;= -0x800000) return sign * Infinity;
+ return sign * powexp * (leading - mantissa / 0x800000);
+};</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.fround', 'Math.fround')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.fround")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.round()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/hypot/index.html b/files/ja/web/javascript/reference/global_objects/math/hypot/index.html
new file mode 100644
index 0000000000..83f8161db1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/hypot/index.html
@@ -0,0 +1,127 @@
+---
+title: Math.hypot()
+slug: Web/JavaScript/Reference/Global_Objects/Math/hypot
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/hypot
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.hypot()</code></strong> 関数は、各引数の二乗の合計値の平方根を返します。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.hypot</mo><mo stretchy="false">(</mo><msub><mi>v</mi><mn>1</mn></msub><mo>,</mo><msub><mi>v</mi><mn>2</mn></msub><mo>,</mo><mo>…</mo><mo>,</mo><msub><mi>v</mi><mi>n</mi></msub><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><msqrt><mrow><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msubsup><mi>v</mi><mi>i</mi><mn>2</mn></msubsup></mrow></msqrt><mo>=</mo><msqrt><mrow><msubsup><mi>v</mi><mn>1</mn><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>v</mi><mn>2</mn><mn>2</mn></msubsup><mo>+</mo><mo>…</mo><mo>+</mo><msubsup><mi>v</mi><mi>n</mi><mn>2</mn></msubsup></mrow></msqrt></mrow><annotation encoding="TeX">\mathtt{\operatorname{Math.hypot}(v_1, v_2, \dots, v_n)} = \sqrt{\sum_{i=1}^n v_i^2} = \sqrt{v_1^2 + v_2^2 + \dots + v_n^2}</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-hypot.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力してくださる場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.hypot([<var>value1</var>[, <var>value2</var>[, ...]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value1</var>, <var>value2</var>, ...</code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた各引数の二乗の合計値の平方根を返します。1つ上の引数が数値に変換できなかった場合は、 {{jsxref("NaN")}} が返されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>直角三角形の斜辺や、複素数の大きさを計算するには <code>Math.sqrt(v1*v1 + v2*v2)</code> という公式を用い、ここで v1 と v2 は三角形の辺の長さであったり、複素数の実数と複素数部分であったりします。二次元またはそれ以上の次元における対応する距離は、 <code>Math.sqrt(v1*v1 + v2*v2 + v3*v3 + v4*v4)</code> のように平方根の下にさらに多くの平方を足すことで計算できます。</p>
+
+<p>この関数はこの計算をより簡単に、より高速に行います。 <code>Math.hypot(v1, v2)</code> または <code>Math.hypot(v1, v2, v3, v4, ...)</code> を呼び出すだけです。</p>
+
+<p><code>Math.hypot</code> はまた、数値が非常に大きい場合のオーバーフロー/アンダーフローの問題を回避します。 JS で表現できる最大の数は <code>Number.MAX_VALUE</code> で、これは約 10<sup>308</sup> です。数字の大きさが約 10<sup>154</sup> よりも大きい場合、その2乗を取ると無限大になります。例えば、 <code>Math.sqrt(1e200*1e200 + 1e200*1e200) = Infinity</code>. 代わりに <code>hypot()</code> を使うと、 <code>Math.hypot(1e200, 1e200) = 1.4142...e+200</code> となり、より良い答えが得られます。これは非常に小さな数の場合にも当てはまります。 <code>Math.sqrt(1e-200*1e-200 + 1e-200*1e-200) = 0</code> ですが、 <code>Math.hypot(1e-200, 1e-200) = 1.4142...e-200</code> となります。</p>
+
+<p><code>hypot()</code> は <code>Math</code> の静的メソッドなので、常に <code>Math.hypot()</code> として使用し、自分で <code>Math</code> オブジェクトを生成してそのメソッドとして使用しないでください。 (<code>Math</code> にはコンストラクターがありません)。</p>
+
+<p>引数が与えられなかった場合、結果は +0 になります。引数のいずれかが ±Infinity であった場合、結果は Infinity になります。引数のいずれかが NaN であった場合は (他に ±Infinity の引数がない限り)、結果は NaN になります。数値に変換できない引数があった場合は、結果は {{jsxref("NaN")}} になります。</p>
+
+<p>引数が1つの場合、 <code>Math.hypot()</code> は <code>Math.abs()</code> と同等です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.hypot" name="Using_Math.hypot">Math.hypot() の使用</h3>
+
+<pre class="brush: js notranslate">Math.hypot(3, 4); // 5
+Math.hypot(3, 4, 5); // 7.0710678118654755
+Math.hypot(); // 0
+Math.hypot(NaN); // NaN
+Math.hypot(NaN, Infinity); // Infinity
+Math.hypot(3, 4, 'foo'); // NaN, since +'foo' =&gt; NaN
+Math.hypot(3, 4, '5'); // 7.0710678118654755, +'5' =&gt; 5
+Math.hypot(-3); // 3, the same as Math.abs(-3)
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>オーバーフロー/アンダーフローの問題を処理しないナイーブなアプローチです。</p>
+
+<pre class="brush: js notranslate">if (!Math.hypot) Math.hypot = function() {
+ var y = 0, i = arguments.length, containsInfinity = false;
+ while (i--) {
+ var arg = arguments[i];
+ if (arg === Infinity || arg === -Infinity)
+ containsInfinity = true
+ y += arg * arg
+ }
+ return containsInfinity ? Infinity : Math.sqrt(y)
+}
+</pre>
+
+<p>アンダーフローやオーバーフローを回避するポリフィルです。</p>
+
+<pre class="brush: js notranslate">if (!Math.hypot) Math.hypot = function () {
+ var max = 0;
+ var s = 0;
+ var containsInfinity = false;
+ for (var i = 0; i &lt; arguments.length; ++i) {
+ var arg = Math.abs(Number(arguments[i]));
+ if (arg === Infinity)
+ containsInfinity = true
+ if (arg &gt; max) {
+ s *= (max / arg) * (max / arg);
+ max = arg;
+ }
+ s += arg === 0 &amp;&amp; max === 0 ? 0 : (arg / max) * (arg / max);
+ }
+ return containsInfinity ? Infinity : (max === 1 / 0 ? 1 / 0 : max * Math.sqrt(s));
+};
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.hypot', 'Math.hypot')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.hypot")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.abs()")}}</li>
+ <li>{{jsxref("Math.pow()")}}</li>
+ <li>{{jsxref("Math.sqrt()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/imul/index.html b/files/ja/web/javascript/reference/global_objects/math/imul/index.html
new file mode 100644
index 0000000000..8a3fae3981
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/imul/index.html
@@ -0,0 +1,111 @@
+---
+title: Math.imul()
+slug: Web/JavaScript/Reference/Global_Objects/Math/imul
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+ - imul
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/imul
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.imul()</code></strong> 関数は、2つの引数で C 言語風の32ビット乗算を行った結果を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-imul.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力してくださる場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">var <var>product</var> = Math.imul(<var>a</var>, <var>b</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>a</var></code></dt>
+ <dd>第一の数値。</dd>
+ <dt><code><var>b</var></code></dt>
+ <dd>第二の数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた引数で C 言語風の32ビット乗算を行った結果です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Math.imul()</code> で C 言語と同様のの意味を持った32ビット乗算を行うことができます。この機能は <a href="http://en.wikipedia.org/wiki/Emscripten">Emscripten</a> などのプロジェクトに有効です。</p>
+
+<p><code>imul()</code> は <code>Math</code> の静的メソッドなので、常に <code>Math.imul()</code> として使用し、自分で <code>Math</code> オブジェクトを生成してそのメソッドとして使用しないでください。 (<code>Math</code> にはコンストラクターがありません)。</p>
+
+<p>通常の JavaScript の浮動小数点数を imul で使用すると、性能が低下します。これは、乗算のために浮動小数点から整数に変換し、乗算された整数を浮動小数点に変換するというコストのかかる作業があるからです。 imul が存在する理由は、 (今のところ) たった1つの状況では imul の方が高速だからです。それは AsmJS です。 AsmJS は JIST オプティマイザーが JavaScript で内部整数をより簡単に実装できるようにします。内部的に整数として格納されている2つの数値を imul で乗算すること (これは AsmJS でのみ可能です) は、 Math.imul が現在のブラウザーで性能を発揮する可能性がある唯一の潜在的な状況です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.imul" name="Using_Math.imul">Math.imul() の使用</h3>
+
+<pre class="brush: js notranslate">Math.imul(2, 4); // 8
+Math.imul(-1, 8); // -8
+Math.imul(-2, -2); // 4
+Math.imul(0xffffffff, 5); // -5
+Math.imul(0xfffffffe, 5); // -10
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>これは次の関数でエミュレートすることができます。</p>
+
+<pre class="brush: js notranslate">if (!Math.imul) Math.imul = function(a, b) {
+ var aHi = (a &gt;&gt;&gt; 16) &amp; 0xffff;
+ var aLo = a &amp; 0xffff;
+ var bHi = (b &gt;&gt;&gt; 16) &amp; 0xffff;
+ var bLo = b &amp; 0xffff;
+ // the shift by 0 fixes the sign on the high part
+ // the final |0 converts the unsigned value into a signed value
+ return ((aLo * bLo) + (((aHi * bLo + aLo * bHi) &lt;&lt; 16) &gt;&gt;&gt; 0) | 0);
+};</pre>
+
+<p>しかし、このポリフィルが使われるであろうブラウザーは、 JavaScript の内部整数型で最適化されておらず、すべての数値に浮動小数点を使用している可能性が高いため、次の関数の方が性能が高くなります。</p>
+
+<pre class="brush: js notranslate">if (!Math.imul) Math.imul = function(opA, opB) {
+ opB |= 0; // ensure that opB is an integer. opA will automatically be coerced.
+ // floating points give us 53 bits of precision to work with plus 1 sign bit
+ // automatically handled for our convienence:
+ // 1. 0x003fffff /*opA &amp; 0x000fffff*/ * 0x7fffffff /*opB*/ = 0x1fffff7fc00001
+ // 0x1fffff7fc00001 &lt; Number.MAX_SAFE_INTEGER /*0x1fffffffffffff*/
+ var result = (opA &amp; 0x003fffff) * opB;
+ // 2. We can remove an integer coersion from the statement above because:
+ // 0x1fffff7fc00001 + 0xffc00000 = 0x1fffffff800001
+ // 0x1fffffff800001 &lt; Number.MAX_SAFE_INTEGER /*0x1fffffffffffff*/
+ if (opA &amp; 0xffc00000 /*!== 0*/) result += (opA &amp; 0xffc00000) * opB |0;
+ return result |0;
+};</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.imul', 'Math.imul')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.imul")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://en.wikipedia.org/wiki/Emscripten">Emscripten</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/index.html b/files/ja/web/javascript/reference/global_objects/math/index.html
new file mode 100644
index 0000000000..711c071a18
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/index.html
@@ -0,0 +1,188 @@
+---
+title: Math
+slug: Web/JavaScript/Reference/Global_Objects/Math
+tags:
+ - JavaScript
+ - Math
+ - Namespace
+ - Reference
+ - 名前空間
+translation_of: Web/JavaScript/Reference/Global_Objects/Math
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math</code></strong> は、数学的な定数と関数を提供するプロパティとメソッドを持つ、組み込みのオブジェクトです。関数オブジェクトではありません。</p>
+
+<p><code>Math</code> は {{jsxref("Number")}} 型で動作します。 {{jsxref("BigInt")}} 型では動作しません。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>他のグローバルオブジェクトと異なり、<code>Math</code> はコンストラクタではありません。<code>Math</code> オブジェクトのすべてのプロパティとメソッドは、静的です。円周率を表す定数πは、<code>Math.PI</code> として参照でき、正弦関数は、 <code>Math.sin(<var>x</var>)</code> として呼び出すことができます (ここでの <code><var>x</var></code> は、メソッドの引数です)。定数は、 JavaScript における実数での完全な精度で定義されています。</p>
+
+<div class="note">
+<p><strong>メモ:</strong> 多くの <code>Math</code> 関数の精度は<em>実装に依存します</em>。</p>
+
+<p>これは、ブラウザーごとに結果が異なる場合があることを意味し、同じ JavaScript エンジン上であっても、 OS やアーキテクチャが異なれば結果が異なる場合があります。</p>
+</div>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Math.E")}}</dt>
+ <dd>ネイピア数 (オイラー数)。これは自然対数の底として用いられる数学定数で、約 <code>2.718</code> です。</dd>
+ <dt>{{jsxref("Math.LN2")}}</dt>
+ <dd><code>2</code> の自然対数。約 <code>0.693</code> です。</dd>
+ <dt>{{jsxref("Math.LN10")}}</dt>
+ <dd><code>10</code> の自然対数。約 <code>2.303</code> です。</dd>
+ <dt>{{jsxref("Math.LOG2E")}}</dt>
+ <dd>2 を底とした <code>E</code> の対数。約 <code>1.443</code> です。</dd>
+ <dt>{{jsxref("Math.LOG10E")}}</dt>
+ <dd>10 を底とした <code>E</code> の対数。約 <code>0.434</code> です。</dd>
+ <dt>{{jsxref("Math.PI")}}</dt>
+ <dd>円周率。約 <code>3.14159</code> です。</dd>
+ <dt>{{jsxref("Math.SQRT1_2")}}</dt>
+ <dd>½ の平方根 (または<sup>1</sup>/<sub>√2</sub> とひとしいすう)。約 <code>0.707</code> です。</dd>
+ <dt>{{jsxref("Math.SQRT2")}}</dt>
+ <dd><code>2</code> の平方根。約 <code>1.414</code> です。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Math/abs", "Math.abs(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> の絶対値を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/acos", "Math.acos(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のアークコサイン (逆余弦) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/acosh", "Math.acosh(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のハイパーボリックアークコサイン (双曲線逆余弦) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/asin", "Math.asin(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のアークサイン (逆正弦) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/asinh", "Math.asinh(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のハイパーボリックアークサイン (双曲線逆正弦) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/atan", "Math.atan(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のアークタンジェント (逆正接) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/atanh", "Math.atanh(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のハイパーボリックアークタンジェント (双曲線逆正接) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/atan2", "Math.atan2(<var>y</var>, <var>x</var>)")}}</dt>
+ <dd>引数で指定されたの比率のアークタンジェント (逆正接) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/cbrt", "Math.cbrt(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> の立方根を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/ceil", "Math.ceil(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> 以上の最小の整数を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/clz32", "Math.clz32(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> を 2 進数 32 ビット整数値で表した数の先頭の 0 の個数を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/cos", "Math.cos(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のコサイン (余弦) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/cosh", "Math.cosh(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のハイパーボリックコサイン (双曲線余弦) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/exp", "Math.exp(<var>x</var>)")}}</dt>
+ <dd><code>E<var><sup>x</sup></var></code> を返します。ここで <code><var>x</var></code> は引数であり、 <code>E</code> はオイラー定数 (<code>2.718</code>…, 自然対数の低) です。</dd>
+ <dt>{{jsxref("Global_Objects/Math/expm1", "Math.expm1(<var>x</var>)")}}</dt>
+ <dd><code>exp(<var>x</var>)</code> から <code>1</code> を引いた値を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/floor", "Math.floor(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> 以下の最大の整数を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/fround", "Math.fround(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> に近似の <a href="https://ja.wikipedia.org/wiki/%E5%8D%98%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0" title="WikiPedia ページへのリンク">単精度</a> 浮動小数点数を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/hypot", "Math.hypot([<var>x</var>[, <var>y</var>[, …]]])")}}</dt>
+ <dd>引数の二乗和の平方根を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/imul", "Math.imul(<var>x</var>, <var>y</var>)")}}</dt>
+ <dd><code><var>x</var></code> と <code><var>y</var></code> の 32 ビット乗算の結果を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/log", "Math.log(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> の自然対数 (㏒<sub>e</sub>) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/log1p", "Math.log1p(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> の <code>1 + x</code> の自然対数 (㏒<sub>e</sub>) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/log10", "Math.log10(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> の 10 を底とした対数 (log<sub>10</sub>) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/log2", "Math.log2(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> の 2 を底とした対数 (log<sub>2</sub>) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/max", "Math.max([<var>x</var>[, <var>y</var>[, …]]])")}}</dt>
+ <dd>引数として与えた複数の値の中で最大の値を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/min", "Math.min([<var>x</var>[, <var>y</var>[, …]]])")}}</dt>
+ <dd>引数として与えた複数の値の中で最小の値を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/pow", "Math.pow(<var>x</var>, <var>y</var>)")}}</dt>
+ <dd><code><var>x</var></code> を <code><var>y</var></code> で累乗した値、すなわち <code><var>x</var><var><sup>y</sup></var></code> を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/random", "Math.random()")}}</dt>
+ <dd><code>0</code> 以上 <code>1</code> 未満の疑似乱数を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/round", "Math.round(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> を四捨五入して、近似の整数を返す</dd>
+ <dt>{{jsxref("Global_Objects/Math/sign", "Math.sign(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> の符号を返す。<code><var>x</var></code> が正、負、 0 のいずれであるかを返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/sin", "Math.sin(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のサイン (正弦) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/sinh", "Math.sinh(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のハイパーボリックサイン (双曲線正弦) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/sqrt", "Math.sqrt(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> の平方根を返す</dd>
+ <dt>{{jsxref("Global_Objects/Math/tan", "Math.tan(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のタンジェント (正接) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/tanh", "Math.tanh(<var>x</var>)")}}</dt>
+ <dd><code><var>x</var></code> のハイパーボリックサイン (双曲線正接) を返す。</dd>
+ <dt>{{jsxref("Global_Objects/Math/trunc", "Math.trunc(<var>x</var>)")}}</dt>
+ <dd>数値 <code><var>x</var></code> の小数点以下を削除し、整数の部分を返す。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<h3 id="Converting_between_degrees_and_radians" name="Converting_between_degrees_and_radians">角度とラジアンの間の変換</h3>
+
+<p>三角関数 (<code>sin()</code>, <code>cos()</code>, <code>tan()</code>, <code>asin()</code>, <code>acos()</code>, <code>atan()</code>, <code>atan2()</code>) は、角度に<em>ラジアン</em>を要求したり、返したりします。</p>
+
+<p>人間は角度で考える傾向があり、 (CSS 変形関数など) 一部の関数角度を受け付けますので、手軽に両者の間を変換する関数を用意しておくといいでしょう。</p>
+
+<pre class="brush: js notranslate">function degToRad(degrees) {
+ return degrees * (Math.PI / 180);
+};
+
+function radToDeg(rad) {
+ return rad / (Math.PI / 180);
+};</pre>
+
+<h3 id="Calculating_the_height_of_an_equalateral_triangle" name="Calculating_the_height_of_an_equalateral_triangle">二等辺三角形の高さの計算</h3>
+
+<p>二等辺三角形の高さを計算したい場合、側辺の長さが 100 であるとわかっている場合は、<em>隣の角に正接を乗じた長さは、反対側と等しくなる</em>という数式を使用することができます。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/14829/trigonometry.png" style="display: block; margin: 0 auto;"></p>
+
+<p>JavaScript では、次のようにして実現することができます。</p>
+
+<pre class="brush: js notranslate">50 * Math.tan(degToRad(60)).</pre>
+
+<p><code>degToRad()</code> 関数を使用して60度をラジアンに変換しています。これは {{jsxref("Math.tan()")}} がラジアンの入力値を要求するからです。</p>
+
+<h3 id="Returning_a_random_integer_between_two_bounds" name="Returning_a_random_integer_between_two_bounds">2つの値の間にある整数の乱数を返す</h3>
+
+<p>これは {{jsxref("Math.random()")}} と {{jsxref("Math.floor()")}} の組み合わせで実現できます。</p>
+
+<pre class="brush: js notranslate">function random(min, max) {
+ const num = Math.floor(Math.random() * (max - min + 1)) + min;
+ return num;
+}
+
+random(1, 10);</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math-object', 'Math')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/ln10/index.html b/files/ja/web/javascript/reference/global_objects/math/ln10/index.html
new file mode 100644
index 0000000000..033ee18067
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/ln10/index.html
@@ -0,0 +1,67 @@
+---
+title: Math.LN10
+slug: Web/JavaScript/Reference/Global_Objects/Math/LN10
+tags:
+ - JavaScript
+ - Math
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN10
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.LN10</code></strong> プロパティは 10 の自然対数、およそ 2.302 を表します。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.LN10</mi></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">ln</mo><mo stretchy="false">(</mo><mn>10</mn><mo stretchy="false">)</mo><mo>≈</mo><mn>2.302</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.LN10}} = \ln(10) \approx 2.302</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-ln10.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>LN10</code> は <code>Math</code> オブジェクトの静的プロパティなので、 <code>Math</code> オブジェクトを生成してプロパティとして使用するのではなく、常に <code>Math.LN10</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.LN10" name="Using_Math.LN10">Math.LN10 の使用</h3>
+
+<p>以下の関数は、10 の自然対数を返します。</p>
+
+<pre class="brush:js notranslate">function getNatLog10() {
+ return Math.LN10;
+}
+
+getNatLog10(); // 2.302585092994046
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.ln10', 'Math.LN10')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.LN10")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.log10()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/ln2/index.html b/files/ja/web/javascript/reference/global_objects/math/ln2/index.html
new file mode 100644
index 0000000000..120d3d051b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/ln2/index.html
@@ -0,0 +1,67 @@
+---
+title: Math.LN2
+slug: Web/JavaScript/Reference/Global_Objects/Math/LN2
+tags:
+ - JavaScript
+ - Math
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN2
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.LN2</code></strong> プロパティは2の自然対数、およそ0.693を表します。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.LN2</mi></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">ln</mo><mo stretchy="false">(</mo><mn>2</mn><mo stretchy="false">)</mo><mo>≈</mo><mn>0.693</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.LN2}} = \ln(2) \approx 0.693</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-ln2.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>LN2</code> は <code>Math</code> オブジェクトの静的プロパティなので、 <code>Math</code> オブジェクトを生成してプロパティとして使用するのではなく、常に <code>Math.LN2</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.LN2" name="Using_Math.LN2">Math.LN2 の使用</h3>
+
+<p>以下の関数は、2の自然対数を返します。</p>
+
+<pre class="brush:js notranslate">function getNatLog2() {
+ return Math.LN2;
+}
+
+getNatLog2(); // 0.6931471805599453
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.ln2', 'Math.LN2')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.LN2")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.log2()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/log/index.html b/files/ja/web/javascript/reference/global_objects/math/log/index.html
new file mode 100644
index 0000000000..f19a35a38d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/log/index.html
@@ -0,0 +1,98 @@
+---
+title: Math.log()
+slug: Web/JavaScript/Reference/Global_Objects/Math/log
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/log
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.log()</code></strong> 関数は、 ({{jsxref("Math.E", "e")}} を底とした) 数値の自然対数を返します。</p>
+
+<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>&gt;</mo><mn>0</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.log</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">ln</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext>the unique</mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>such that</mtext><mspace width="thickmathspace"></mspace><msup><mi>e</mi><mi>y</mi></msup><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x &gt; 0, \mathtt{\operatorname{Math.log}(x)} = \ln(x) = \text{the unique} \; y \; \text{such that} \; e^y = x</annotation></semantics></math></p>
+
+<p>JavaScript の <strong><code>Math.log()</code></strong> 関数は、数学の <em>ln(x)</em> と同等です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-log.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.log(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>({{jsxref("Math.E", "e")}} を底とした) 与えられた数値の自然対数です。数値が負の数であった場合、 {{jsxref("NaN")}} が返されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>x</var></code> の値が 0 であった場合、返値は常に {{jsxref("Number.NEGATIVE_INFINITY", "-Infinity")}} です。</p>
+
+<p><code><var>x</var></code> の値が 0 未満であった場合、返値は常に {{jsxref("NaN")}} です。</p>
+
+<p><code>log()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.log()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<p>2 または 10 の自然対数が必要な場合は、定数の {{jsxref("Math.LN2")}} または {{jsxref("Math.LN10")}} を使用してください。 2 や 10 を底とした対数が必要な場合は、 {{jsxref("Math.log2()")}} または {{jsxref("Math.log10()")}} を使用してください。他の数を底とした対数が必要な場合は、下記の例にあるように Math.log(x) / Math.log(otherBase) を使用してください。事前に 1 / Math.log(otherBase) を計算しておいた方がいいかもしれません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.log" name="Using_Math.log">Math.log() の使用</h3>
+
+<pre class="brush: js notranslate">Math.log(-1); // NaN, out of range
+Math.log(0); // -Infinity
+Math.log(1); // 0
+Math.log(10); // 2.302585092994046
+</pre>
+
+<h3 id="Using_Math.log_with_a_different_base" name="Using_Math.log_with_a_different_base">様々な底による Math.log() の使用</h3>
+
+<p>以下の関数は、 <code>x</code> を底とした <code>y</code> の対数を返します (すなわち <math><semantics><mrow><msub><mo>log</mo><mi>x</mi></msub><mi>y</mi></mrow><annotation encoding="TeX">\log_x y</annotation></semantics></math>)。</p>
+
+<pre class="brush: js notranslate">function getBaseLog(x, y) {
+ return Math.log(y) / Math.log(x);
+}
+</pre>
+
+<p><code>getBaseLog(10, 1000)</code> を実行すると、実際の答えが 3 であるのに対し、浮動小数点の丸め処理により近似値の <code>2.9999999999999996</code> を返します。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.log', 'Math.log')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.log")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log1p()")}}</li>
+ <li>{{jsxref("Math.log10()")}}</li>
+ <li>{{jsxref("Math.log2()")}}</li>
+ <li>{{jsxref("Math.pow()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/log10/index.html b/files/ja/web/javascript/reference/global_objects/math/log10/index.html
new file mode 100644
index 0000000000..cc9aca7ba5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/log10/index.html
@@ -0,0 +1,94 @@
+---
+title: Math.log10()
+slug: Web/JavaScript/Reference/Global_Objects/Math/log10
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/log10
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.log10()</code></strong> 関数は、数値の 10 を底とした対数を返します。</p>
+
+<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>&gt;</mo><mn>0</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.log10</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><msub><mo lspace="0em" rspace="0em">log</mo><mn>10</mn></msub><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext>the unique</mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>such that</mtext><mspace width="thickmathspace"></mspace><msup><mn>10</mn><mi>y</mi></msup><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x &gt; 0, \mathtt{\operatorname{Math.log10}(x)} = \log_10(x) = \text{the unique} \; y \; \text{such that} \; 10^y = x</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-log10.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.log10(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値の 10 を底とした対数です。数値が負の数であった場合、 {{jsxref("NaN")}} が返されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>x</var></code> の値が 0 未満であった場合、返値は常に {{jsxref("NaN")}} です。</p>
+
+<p><code>log10()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.log10()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<p>この関数は Math.log(x) / Math.log(10) と同等です。 log10(e) には定数 {{jsxref("Math.LOG10E")}} を使用してください (これは 1 / {{jsxref("Math.LN10")}} です。)</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.log10" name="Using_Math.log10">Math.log10() の使用</h3>
+
+<pre class="brush: js notranslate">Math.log10(2); // 0.3010299956639812
+Math.log10(1); // 0
+Math.log10(0); // -Infinity
+Math.log10(-2); // NaN
+Math.log10(100000); // 5
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>これは以下の関数でエミュレートできます。</p>
+
+<pre class="brush: js notranslate">Math.log10 = Math.log10 || function(x) {
+ return Math.log(x) * Math.LOG10E;
+};
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.log10', 'Math.log10')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.log10")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.log1p()")}}</li>
+ <li>{{jsxref("Math.log2()")}}</li>
+ <li>{{jsxref("Math.pow()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/log10e/index.html b/files/ja/web/javascript/reference/global_objects/math/log10e/index.html
new file mode 100644
index 0000000000..724ae98b0c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/log10e/index.html
@@ -0,0 +1,67 @@
+---
+title: Math.LOG10E
+slug: Web/JavaScript/Reference/Global_Objects/Math/LOG10E
+tags:
+ - JavaScript
+ - Math
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG10E
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.LOG10E</code></strong> プロパティは 10 を底とした e の対数、約 0.434 を表します。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.LOG10E</mi></mstyle><mo>=</mo><msub><mo lspace="0em" rspace="0em">log</mo><mn>10</mn></msub><mo stretchy="false">(</mo><mi>e</mi><mo stretchy="false">)</mo><mo>≈</mo><mn>0.434</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.LOG10E}} = \log_10(e) \approx 0.434</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-log10e.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>LOG10E</code> は <code>Math</code> オブジェクトの静的プロパティなので、 <code>Math</code> オブジェクトを生成してプロパティとして使用するのではなく、常に <code>Math.LOG10E</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.LOG10E" name="Using_Math.LOG10E">Math.LOG10E の使用</h3>
+
+<p>以下の関数は、10を底とした e の対数を返します。</p>
+
+<pre class="brush:js notranslate">function getLog10e() {
+ return Math.LOG10E;
+}
+
+getLog10e(); // 0.4342944819032518
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.log10e', 'Math.LOG10E')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.LOG10E")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.log10()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/log1p/index.html b/files/ja/web/javascript/reference/global_objects/math/log1p/index.html
new file mode 100644
index 0000000000..83b5350ab2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/log1p/index.html
@@ -0,0 +1,104 @@
+---
+title: Math.log1p()
+slug: Web/JavaScript/Reference/Global_Objects/Math/log1p
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/log1p
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.log1p()</code></strong> 関数は、 1 + 数値の ({{jsxref("Math.E", "e")}} を底とする) 自然対数を返します。</p>
+
+<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>&gt;</mo><mo>-</mo><mn>1</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.log1p</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">ln</mo><mo stretchy="false">(</mo><mn>1</mn><mo>+</mo><mi>x</mi><mo stretchy="false">)</mo></mrow><annotation encoding="TeX">\forall x &gt; -1, \mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-log1p.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.log1p(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>1 + 与えられた数値の ({{jsxref("Math.E", "e")}} を底とした) 自然対数です。数値が <strong>-1</strong> よりも小さかった場合は {{jsxref("NaN")}} が返されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>x</var></code> の値が非常に小さかった場合、 1 を加えると有効精度が減少します。 JS で使用する倍精度浮動小数点型の精度は 15 桁です。 1 + 1e-15 = 1.000000000000001 ですが、 1 + 1e-16 = 1.000000000000000 となり、 15 桁を超えた桁は四捨五入されるため、正確に 1.0 となります。</p>
+
+<p>log(1 + x) を計算すると、 x が小さければ、 x にとても近い答えになるはずです (これが「自然」対数と呼ばれる所以です)。 Math.log(1 + 1.1111111111e-15) を計算すると、 1.1111111111e-15 に近い答えが得られるはずです。しかし、 1.00000000000000111022 の対数を取ることになります (四捨五入は二進数なので、時に醜い結果になることがあります) ので、答えは 1.11022...e-15 となり、正しい数字は 3 桁だけです。もし、代わりに Math.log1p(1.1111111111e-15) を計算した場合は、もっとずっと正確な答えである 1.1111111110999995e-15 が得られ、 15 桁の正しい数字が得られます (この場合は実際には 16 桁です)。</p>
+
+<p><code><var>x</var></code> の値が -1 未満であった場合、返値は常に {{jsxref("NaN")}} です。</p>
+
+<p><code>log1p()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.log1p()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>これは次の関数でエミュレートできます。</p>
+
+<pre class="brush: js notranslate">Math.log1p = Math.log1p || function(x) {
+ x = Number(x);
+ if (x &lt; -1 || x !== x)
+ return NaN;
+ if (x === 0 || x === Infinity)
+ return x;
+
+ var nearX = (x + 1) - 1;
+
+ return nearX === 0 ? x : x * (Math.log(x + 1) / nearX);
+};
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.log1p" name="Using_Math.log1p">Math.log1p() の使用</h3>
+
+<pre class="brush: js notranslate">Math.log1p(1); // 0.6931471805599453
+Math.log1p(0); // 0
+Math.log1p(-1); // -Infinity
+Math.log1p(-2); // NaN
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.log1p', 'Math.log1p')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.log1p")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.expm1()")}}</li>
+ <li>{{jsxref("Math.log10()")}}</li>
+ <li>{{jsxref("Math.log2()")}}</li>
+ <li>{{jsxref("Math.pow()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/log2/index.html b/files/ja/web/javascript/reference/global_objects/math/log2/index.html
new file mode 100644
index 0000000000..b7fadcb09e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/log2/index.html
@@ -0,0 +1,95 @@
+---
+title: Math.log2()
+slug: Web/JavaScript/Reference/Global_Objects/Math/log2
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/log2
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.log2()</code></strong> 関数は、数値の 2 を底とした対数を返します。</p>
+
+<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>&gt;</mo><mn>0</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.log2</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><msub><mo lspace="0em" rspace="0em">log</mo><mn>2</mn></msub><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext>the unique</mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>such that</mtext><mspace width="thickmathspace"></mspace><msup><mn>2</mn><mi>y</mi></msup><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x &gt; 0, \mathtt{\operatorname{Math.log2}(x)} = \log_2(x) = \text{the unique} \; y \; \text{such that} \; 2^y = x</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-log2.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.log2(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値の 2 を底とした対数です。数値が負の数であった場合、 {{jsxref("NaN")}} が返されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>x</var></code> の値が 0 未満であった場合、返値は常に {{jsxref("NaN")}} です。</p>
+
+<p><code>log2()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.log2()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<p>この関数は Math.log(x) / Math.log(2) と同等です。 log2(e) には定数 {{jsxref("Math.LOG2E")}} を使用してください (これは 1 / {{jsxref("Math.LN2")}} です。)</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>このポリフィルは <code>Math.log2</code> 関数をエミュレートします。なお、これは入力値によっては不正確な値を返すので (1 &lt;&lt; 29 など)、ビットマスクで使用するときは {{jsxref("Math.round()")}} で囲んでください。</p>
+
+<pre class="brush: js notranslate">if (!Math.log2) Math.log2 = function(x) {
+ return Math.log(x) * Math.LOG2E;
+};
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.log2" name="Using_Math.log2">Math.log2() の使用</h3>
+
+<pre class="brush: js notranslate">Math.log2(3); // 1.584962500721156
+Math.log2(2); // 1
+Math.log2(1); // 0
+Math.log2(0); // -Infinity
+Math.log2(-2); // NaN
+Math.log2(1024); // 10
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.log2', 'Math.log2')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.log2")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.log10()")}}</li>
+ <li>{{jsxref("Math.log1p()")}}</li>
+ <li>{{jsxref("Math.pow()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/log2e/index.html b/files/ja/web/javascript/reference/global_objects/math/log2e/index.html
new file mode 100644
index 0000000000..b5842c8e01
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/log2e/index.html
@@ -0,0 +1,67 @@
+---
+title: Math.LOG2E
+slug: Web/JavaScript/Reference/Global_Objects/Math/LOG2E
+tags:
+ - JavaScript
+ - Math
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG2E
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.LOG2E</code></strong> プロパティは 2 を底とした e の対数、約 1.442 を表します。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.LOG2E</mi></mstyle><mo>=</mo><msub><mo lspace="0em" rspace="0em">log</mo><mn>2</mn></msub><mo stretchy="false">(</mo><mi>e</mi><mo stretchy="false">)</mo><mo>≈</mo><mn>1.442</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.LOG2E}} = \log_2(e) \approx 1.442</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-log2e.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>LOG2E</code> は <code>Math</code> オブジェクトの静的プロパティなので、 <code>Math</code> オブジェクトを生成してプロパティとして使用するのではなく、常に <code>Math.LOG2E</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.LOG2E" name="Using_Math.LOG2E">Math.LOG2E の使用</h3>
+
+<p>以下の関数は、2を底とした e の対数を返します。</p>
+
+<pre class="brush: js notranslate">function getLog2e() {
+ return Math.LOG2E;
+}
+
+getLog2e(); // 1.4426950408889634
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.log2e', 'Math.LOG2E')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.LOG2E")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.log2()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/max/index.html b/files/ja/web/javascript/reference/global_objects/math/max/index.html
new file mode 100644
index 0000000000..02e962e9b4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/max/index.html
@@ -0,0 +1,100 @@
+---
+title: Math.max()
+slug: Web/JavaScript/Reference/Global_Objects/Math/max
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/max
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Math.max()</code></strong> 関数は、入力引数として与えられた0個以上の数値のうち最大の数を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-max.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力してくださる場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.max([<var>value1</var>[, <var>value2</var>[, ...]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value1</var>, <var>value2</var>, ...</code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数のうちの最大の値です。何れかの引数が <code>NaN</code> であったり、数値に変換することができなかった場合は {{jsxref("NaN")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Math</code> はコンストラクターではないので、 <code>max()</code> は <code>Math</code> の静的メソッドです (常に <code>Math</code> インスタンスのメソッドとしてではなく、 <code>Math.min()</code> として使用してください)。</p>
+
+<p>-{{jsxref("Infinity")}} は他のすべての数値よりも小さいため初期の比較対象となっており、そのため引数が与えられなかった場合は -{{jsxref("Infinity")}} が返されます。</p>
+
+<p>何れかの引数が <code>NaN</code> であったり、数値に変換することができなかった場合、結果は {{jsxref("NaN")}} になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.max" name="Using_Math.max">Math.max() の使用</h3>
+
+<pre class="brush: js notranslate">Math.max(10, 20); // 20
+Math.max(-10, -20); // -10
+Math.max(-10, 20); // 20
+</pre>
+
+<h3 id="Getting_the_maximum_element_of_an_array" name="Getting_the_maximum_element_of_an_array">配列の最大値の取得</h3>
+
+<p>{{jsxref("Array.prototype.reduce", "Array.reduce()")}} を使用して、数値の配列の中にある最大値の要素を、それぞれの値を比較して探し出すことができます。</p>
+
+<pre class="brush: js notranslate">var arr = [1,2,3];
+var max = arr.reduce(function(a, b) {
+ return Math.max(a, b);
+});
+</pre>
+
+<p>次の関数では {{jsxref("Function.prototype.apply()")}} を使用して配列の最大値を取得します。 <code>getMaxOfArray([1, 2, 3])</code> は <code>Math.max(1, 2, 3)</code> と同等ですが、 <code>getMaxOfArray()</code> はプログラム的に構築された配列に使用することができます。これは比較的要素が少ない配列に対して使用してください。</p>
+
+<pre class="brush: js notranslate">function getMaxOfArray(numArray) {
+ return Math.max.apply(null, numArray);
+}</pre>
+
+<p>新しい<a href="/ja/docs/Web/JavaScript/Reference/Operators/Spread_operator">スプレッド演算子</a>で、 <code>apply</code> によって配列の最大値を得る方法をより短く書くことができます。</p>
+
+<pre class="brush: js notranslate">var arr = [1, 2, 3];
+var max = Math.max(...arr);
+</pre>
+
+<p>しかし、スプレッド構文の (<code>...</code>) と <code>apply</code> のどちらも、配列に膨大な要素があった場合は、配列の要素を関数の引数として渡そうとするため、失敗したり、誤った結果を返したりすることがあります。詳しくは <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/apply#Using_apply_and_built-in_functions">apply をビルトイン関数と共に利用する</a>を参照してください。 <code>reduce</code> の方法はこの問題が発生しません。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.max', 'Math.max')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.max")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.min()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/min/index.html b/files/ja/web/javascript/reference/global_objects/math/min/index.html
new file mode 100644
index 0000000000..5648f0cc26
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/min/index.html
@@ -0,0 +1,102 @@
+---
+title: Math.min()
+slug: Web/JavaScript/Reference/Global_Objects/Math/min
+tags:
+ - JavaScript
+ - Lowest Number
+ - Lowest Value
+ - Math
+ - Method
+ - Minimum
+ - Reference
+ - Smallest
+ - Smallest Number
+ - Smallest Value
+ - min
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/min
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Math.min()</code></strong> は静的関数で、引数で渡されたもののうち最小の値を返します。または引数のいずれかが数値以外で、数値に変換できない場合は {{jsxref("NaN")}} を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-min.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力してくださる場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.min([<var>value1</var>[, <var>value2</var>[, ...]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value1</var>, <var>value2</var>, ...</code></dt>
+ <dd>最小値が選択して返される 0 個以上の数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数のうちの最小の値です。1つ以上の引数を数値に変換することができなかった場合は {{jsxref("NaN")}} を返します。引数が与えられなかった場合の結果は {{jsxref("Infinity")}} です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>min()</code> は <code>Math</code> の静的メソッドなので、常に <code>Math.min()</code> として使用し、自分で <code>Math</code> オブジェクトを生成してそのメソッドとして使用しないでください。 (<code>Math</code> にはコンストラクターがありません)。</p>
+
+<p>引数が与えられなかった場合の結果は {{jsxref("Infinity")}} です。</p>
+
+<p>1 つでも数値に変換できない引数が渡された場合、結果は {{jsxref("NaN")}} になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.min" name="Using_Math.min">Math.min() の使用</h3>
+
+<p>変数 <code>x</code> と <code>y</code> の小さい方を <code>z</code> に代入します。</p>
+
+<pre class="brush: js notranslate">var x = 10, y = -20;
+var z = Math.min(x, y);
+</pre>
+
+<h3 id="Clipping_a_value_with_Math.min" name="Clipping_a_value_with_Math.min">Math.min() で値をクリップする</h3>
+
+<p><code>Math.min()</code> は、次のようにしきい値以下に値をクリップするために用いられることがあります。</p>
+
+<pre class="brush: js notranslate">var x = f(foo);
+
+if (x &gt; boundary) {
+ x = boundary;
+}
+</pre>
+
+<p>これは次のように書くことができます。</p>
+
+<pre class="brush: js notranslate">var x = Math.min(f(foo), boundary);
+</pre>
+
+<p>{{jsxref("Math.max()")}} を用いれば、反対に、しきい値以上に値をクリップすることができます。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.min', 'Math.min')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.min")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.max()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/pi/index.html b/files/ja/web/javascript/reference/global_objects/math/pi/index.html
new file mode 100644
index 0000000000..ff22d4850f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/pi/index.html
@@ -0,0 +1,65 @@
+---
+title: Math.PI
+slug: Web/JavaScript/Reference/Global_Objects/Math/PI
+tags:
+ - JavaScript
+ - Math
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/PI
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.SQRT2</code></strong> プロパティは、円周と直径の比率、およそ 3.14159 を表します。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.PI</mi></mstyle><mo>=</mo><mi>π</mi><mo>≈</mo><mn>3.14159</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.PI}} = \pi \approx 3.14159</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-pi.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>PI</code> は <code>Math</code> オブジェクトの静的プロパティなので、 <code>Math</code> オブジェクトを生成してプロパティとして使用するのではなく、常に <code>Math.PI</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.PI" name="Using_Math.PI">Math.PI の使用</h3>
+
+<p>次の関数は <code>Math.PI</code> を使用して、指定された半径を持つ円の円周を計算します。</p>
+
+<pre class="brush: js notranslate">function calculateCircumference(radius) {
+ return Math.PI * (radius + radius);
+}
+
+calculateCircumference(1); // 6.283185307179586
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.pi', 'Math.PI')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.PI")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/pow/index.html b/files/ja/web/javascript/reference/global_objects/math/pow/index.html
new file mode 100644
index 0000000000..ad8bd26f3c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/pow/index.html
@@ -0,0 +1,97 @@
+---
+title: Math.pow()
+slug: Web/JavaScript/Reference/Global_Objects/Math/pow
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/pow
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.pow()</code></strong> 関数は <code><var>base</var></code> を <code><var>exponent</var></code> 乗した値、つまり、<code>base<sup>exponent</sup></code> の値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-pow.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力してくださる場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.pow(<var>base</var>, <var>exponent</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>base</var></code></dt>
+ <dd>底となる数です。</dd>
+ <dt><code><var>exponent</var></code></dt>
+ <dd><code><var>base</var></code> を累乗する指数です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された低を指定された指数だけ累乗したものを表す数値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><strong><code>Math.pow()</code></strong> 関数は <code><var>base</var></code> の <code><var>exponent</var></code> 乗、すなわち <code>base<sup>exponent</sup></code> を返します。 <code><var>base</var></code> と <code><var>exponent</var></code> は10進数の数値です。</p>
+
+<p><code>pow()</code> は <code>Math</code> の静的メソッドなので、常に <code>Math.pow()</code> として使用し、自分で <code>Math</code> オブジェクトを生成してそのメソッドとして使用しないでください。 (<code>Math</code> にはコンストラクターがありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.pow" name="Using_Math.pow">Math.pow() の使用</h3>
+
+<pre class="brush: js notranslate">// 単純
+Math.pow(7, 2); // 49
+Math.pow(7, 3); // 343
+Math.pow(2, 10); // 1024
+// 小数のべき乗
+Math.pow(4, 0.5); // 2 (4 の平方根)
+Math.pow(8, 1/3); // 2 (8 の立方根)
+Math.pow(2, 0.5); // 1.4142135623730951 (2 の平方根)
+Math.pow(2, 1/3); // 1.2599210498948732 (2 の立方根)
+// 負の数のべき乗
+Math.pow(7, -2); // 0.02040816326530612 (1/49)
+Math.pow(8, -1/3); // 0.5
+// 負の数の底
+Math.pow(-7, 2); // 49 (2乗は正の数)
+Math.pow(-7, 3); // -343 (3乗は負の数)
+Math.pow(-7, 0.5); // NaN (負の数には実数の平方根がない)
+// due to "even" and "odd" roots laying close to each other,
+// and limits in the floating number precision,
+// negative bases with fractional exponents always return NaN
+Math.pow(-7, 1/3); // NaN
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.pow', 'Math.pow')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.pow")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.cbrt()")}}</li>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.sqrt()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Exponentiation">べき乗演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/random/index.html b/files/ja/web/javascript/reference/global_objects/math/random/index.html
new file mode 100644
index 0000000000..18d04e917a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/random/index.html
@@ -0,0 +1,101 @@
+---
+title: Math.random()
+slug: Web/JavaScript/Reference/Global_Objects/Math/random
+tags:
+ - JavaScript
+ - Math
+ - Math.random()
+ - Method
+ - Random
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/random
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.random()</code></strong>関数は、 0 以上 1 未満 (0 は含むが、 1 は含まない) の範囲で浮動小数点の擬似乱数を返します。その範囲ではほぼ均一な分布で、ユーザーは範囲の拡大をすることができます。実装側で乱数生成アルゴリズムの初期シードを選択します。ユーザーが初期シードを選択、またはリセットすることは出来ません。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-random.html")}}</div>
+
+<div class="note">
+<p><code>Math.random()</code> の提供する乱数は、暗号に使用可能な安全性を備えて<em>いません</em>。セキュリティに関連する目的では使用しないでください。代わりに Web Crypto API (より具体的には {{domxref("Crypto.getRandomValues", "window.crypto.getRandomValues()")}} メソッド) を使用してください。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.random()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>0</code> (含む) から 1 (含まない) までの擬似乱数である浮動小数点数です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>JavaScript における数値は、IEEE 754 浮動小数点での round-to-nearest-even を行うため、以下の関数の値域が ( <code>Math.random()</code> 自体の値域が正しくても) 厳密ではないことに注意してください。非常に大きい境界値 (2<sup>53</sup> 以上) のうち<em>極めて</em>稀な数値で、通常なら返されないはずの上限値が出力されてしまうことがあり得ます。</p>
+
+<h3 id="Getting_a_random_number_between_0_inclusive_and_1_exclusive" name="Getting_a_random_number_between_0_inclusive_and_1_exclusive">0 以上 1 未満の乱数を得る</h3>
+
+<pre class="brush: js notranslate">function getRandom() {
+ return Math.random();
+}
+</pre>
+
+<h3 id="Getting_a_random_number_between_two_values" name="Getting_a_random_number_between_two_values">2 つの値の間の乱数を得る</h3>
+
+<p>この例は指定した値の間の乱数を返します。返値は <code>min</code> 以上、 <code>max</code> 未満です。</p>
+
+<pre class="brush: js notranslate">function getRandomArbitrary(min, max) {
+ return Math.random() * (max - min) + min;
+}
+</pre>
+
+<h3 id="Getting_a_random_integer_between_two_values" name="Getting_a_random_integer_between_two_values">2 つの値の間のランダムな整数を得る</h3>
+
+<p>この例は指定した値の間のランダムな整数を返します。返値は <code>min</code> 以上 (<code>min</code> が整数でない場合、 <code>min</code> より大きい次の整数以上)、 <code>max</code> 未満です。</p>
+
+<pre class="brush: js notranslate">function getRandomInt(min, max) {
+  min = Math.ceil(min);
+  max = Math.floor(max);
+ return Math.floor(Math.random() * (max - min) + min); //The maximum is exclusive and the minimum is inclusive
+}
+</pre>
+
+<div class="note">
+<p><code>Math.round()</code> を使う方が魅力的かもしれませんが、その場合は乱数が不均一な分布に従うことになるので、ユーザーのニーズに合わないかもしれません。</p>
+</div>
+
+<h3 id="Getting_a_random_integer_between_two_values_inclusive" name="Getting_a_random_integer_between_two_values_inclusive">包括的に 2 つの値の間のランダムな整数を得る</h3>
+
+<p>上記の <code>getRandomInt()</code> 関数が返す乱数の範囲は <code>min</code> を含みますが、<code>max</code> は除外されます。 <code>min</code> も <code>max</code> も範囲に含まれた乱数を生成したいなら、以下の <code>getRandomIntInclusive()</code> 関数を使うといいでしょう。</p>
+
+<pre class="brush: js notranslate">function getRandomIntInclusive(min, max) {
+  min = Math.ceil(min);
+  max = Math.floor(max);
+ return Math.floor(Math.random() * (max - min + 1) + min); //The maximum is inclusive and the minimum is inclusive
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.random', 'Math.random')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.random")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{domxref("Crypto.getRandomValues", "window.crypto.getRandomValues()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/round/index.html b/files/ja/web/javascript/reference/global_objects/math/round/index.html
new file mode 100644
index 0000000000..f5504c21af
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/round/index.html
@@ -0,0 +1,82 @@
+---
+title: Math.round()
+slug: Web/JavaScript/Reference/Global_Objects/Math/round
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Number
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/round
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.round()</code></strong> 関数は、引数として与えた数を四捨五入して、もっとも近似の整数を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-round.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.round(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた値をもっとも近似の整数に四捨五入した値。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>引数の小数部分が 0.5 以上の場合、その引数は、次に大きい整数に切り上げられます。引数の小数部分が 0.5 未満の場合、その引数は、次に小さい整数に切り下げられます。小数部分が 0.5 である場合は、正の無限大の方向で次の整数に丸められます。<strong>これは多くの言語の <code>round()</code> 関数と異なることに注意してください。この場合はたいてい、<em>0 から遠ざかる</em>次の整数に丸められます</strong> (小数部分が 0.5 である負の値を四捨五入する場合に、結果が変わります)。</p>
+
+<p><code>round()</code> は <code>Math</code> オブジェクトの静的なメソッドなので、自ら生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に、<code>Math.round()</code> として使用するようにしてください (<code>Math</code> のコンストラクターはありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_round" name="Using_round">round の使用</h3>
+
+<pre class="brush: js notranslate">Math.round( 20.49); // 20
+Math.round( 20.5 ); // 21
+Math.round( 42 ); // 42
+Math.round(-20.5 ); // -20
+Math.round(-20.51); // -21</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.round', 'Math.round')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<p class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</p>
+
+<p>{{Compat("javascript.builtins.Math.round")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.toPrecision()")}}</li>
+ <li>{{jsxref("Number.toFixed()")}}</li>
+ <li>{{jsxref("Math.abs()")}}</li>
+ <li>{{jsxref("Math.ceil()")}}</li>
+ <li>{{jsxref("Math.floor()")}}</li>
+ <li>{{jsxref("Math.sign()")}}</li>
+ <li>{{jsxref("Math.trunc()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/sign/index.html b/files/ja/web/javascript/reference/global_objects/math/sign/index.html
new file mode 100644
index 0000000000..22df8ab790
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/sign/index.html
@@ -0,0 +1,113 @@
+---
+title: Math.sign()
+slug: Web/JavaScript/Reference/Global_Objects/Math/sign
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/sign
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.sign()</code></strong> 関数は、引数として渡された数値の符号が<strong>正</strong>か<strong>負</strong>かを表す +/- 1 を返します。 <code>Math.sign()</code> に渡された数が 0 であれば、 +/- 0 を返します。なお、数値が正である場合、明示的な (+) は返され<strong>ません</strong>。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-sign.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力してくださる場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.sign(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。引数が <code>number</code> ではない場合は、暗黙に変換されます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた引数の符号を表す数値です。</p>
+
+<ul>
+ <li>引数が正の値の場合は、 <code>1</code> を返します。</li>
+ <li>引数が負の値の場合は、 <code>-1</code> を返します。</li>
+ <li>引数が正のゼロの場合は、 <code>0</code> を返します。</li>
+ <li>引数が負のゼロの場合は、 <code>-0</code> を返します。</li>
+ <li>それ以外は {{jsxref("NaN")}} を返します。</li>
+</ul>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>sign()</code> は <code>Math</code> の静的メソッドなので、常に <code>Math.sign()</code> として使用し、自分で <code>Math</code> オブジェクトを生成してそのメソッドとして使用しないでください。 (<code>Math</code> にはコンストラクターがありません)。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">if (!Math.sign) {
+ Math.sign = function(x) {
+ // If x is NaN, the result is NaN.
+ // If x is -0, the result is -0.
+ // If x is +0, the result is +0.
+ // If x is negative and not -0, the result is -1.
+ // If x is positive and not +0, the result is +1.
+ return ((x &gt; 0) - (x &lt; 0)) || +x;
+ // A more aesthetic pseudo-representation:
+  //
+  // ( (x &gt; 0) ? 1 : 0 ) // if x is positive, then positive one
+  // + // else (because you can't be both - and +)
+  // ( (x &lt; 0) ? -1 : 0 ) // if x is negative, then negative one
+  // || // if x is 0, -0, or NaN, or not a number,
+  // +x // then the result will be x, (or) if x is
+  // // not a number, then x converts to number
+ };
+}
+</pre>
+
+<p>上記のポリフィルでは <code>(x &gt; 0)</code> と <code>(x &lt; 0)</code> の数値を互いに減算することで、真偽値から数値型へ強制的に型変換されるため、追加の型強制は必要ありません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.sign" name="Using_Math.sign">Math.sign() の使用</h3>
+
+<pre class="brush: js notranslate">Math.sign(3); // 1
+Math.sign(-3); // -1
+Math.sign('-3'); // -1
+Math.sign(0); // 0
+Math.sign(-0); // -0
+Math.sign(NaN); // NaN
+Math.sign('foo'); // NaN
+Math.sign(); // NaN
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.sign', 'Math.sign')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.sign")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.abs()")}}</li>
+ <li>{{jsxref("Math.ceil()")}}</li>
+ <li>{{jsxref("Math.floor()")}}</li>
+ <li>{{jsxref("Math.round()")}}</li>
+ <li>{{jsxref("Math.trunc()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/sin/index.html b/files/ja/web/javascript/reference/global_objects/math/sin/index.html
new file mode 100644
index 0000000000..60cf4b07ad
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/sin/index.html
@@ -0,0 +1,80 @@
+---
+title: Math.sin()
+slug: Web/JavaScript/Reference/Global_Objects/Math/sin
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/sin
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.sin()</code></strong> 関数は、引数として与えた数の正弦 (サイン) を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-sin.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.sin(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値 (ラジアンで指定)。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された数値の正弦 (サイン) です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Math.sin()</code> メソッドはラジアンで指定された角度の正弦 (サイン) を表す -1 から 1 までの範囲の数値を表します。</p>
+
+<p><code>sin()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.sin()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.sin" name="Using_Math.sin">Math.sin() の使用</h3>
+
+<pre class="brush: js notranslate">Math.sin(0); // 0
+Math.sin(1); // 0.8414709848078965
+
+Math.sin(Math.PI / 2); // 1
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.sin', 'Math.sin')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.sin")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.acos()")}}</li>
+ <li>{{jsxref("Math.asin()")}}</li>
+ <li>{{jsxref("Math.atan()")}}</li>
+ <li>{{jsxref("Math.atan2()")}}</li>
+ <li>{{jsxref("Math.cos()")}}</li>
+ <li>{{jsxref("Math.tan()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/sinh/index.html b/files/ja/web/javascript/reference/global_objects/math/sinh/index.html
new file mode 100644
index 0000000000..e01c47f217
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/sinh/index.html
@@ -0,0 +1,95 @@
+---
+title: Math.sinh()
+slug: Web/JavaScript/Reference/Global_Objects/Math/sinh
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/sinh
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.sinh()</code></strong> 関数は、引数として与えた数の双曲線正弦 (ハイパーボリックサイン) を返します。これは{{jsxref("Math.E", "定数 e", "", 1)}} を使用して次のように表すことができます。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mo lspace="0em" rspace="thinmathspace">Math.sinh(x)</mo></mstyle><mo>=</mo><mfrac><mrow><msup><mi>e</mi><mi>x</mi></msup><mo>-</mo><msup><mi>e</mi><mrow><mo>-</mo><mi>x</mi></mrow></msup></mrow><mn>2</mn></mfrac></mrow><annotation encoding="TeX">\mathtt{\operatorname{Math.sinh(x)}} = \frac{e^x - e^{-x}}{2}</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-sinh.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.sinh(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された数値の双曲線正弦 (ハイパーボリックサイン) です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>sinh()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.sinh()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>これは {{jsxref("Math.exp()")}} 関数を使用して次のようにエミュレートできます。</p>
+
+<pre class="brush: js notranslate">Math.sinh = Math.sinh || function(x) {
+ return (Math.exp(x) - Math.exp(-x)) / 2;
+}
+</pre>
+
+<p>または {{jsxref("Math.exp()")}} 関数を一度だけ呼び出すようにすると、次のようになります。</p>
+
+<pre class="brush: js notranslate">Math.sinh = Math.sinh || function(x) {
+ var y = Math.exp(x);
+ return (y - 1 / y) / 2;
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.sinh" name="Using_Math.sinh">Using Math.sinh() の使用</h3>
+
+<pre class="brush: js notranslate">Math.sinh(0); // 0
+Math.sinh(1); // 1.1752011936438014
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.sinh', 'Math.sinh')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.sinh")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.acosh()")}}</li>
+ <li>{{jsxref("Math.asinh()")}}</li>
+ <li>{{jsxref("Math.atanh()")}}</li>
+ <li>{{jsxref("Math.cosh()")}}</li>
+ <li>{{jsxref("Math.tanh()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/sqrt/index.html b/files/ja/web/javascript/reference/global_objects/math/sqrt/index.html
new file mode 100644
index 0000000000..2172c163fc
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/sqrt/index.html
@@ -0,0 +1,83 @@
+---
+title: Math.sqrt()
+slug: Web/JavaScript/Reference/Global_Objects/Math/sqrt
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/sqrt
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.sqrt()</code></strong> 関数は、ある数の平方根を返します。すなわち、</p>
+
+<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>≥</mo><mn>0</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mi>M</mi><mi>a</mi><mi>t</mi><mi>h</mi><mo>.</mo><mi>s</mi><mi>q</mi><mi>r</mi><mi>t</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><msqrt><mi>x</mi></msqrt><mo>=</mo><mtext>the unique</mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mo>≥</mo><mn>0</mn><mspace width="thickmathspace"></mspace><mtext>such that</mtext><mspace width="thickmathspace"></mspace><msup><mi>y</mi><mn>2</mn></msup><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x \geq 0, \mathtt{Math.sqrt(x)} = \sqrt{x} = \text{the unique} \; y \geq 0 \; \text{such that} \; y^2 = x</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-sqrt.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.sqrt(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値の平方根です。数値が負の場合、 {{jsxref("NaN")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>x</var></code> の値が負の数であった場合、 <code>Math.sqrt()</code> は {{jsxref("NaN")}} を返します。</p>
+
+<p><code>sqrt()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.sqrt()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.sqrt" name="Using_Math.sqrt">Math.sqrt() の使用</h3>
+
+<pre class="brush: js notranslate">Math.sqrt(9); // 3
+Math.sqrt(2); // 1.414213562373095
+
+Math.sqrt(1); // 1
+Math.sqrt(0); // 0
+Math.sqrt(-1); // NaN
+Math.sqrt(-0); // -0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.sqrt', 'Math.sqrt')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.sqrt")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.cbrt()")}}</li>
+ <li>{{jsxref("Math.exp()")}}</li>
+ <li>{{jsxref("Math.log()")}}</li>
+ <li>{{jsxref("Math.pow()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/sqrt1_2/index.html b/files/ja/web/javascript/reference/global_objects/math/sqrt1_2/index.html
new file mode 100644
index 0000000000..91232e0cce
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/sqrt1_2/index.html
@@ -0,0 +1,66 @@
+---
+title: Math.SQRT1_2
+slug: Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2
+tags:
+ - JavaScript
+ - Math
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.SQRT2</code></strong> プロパティは、 1/2 の平方根、約 0.707 を表します。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.SQRT1_2</mi></mstyle><mo>=</mo><msqrt><mfrac><mn>1</mn><mn>2</mn></mfrac></msqrt><mo>=</mo><mfrac><mn>1</mn><msqrt><mn>2</mn></msqrt></mfrac><mo>≈</mo><mn>0.707</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.SQRT1_2}} = \sqrt{\frac{1}{2}} = \frac{1}{\sqrt{2}} \approx 0.707</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-sqrt1_2.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>SQRT1_2</code> は <code>Math</code> オブジェクトの静的プロパティなので、 <code>Math</code> オブジェクトを生成してプロパティとして使用するのではなく、常に <code>Math.SQRT1_2</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.SQRT1_2" name="Using_Math.SQRT1_2">Math.SQRT1_2 の使用</h3>
+
+<p>以下の関数は 1 を 2 の平方根で割った値を返します。</p>
+
+<pre class="brush:js notranslate">function getRoot1_2() {
+ return Math.SQRT1_2;
+}
+
+getRoot1_2(); // 0.7071067811865476
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.sqrt1_2', 'Math.SQRT1_2')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.SQRT1_2")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.pow()")}}</li>
+ <li>{{jsxref("Math.sqrt()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/sqrt2/index.html b/files/ja/web/javascript/reference/global_objects/math/sqrt2/index.html
new file mode 100644
index 0000000000..a2796d9df3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/sqrt2/index.html
@@ -0,0 +1,66 @@
+---
+title: Math.SQRT2
+slug: Web/JavaScript/Reference/Global_Objects/Math/SQRT2
+tags:
+ - JavaScript
+ - Math
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT2
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.SQRT2</code></strong> プロパティは、 2 の平方根、約 1.414 を表します。</p>
+
+<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.SQRT2</mi></mstyle><mo>=</mo><msqrt><mn>2</mn></msqrt><mo>≈</mo><mn>1.414</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.SQRT2}} = \sqrt{2} \approx 1.414</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-sqrt2.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>SQRT2</code> は <code>Math</code> オブジェクトの静的プロパティなので、 <code>Math</code> オブジェクトを生成してプロパティとして使用するのではなく、常に <code>Math.SQRT2</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.SQRT2" name="Using_Math.SQRT2">Math.SQRT2 の使用</h3>
+
+<p>以下の関数は 2 の平方根を返します。</p>
+
+<pre class="brush: js notranslate">function getRoot2() {
+ return Math.SQRT2;
+}
+
+getRoot2(); // 1.4142135623730951
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.sqrt2', 'Math.SQRT2')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.SQRT2")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.pow()")}}</li>
+ <li>{{jsxref("Math.sqrt()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/tan/index.html b/files/ja/web/javascript/reference/global_objects/math/tan/index.html
new file mode 100644
index 0000000000..c971e495c4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/tan/index.html
@@ -0,0 +1,85 @@
+---
+title: Math.tan()
+slug: Web/JavaScript/Reference/Global_Objects/Math/tan
+tags:
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/tan
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.tan()</code></strong> 関数は、数値のタンジェントを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-tan.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>Math.tan(<var>x</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値のタンジェントです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Math.tan()</code> メソッドは、ある角度のタンジェントを表す数値を返します。</p>
+
+<p><code>tan()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.tan()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.atan" name="Using_Math.atan()">Math.tan() の使用</h3>
+
+<pre class="brush: js notranslate">Math.tan(1); // 1.5574077246549023
+</pre>
+
+<p><code>Math.tan()</code> 関数はラジアンを受け付けますが、角度で使用したほうが簡単な場合が多いので、次の関数は角度の値を受け付け、それをラジアンに変換してタンジェントを返します。</p>
+
+<pre class="brush: js notranslate">function getTanDeg(deg) {
+ var rad = deg * Math.PI/180;
+ return Math.tan(rad);
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.tan', 'Math.tan')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.tan")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.acos()")}}</li>
+ <li>{{jsxref("Math.asin()")}}</li>
+ <li>{{jsxref("Math.atan()")}}</li>
+ <li>{{jsxref("Math.atan2()")}}</li>
+ <li>{{jsxref("Math.cos()")}}</li>
+ <li>{{jsxref("Math.sin()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/tanh/index.html b/files/ja/web/javascript/reference/global_objects/math/tanh/index.html
new file mode 100644
index 0000000000..be7e567764
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/tanh/index.html
@@ -0,0 +1,87 @@
+---
+title: Math.tanh()
+slug: Web/JavaScript/Reference/Global_Objects/Math/tanh
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/tanh
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.tanh()</code></strong> 関数は、引数として与えた数のハイパーボリックタンジェントを返します。すなわち</p>
+
+<p><math display="block"><semantics><mrow><mo lspace="0em" rspace="0em">tanh</mo><mi>x</mi><mo>=</mo><mfrac><mrow><mo lspace="0em" rspace="0em">sinh</mo><mi>x</mi></mrow><mrow><mo lspace="0em" rspace="0em">cosh</mo><mi>x</mi></mrow></mfrac><mo>=</mo><mfrac><mrow><msup><mi>e</mi><mi>x</mi></msup><mo>-</mo><msup><mi>e</mi><mrow><mo>-</mo><mi>x</mi></mrow></msup></mrow><mrow><msup><mi>e</mi><mi>x</mi></msup><mo>+</mo><msup><mi>e</mi><mrow><mo>-</mo><mi>x</mi></mrow></msup></mrow></mfrac><mo>=</mo><mfrac><mrow><msup><mi>e</mi><mrow><mn>2</mn><mi>x</mi></mrow></msup><mo>-</mo><mn>1</mn></mrow><mrow><msup><mi>e</mi><mrow><mn>2</mn><mi>x</mi></mrow></msup><mo>+</mo><mn>1</mn></mrow></mfrac></mrow><annotation encoding="TeX">\tanh x = \frac{\sinh x}{\cosh x} = \frac {e^x - e^{-x}} {e^x + e^{-x}} = \frac{e^{2x} - 1}{e^{2x}+1}</annotation></semantics></math></p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-tanh.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.tanh(<var>x</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された数値のハイパーボリックタンジェントです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>tanh()</code> は <code>Math</code> の静的メソッドであるため、生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に <code>Math.tanh()</code> として使用するようにしてください (<code>Math</code> はコンストラクターではありません)。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>{{jsxref("Math.exp()")}} 関数の助けを借りて、エミュレートできます。:</p>
+
+<pre class="brush: js notranslate">Math.tanh = Math.tanh || function(x){
+    var a = Math.exp(+x), b = Math.exp(-x);
+    return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (a + b);
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.tanh" name="Using_Math.tanh">Math.tanh() の使用</h3>
+
+<pre class="brush: js notranslate">Math.tanh(0); // 0
+Math.tanh(Infinity); // 1
+Math.tanh(1); // 0.7615941559557649
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.tanh', 'Math.tanh')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.tanh")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.acosh()")}}</li>
+ <li>{{jsxref("Math.asinh()")}}</li>
+ <li>{{jsxref("Math.atanh()")}}</li>
+ <li>{{jsxref("Math.cosh()")}}</li>
+ <li>{{jsxref("Math.sinh()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/math/trunc/index.html b/files/ja/web/javascript/reference/global_objects/math/trunc/index.html
new file mode 100644
index 0000000000..780f6b7f19
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/math/trunc/index.html
@@ -0,0 +1,120 @@
+---
+title: Math.trunc()
+slug: Web/JavaScript/Reference/Global_Objects/Math/trunc
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Math
+ - Method
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Math/trunc
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Math.trunc()</code></strong> 関数は、引数として与えた数の小数部の桁を取り除くことによって整数部を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/math-trunc.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Math.trunc(<var>x</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>x</var></code></dt>
+ <dd>数値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>The integer part of the given number.</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>他の3 つの <code>Math</code> メソッド、 {{jsxref("Math.floor()")}}、 {{jsxref("Math.ceil()")}}、 {{jsxref("Math.round()")}} とは異なり、 <code>Math.trunc()</code> の動作は非常にシンプルで分かりやすいです。引数が正の数または負の数であるかに関わらず、ただ小数点とそれ以降にある数字を<em>切り捨て</em>ます。</p>
+
+<p>このメソッドに渡された引数は暗黙のうちに数値型に変換されることに注意して下さい。</p>
+
+<p><code>trunc()</code> は <code>Math</code> オブジェクトの静的なメソッドなので、自ら生成した <code>Math</code> オブジェクトのメソッドとしてではなく、常に、<code>Math.trunc()</code> として使用してください (<code>Math</code> オブジェクトにはコンストラクタがありません)。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">if (!Math.trunc) {
+ Math.trunc = function(v) {
+ v = +v;
+ if (!isFinite(v)) return v;
+
+ return (v - v % 1) || (v &lt; 0 ? -0 : v === 0 ? v : 0);
+
+ // returns:
+ // 0 -&gt; 0
+ // -0 -&gt; -0
+ // 0.2 -&gt; 0
+ // -0.2 -&gt; -0
+ // 0.7 -&gt; 0
+ // -0.7 -&gt; -0
+ // Infinity -&gt; Infinity
+ // -Infinity -&gt; -Infinity
+ // NaN -&gt; NaN
+ // null -&gt; 0
+ };
+}
+</pre>
+
+<p>または</p>
+
+<pre class="brush: js notranslate">if (!Math.trunc) {
+ Math.trunc = function (v) {
+ return v &lt; 0 ? Math.ceil(v) : Math.floor(v);
+ };
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Math.trunc" name="Using_Math.trunc">Math.trunc() の使用</h3>
+
+<pre class="brush: js notranslate">Math.trunc(13.37); // 13
+Math.trunc(42.84); // 42
+Math.trunc(0.123); // 0
+Math.trunc(-0.123); // -0
+Math.trunc('-1.123'); // -1
+Math.trunc(NaN); // NaN
+Math.trunc('foo'); // NaN
+Math.trunc(); // NaN
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-math.trunc', 'Math.trunc')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Math.trunc")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Math.abs()")}}</li>
+ <li>{{jsxref("Math.ceil()")}}</li>
+ <li>{{jsxref("Math.floor()")}}</li>
+ <li>{{jsxref("Math.round()")}}</li>
+ <li>{{jsxref("Math.sign()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/nan/index.html b/files/ja/web/javascript/reference/global_objects/nan/index.html
new file mode 100644
index 0000000000..5d4dd42979
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/nan/index.html
@@ -0,0 +1,95 @@
+---
+title: NaN
+slug: Web/JavaScript/Reference/Global_Objects/NaN
+tags:
+ - JavaScript
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/NaN
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p>グローバルプロパティ <code><strong>NaN</strong></code> は<ruby>非数<rp> (</rp><rt>Not-A-Number</rt><rp>) </rp></ruby>を表す値です。</p>
+
+<p>{{js_property_attributes(0,0,0)}}</p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-nan.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>NaN</code> は<strong>グローバルオブジェクト</strong>のプロパティです。言い換えれば、グローバルスコープにある変数です。</p>
+
+<p><code>NaN</code> の初期値は非数であり、{{jsxref("Number.NaN")}} の値と同等です。最近のブラウザーであれば、 <code>NaN</code> は設定、書き込みがともに不可能なプロパティとなっています。そうでない場合であっても、オーバーライドは無効となります。プログラムの中で <code>NaN</code> を使用するのは、むしろまれなことです。</p>
+
+<p><code>NaN</code> を返す演算には5種類があります。</p>
+
+<ul>
+ <li>数値が解釈できない (例えば <code>parseInt("blabla")</code> または <code>Number(undefined)</code>)</li>
+ <li>結果が実数にならない数学演算 (例えば <code>Math.sqrt(-1)</code>)</li>
+ <li>オペランドが <code>NaN</code> (例えば <code>7 ** NaN</code>)</li>
+ <li>不確定形 (例えば <code>0 * Infinity</code>)</li>
+ <li>文字列が関わる加算以外の何らかの演算 (例えば <code>"foo" / 3</code>)</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Testing_against_NaN" name="Testing_against_NaN">NaN に対するテスト</h3>
+
+<p><code>NaN</code> は別の <code>NaN</code> 値を含むあらゆる数と (<code>==</code>、<code>!=</code>、<code>===</code>、<code>!==</code> によって) 同じではないと比較されます。ある値が <code>NaN</code> かどうかを的確に判定するには {{jsxref("Number.isNaN()")}} か {{jsxref("Global_Objects/isNaN", "isNaN()")}} を使用してください。あるいは自己比較を実行しましょう。 <code>NaN</code> は、また <code>NaN</code> だけが、自身と同等ではないと比較評価されます。</p>
+
+<pre class="brush: js notranslate">NaN === NaN; // false
+Number.NaN === NaN; // false
+isNaN(NaN); // true
+isNaN(Number.NaN); // true
+Number.isNaN(NaN); // true
+
+function valueIsNaN(v) { return v !== v; }
+valueIsNaN(1); // false
+valueIsNaN(NaN); // true
+valueIsNaN(Number.NaN); // true
+</pre>
+
+<p>ただし、 <code>isNaN()</code> と <code>Number.isNaN()</code> には違いがあることに気をつけてください。前者は、値そのものが <code>NaN</code> であったり、値の変換の結果 <code>NaN</code> になる場合に <code>true</code> を返します。後者は値そのものが <code>NaN</code> のときにだけ <code>true</code> を返します。</p>
+
+<pre class="brush: js notranslate">isNaN('hello world'); // true
+Number.isNaN('hello world'); // false
+</pre>
+
+<p>加えて、配列メソッドの中には <code>NaN</code> を見つけることができるもの、できないものがあります。</p>
+
+<pre class="brush: js notranslate">let arr = [2, 4, NaN, 12];
+arr.indexOf(NaN); // -1 (false)
+arr.includes(NaN); // true
+arr.findIndex(n =&gt; Number.isNaN(n)); // 2
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-nan', 'NaN')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.NaN")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.NaN")}}</li>
+ <li>{{jsxref("Number.isNaN()")}}</li>
+ <li>{{jsxref("isNaN", "isNaN()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/null/index.html b/files/ja/web/javascript/reference/global_objects/null/index.html
new file mode 100644
index 0000000000..8bf9bb6522
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/null/index.html
@@ -0,0 +1,76 @@
+---
+title: 'null'
+slug: Web/JavaScript/Reference/Global_Objects/null
+tags:
+ - JavaScript
+ - Language feature
+ - Literal
+ - Primitive
+translation_of: Web/JavaScript/Reference/Global_Objects/null
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p><code>null</code> null という値は、意図的にオブジェクトの値が存在しないことを表します。これは JavaScript の<a href="/ja/docs/Glossary/Primitive">プリミティブ値</a>の 1 つであり、ブール演算では <a href="/ja/docs/Glossary/Falsy">falsy</a> として扱われます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-null.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>null</code></pre>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>null</code> 値は <code>null</code> というリテラルです。{{jsxref("Global_Objects/undefined","undefined")}} のようなグローバルオブジェクトのプロパティではありません。代わりに、 <code>null</code> は識別の欠如を表し、変数がオブジェクトを指してないことを示します。API においては、通常はオブジェクトが返されるところで、関連したオブジェクトがない場合に <code>null</code> がよく渡されます。</p>
+
+<pre class="syntaxbox notranslate">// foo が存在せず、定義も初期化もされていない場合:
+foo; //ReferenceError: foo is not defined</pre>
+
+<pre class="syntaxbox notranslate">// foo が存在しているが、型も値も持たない場合:
+var foo = null;
+foo; //null
+</pre>
+
+<h3 id="Difference_between_null_and_undefined" name="Difference_between_null_and_undefined"><code>null</code> と <code>undefined</code> の違い</h3>
+
+<p><code>null</code> か <code>undefined</code> をチェックする際は、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators">等価 (==) と 厳密等価 (===) 演算子の違い</a> に注意してください(前者では型変換が行われます)。</p>
+
+<pre class="brush: js notranslate">typeof null // "object" (歴史的な理由で "null" ではありません<code>)
+typeof undefined // "undefined"
+null === undefined // false
+null == undefined // true
+null === null // true
+null == null // true
+!null // true
+isNaN(1 + null) // false
+isNaN(1 + undefined) // true</code></pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-null-value', 'null value')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.null")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("undefined")}}</li>
+ <li>{{jsxref("NaN")}}</li>
+ <li>
+ <p>{{jsxref("Operators/void", "void operator")}}</p>
+ </li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/epsilon/index.html b/files/ja/web/javascript/reference/global_objects/number/epsilon/index.html
new file mode 100644
index 0000000000..c95a929135
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/epsilon/index.html
@@ -0,0 +1,69 @@
+---
+title: Number.EPSILON
+slug: Web/JavaScript/Reference/Global_Objects/Number/EPSILON
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Number
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/EPSILON
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.EPSILON</code></strong> プロパティは、1 から 1 より大きな浮動小数点の最小値の差を表します。</p>
+
+<p>この静的なプロパティにアクセスするために {{jsxref("Number")}} オブジェクトを生成する必要はありません (<code>Number.EPSILON</code> を使用してください)。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-epsilon.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>EPSILON</code> プロパティは およそ <code>2.2204460492503130808472633361816E-16</code>、または <code>2<sup>-52</sup></code> の値を持っています。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Testing_equality" name="Testing_equality">同等なことをテストする</h3>
+
+<pre class="brush: js notranslate">x = 0.2;
+y = 0.3;
+z = 0.1;
+equal = (Math.abs(x - y + z) &lt; Number.EPSILON);
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">if (Number.EPSILON === undefined) {
+ Number.EPSILON = Math.pow(2, -52);
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.epsilon', 'Number.EPSILON')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.EPSILON")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>所属先の {{jsxref("Number")}} オブジェクト</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/index.html b/files/ja/web/javascript/reference/global_objects/number/index.html
new file mode 100644
index 0000000000..dbac6b734c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/index.html
@@ -0,0 +1,183 @@
+---
+title: Number
+slug: Web/JavaScript/Reference/Global_Objects/Number
+tags:
+ - JavaScript
+ - Number
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Number
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number</code></strong> は<a href="/ja/docs/Glossary/Primitive#Primitive_wrapper_objects_in_JavaScript">プリミティブラッパーオブジェクト</a>で、 <code>37</code> や <code>-9.25</code> のような数値を表現したり操作したりするために使用されます。</p>
+
+<p><strong><code>Number</code></strong> コンストラクターは、数値を扱うための定数とメソッドを含んでいます。他の型の値は <strong><code>Number()</code> 関数</strong>を用いて数値に変換することができます。</p>
+
+<p>JavaScript の <strong>Number</strong> 型は <a href="https://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0">IEEE 754 の倍精度 64ビットバイナリ形式</a>であり、 Java や C# の <code>double</code> のようなものです。これは小数点以下の数値を表すことができることを意味しますが、格納できる値にはいくつかの制限があります。 Number は小数点以下約17桁の精度しか保持できません。演算は<a href="https://en.wikipedia.org/wiki/Floating-point_arithmetic#Representable_numbers,_conversion_and_rounding">丸め誤差</a>の影響を受けます。 Number が保持できる最大の値は約1.8×10<sup>308</sup>です。それ以上の数値は、特殊な数値定数 {{jsxref("Infinity")}} に置き換えられます。</p>
+
+<p>JavaScript コードにおける <code>37</code> のような数値リテラルは浮動小数点値であり、整数ではありません。日常的に使用される独立した整数型はありません。 (JavaScript は {{jsxref("BigInt")}} 型を持つようになりましたが、日常の利用で Number を置き換えるように設計されてはいません。 <code>37</code> は Number であり、 BigInt ではありません。)</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>関数として使用された場合、 <code>Number(value)</code> は文字列やその他の値を Number 型に変換します。値が変換できない場合は、 {{jsxref("NaN")}} を返します。</p>
+
+<h3 id="Literal_syntax" name="Literal_syntax">リテラル構文</h3>
+
+<pre class="brush: js notranslate">123 // 百二十三
+123.0 // 同じ
+123 === 123.0 // true</pre>
+
+<h3 id="Function_syntax" name="Function_syntax">関数構文</h3>
+
+<pre class="brush: js notranslate">Number('123') // 数値 123 を返す
+Number('123') === 123 // true
+
+Number("unicorn") // NaN
+Number(undefined) // NaN
+</pre>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Number/Number", "Number()")}}</dt>
+ <dd>新しい <code>Number</code> 値を生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Number.EPSILON")}}</dt>
+ <dd>数値として表される 2 個の数の最小の差です。</dd>
+ <dt>{{jsxref("Number.MAX_SAFE_INTEGER")}}</dt>
+ <dd>JavaScript における確実な整数の最大値 (<code>2<sup>53</sup> - 1</code>) です。</dd>
+ <dt>{{jsxref("Number.MAX_VALUE")}}</dt>
+ <dd>表現可能な正の数の最大値です。</dd>
+ <dt>{{jsxref("Number.MIN_SAFE_INTEGER")}}</dt>
+ <dd>JavaScript における確実な整数の最小値 (<code>-(2<sup>53</sup> - 1)</code>) です。</dd>
+ <dt>{{jsxref("Number.MIN_VALUE")}}</dt>
+ <dd>表現可能な正の数の最小値。0 に最も近い正の数です (0 ではありません)。</dd>
+ <dt>{{jsxref("Number.NaN")}}</dt>
+ <dd>特殊な "<strong>N</strong>ot <strong>a</strong> <strong>N</strong>umber" (数値ではない) の値です。</dd>
+ <dt>{{jsxref("Number.NEGATIVE_INFINITY")}}</dt>
+ <dd>負の無限大を表す特別な値です。オーバーフロー時に返されます。</dd>
+ <dt>{{jsxref("Number.POSITIVE_INFINITY")}}</dt>
+ <dd>無限大を表す特別な値です。オーバーフロー時に返されます。</dd>
+ <dt>{{jsxref("Number.prototype")}}</dt>
+ <dd><code>Number</code> オブジェクトへのプロパティの追加を許可します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Number.isNaN()")}}</dt>
+ <dd>渡された値が <code>NaN</code> であれば <code>true</code> を返します。</dd>
+ <dt>{{jsxref("Number.isFinite()")}}</dt>
+ <dd>渡された値が有限数であるかどうかを判断します。</dd>
+ <dt>{{jsxref("Number.isInteger()")}}</dt>
+ <dd>渡された値が整数であるかどうかを判断します。</dd>
+ <dt>{{jsxref("Number.isSafeInteger()")}}</dt>
+ <dd>渡された値が確実な範囲の整数 (<code>-(2<sup>53</sup> - 1)</code> から <code>2<sup>53</sup> - 1</code> の間) であれば <code>true</code> を返します。</dd>
+ <dt>{{jsxref("Number.parseFloat()", "Number.parseFloat(<var>string</var>)")}}</dt>
+ <dd>値はグローバルオブジェクトの {{jsxref("parseFloat", "parseFloat()")}} と同じです。</dd>
+ <dt>{{jsxref("Number.parseInt()", "Number.parseInt(<var>string</var>, [<var>radix</var>])")}}</dt>
+ <dd>値はグローバルオブジェクトの {{jsxref("parseInt", "parseInt()")}} と同じです。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Number.prototype.toExponential()" ,"Number.prototype.toExponential(<var>fractionDigits</var>)")}}</dt>
+ <dd>指数表記で数値を表す文字列を返します。</dd>
+ <dt>{{jsxref("Number.prototype.toFixed()", "Number.prototype.toFixed(<var>digits</var>)")}}</dt>
+ <dd>固定小数点表記で数値を表す文字列を返します。</dd>
+ <dt>{{jsxref("Number.prototype.toLocaleString()", "Number.prototype.toLocaleString([<var>locales</var> [, <var>options</var>]])")}}</dt>
+ <dd>この値を言語依存の表現で表した文字列を返します。 {{jsxref("Object.prototype.toLocaleString()")}} メソッドを上書きします。</dd>
+ <dt>{{jsxref("Number.prototype.toPrecision()", "Number.prototype.toPrecision(<var>precision</var>)")}}</dt>
+ <dd>指定された精度で、固定小数点表記または指数表記で数値で表す文字列を返します。</dd>
+ <dt>{{jsxref("Number.prototype.toString()", "Number.prototype.toString([<var>radix</var>])")}}</dt>
+ <dd>指定された基数を元に、指定されたオブジェクトを表す文字列を返します。 {{jsxref("Object.prototype.toString()")}} メソッドを上書きします。</dd>
+ <dt>{{jsxref("Number.prototype.valueOf()")}}</dt>
+ <dd>指定されたオブジェクトのプリミティブ値を返します。 {{jsxref("Object.prototype.valueOf()")}} メソッドを上書きします。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_Number_object_to_assign_values_to_numeric_variables" name="Using_the_Number_object_to_assign_values_to_numeric_variables">Number オブジェクトを使用して変数に値を代入する</h3>
+
+<p>以下の例では、<code>Number</code> オブジェクトのプロパティを使用して、いくつかの数の変数に値を代入します。</p>
+
+<pre class="brush: js notranslate">const biggestNum = Number.MAX_VALUE
+const smallestNum = Number.MIN_VALUE
+const infiniteNum = Number.POSITIVE_INFINITY
+const negInfiniteNum = Number.NEGATIVE_INFINITY
+const notANum = Number.NaN
+</pre>
+
+<h3 id="Integer_range_for_Number" name="Integer_range_for_Number">Number の整数の範囲</h3>
+
+<p>次の例は、<code>Number</code> オブジェクトで表現可能な最小の整数値と最大の整数値です (詳細は、ECMAScript 標準の <em><a href="https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type">6.1.6 The Number Type</a></em> の章を参照してください)。</p>
+
+<pre class="brush: js notranslate">const biggestInt = Number.MAX_SAFE_INTEGER // (<code>2<sup>53</sup> - 1</code>) =&gt; 9007199254740991
+const smallestInt = Number.MIN_SAFE_INTEGER // -(<code>2<sup>53</sup> - 1</code>) =&gt; -9007199254740991</pre>
+
+<p>JSON にシリアライズされたデータを解析する場合、整数値がこの範囲を超えていると、 JSON パーサーがこの値を <code>Number</code> 型に変換したときに信頼できない値になります。</p>
+
+<p>可能な回避策として、代わりに {{jsxref("String")}} を使用してください。</p>
+
+<p>大きい数値は {{jsxref("BigInt")}} 型を用いて表すことができます。</p>
+
+<h3 id="Using_Number_to_convert_a_Date_object" name="Using_Number_to_convert_a_Date_object">Number を使用して Date オブジェクトを変換する</h3>
+
+<p>以下の例は、 <code>Number</code> を関数として用いて、{{jsxref("Date")}} オブジェクトを数値に変換します:</p>
+
+<pre class="brush: js notranslate">let d = new Date('December 17, 1995 03:24:00')
+console.log(Number(d))
+</pre>
+
+<p>これは、コンソールに "819199440000" を出力します。</p>
+
+<h3 id="Convert_numeric_strings_and_null_to_numbers" name="Convert_numeric_strings_and_null_to_numbers">数字や null を数値に変換する</h3>
+
+<pre class="brush: js notranslate" dir="rtl">Number('123') // 123
+Number('123') === 123 /// true
+Number('12.3') // 12.3
+Number('12.00') // 12
+Number('123e-1') // 12.3
+Number('') // 0
+Number(null) // 0
+Number('0x11') // 17
+Number('0b11') // 3
+Number('0o11') // 9
+Number('foo') // NaN
+Number('100a') // NaN
+Number('-Infinity') //-Infinity</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number-objects', 'Number')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("NaN")}}</li>
+ <li>{{jsxref("Arithmetic operators")}}</li>
+ <li>{{jsxref("Math")}} グローバルオブジェクト</li>
+ <li>任意の精度の整数型: {{jsxref("BigInt")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/isfinite/index.html b/files/ja/web/javascript/reference/global_objects/number/isfinite/index.html
new file mode 100644
index 0000000000..f1be47f244
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/isfinite/index.html
@@ -0,0 +1,88 @@
+---
+title: Number.isFinite()
+slug: Web/JavaScript/Reference/Global_Objects/Number/isFinite
+tags:
+ - JavaScript
+ - Method
+ - Number
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/isFinite
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.isFinite()</code></strong> メソッドは、渡された値が有限数であるかどうかを判断します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-isfinite.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Number.isFinite(<var>value</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>有限数かどうかテストされる値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた値が有限数かどうかを示す {{jsxref("Boolean")}}。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("isFinite", "isFinite()")}} グローバル関数と比較すると、このメソッドは強制的に引数を数値に変換しません。すなわち、数値型の値で、それが有限数でもある場合のみ、 <code>true</code> を返すことを意味します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_isFinite" name="Using_isFinite">isFinite の使用</h3>
+
+<pre class="brush: js notranslate">Number.isFinite(Infinity); // false
+Number.isFinite(NaN); // false
+Number.isFinite(-Infinity); // false
+
+Number.isFinite(0); // true
+Number.isFinite(2e64); // true
+
+Number.isFinite('0'); // false, would've been true with
+ // global isFinite('0')
+Number.isFinite(null); // false, would've been true with
+ // global isFinite(null)
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">if (Number.isFinite === undefined) Number.isFinite = function(value) {
+    return typeof value === 'number' &amp;&amp; isFinite(value);
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.isfinite', 'Number.isInteger')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.isFinite")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>このメソッドが所属している {{jsxref("Number")}} オブジェクト</li>
+ <li>グローバル関数 {{jsxref("isFinite")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/isinteger/index.html b/files/ja/web/javascript/reference/global_objects/number/isinteger/index.html
new file mode 100644
index 0000000000..a942b50e51
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/isinteger/index.html
@@ -0,0 +1,97 @@
+---
+title: Number.isInteger()
+slug: Web/JavaScript/Reference/Global_Objects/Number/isInteger
+tags:
+ - JavaScript
+ - Method
+ - Number
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/isInteger
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.isInteger()</code></strong> メソッドは渡された値が整数かどうかを判定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-isinteger.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Number.isInteger(<var>value</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>整数かどうかを判定される値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>渡された値が整数かどうかを示す {{jsxref("Boolean")}} です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>指定された値が整数の場合は <code>true</code> を返し、そうでない場合は <code>false</code> を返します。{{jsxref("NaN")}} もしくは {{jsxref("Infinity")}} の場合も <code>false</code> を返します。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<h3 id="Using_isInteger" name="Using_isInteger">isInteger の使用</h3>
+
+<pre class="brush: js notranslate">Number.isInteger(0); // true
+Number.isInteger(1); // true
+Number.isInteger(-100000); // true
+Number.isInteger(99999999999999999999999); // true
+
+Number.isInteger(0.1); // false
+Number.isInteger(Math.PI); // false
+
+Number.isInteger(NaN); // false
+Number.isInteger(Infinity); // false
+Number.isInteger(-Infinity); // false
+Number.isInteger('10'); // false
+Number.isInteger(true); // false
+Number.isInteger(false); // false
+Number.isInteger([1]); // false
+
+Number.isInteger(5.0); // true
+Number.isInteger(5.000000000000001); // false
+Number.isInteger(5.0000000000000001); // true
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">Number.isInteger = Number.isInteger || function(value) {
+ return typeof value === 'number' &amp;&amp;
+  isFinite(value) &amp;&amp;
+  Math.floor(value) === value;
+};
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.isinteger', 'Number.isInteger')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.isInteger")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>このメソッドが所属している {{jsxref("Number")}} オブジェクト。</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/isnan/index.html b/files/ja/web/javascript/reference/global_objects/number/isnan/index.html
new file mode 100644
index 0000000000..2077262cf1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/isnan/index.html
@@ -0,0 +1,100 @@
+---
+title: Number.isNaN()
+slug: Web/JavaScript/Reference/Global_Objects/Number/isNaN
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Number
+ - isNaN
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/isNaN
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.isNaN()</code></strong> メソッドは、渡された値が {{jsxref("NaN")}} であり、かつその型が {{jsxref("Number")}} であるかどうかを判断します。元となるグローバルの {{jsxref("isNaN", "isNaN()")}} よりも堅牢な版です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-isnan.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Number.isNaN(<var>value</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>{{jsxref("NaN")}} かどうかテストされる値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた値が {{jsxref("NaN")}} であり、かつその型が {{jsxref("Number")}} である場合は <strong>true</strong>、それ以外の場合は <strong>false</strong> です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} と {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}} の等価演算子ではどちらも、 {{jsxref("Global_Objects/NaN", "NaN")}} が {{jsxref("Global_Objects/NaN", "NaN")}} <em>である</em>かどうかを検査すると <code>false</code> と評価されてしまうため、 <code>Number.isNaN()</code> 関数が必要となります。この状況は、 JavaScript においてあり得る他のすべての値の比較と異なります。</p>
+
+<p>グローバルの {{jsxref("Global_Objects/isNaN", "isNaN()")}} 関数とは異なり、 <code>Number.isNaN()</code> は強制的に引数が数値に変換される問題の影響をうけません。これは、通常 {{jsxref("NaN")}} に変換されるが実際には {{jsxref("NaN")}} ではない値が、安全に渡されることを意味します。つまりこの関数は、数値型であり、かつ {{jsxref("NaN")}} である値が渡されたときのみ、 <code>true</code> を返すということです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_isNaN" name="Using_isNaN">isNaN の使用</h3>
+
+<pre class="brush: js notranslate">Number.isNaN(NaN); // true
+Number.isNaN(Number.NaN); // true
+Number.isNaN(0 / 0); // true
+
+// たとえば、以下の値を isNaN() グローバル関数に渡すと true が返される
+Number.isNaN('NaN'); // false
+Number.isNaN(undefined); // false
+Number.isNaN({}); // false
+Number.isNaN('blabla'); // false
+
+// 以下はすべて false を返す
+Number.isNaN(true);
+Number.isNaN(null);
+Number.isNaN(37);
+Number.isNaN('37');
+Number.isNaN('37.37');
+Number.isNaN('');
+Number.isNaN(' ');
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>以下の例が動作するのは、 NaN が JavaScript で唯一、自分自身と比較して等しくない値だからです。</p>
+
+<pre class="brush: js notranslate">Number.isNaN = Number.isNaN || function isNaN(input) {
+ return typeof input === 'number' &amp;&amp; input !== input;
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.isnan', 'Number.isnan')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<div>{{Compat("javascript.builtins.Number.isNaN")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number")}}</li>
+ <li>{{jsxref("isNaN", "isNaN()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/issafeinteger/index.html b/files/ja/web/javascript/reference/global_objects/number/issafeinteger/index.html
new file mode 100644
index 0000000000..5e70719391
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/issafeinteger/index.html
@@ -0,0 +1,97 @@
+---
+title: Number.isSafeInteger()
+slug: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger
+tags:
+ - ECMAScript6
+ - JavaScript
+ - Method
+ - Number
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.isSafeInteger()</code></strong> メソッドは、指定された値が<dfn>安全な整数</dfn>であるかどうかを判定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-issafeinteger.html")}}</div>
+
+<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div>
+
+<p>安全な整数とは、以下のような整数です。</p>
+
+<ul>
+ <li>正確に IEEE-754 倍精度数として表現することができる</li>
+ <li>その IEEE-754 の表現は、他の整数を IEEE-754 の表現に適合するように、丸めた結果にはならない</li>
+</ul>
+
+<p>例えば、<code>2<sup>53</sup> - 1</code> は安全な整数です。正確に表現することができ、他の整数は、どの IEEE-754 丸めモードの下で丸めたものにもなっていません。対照的に、<code>2<sup>53</sup></code> は安全な整数では<em>ありません</em>。これは IEEE-754 で正確に表現されますが、整数値 <code>2<sup>53</sup> + 1</code> が直接 IEEE-754 では表現できず、四捨五入や切り捨ての丸めによって <code>2<sup>53</sup></code> になるからです。安全な整数は <code>-(2<sup>53</sup> - 1)</code> 以上 <code>2<sup>53</sup> - 1</code> 以下の整数値です (± <code>9007199254740991</code> または ± 9,007,199,254,740,991 です)。</p>
+
+<p>完全な精度で ~9 兆より大きい値や小さい値を扱うには、<a href="https://ja.wikipedia.org/wiki/%E4%BB%BB%E6%84%8F%E7%B2%BE%E5%BA%A6%E6%BC%94%E7%AE%97">任意精度演算ライブラリ</a>を使用する必要があります。数値の浮動小数点表現の詳細については、 <a href="http://floating-point-gui.de/">What Every Programmer Needs to Know about Floating Point Arithmetic</a> を参照してください。s</p>
+
+<p>巨大な整数値については、 {{jsxref("BigInt")}} 型を使用することを検討してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>Number.isSafeInteger(<var>testValue</var>)</code>
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>testValue</var></code></dt>
+ <dd>安全な整数かどうかをテストする値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Boolean")}} で、与えられた数値が安全な整数であるかどうかを示します。</p>
+
+<h2 id="Polyfill">Polyfill</h2>
+
+<pre class="brush: js notranslate">Number.isSafeInteger = Number.isSafeInteger || function (value) {
+ return Number.isInteger(value) &amp;&amp; Math.abs(value) &lt;= Number.MAX_SAFE_INTEGER;
+};
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_isSafeInteger" name="Using_isSafeInteger">isSafeInteger の使用</h3>
+
+<pre class="brush: js notranslate">Number.isSafeInteger(3); // true
+Number.isSafeInteger(Math.pow(2, 53)); // false
+Number.isSafeInteger(Math.pow(2, 53) - 1); // true
+Number.isSafeInteger(NaN); // false
+Number.isSafeInteger(Infinity); // false
+Number.isSafeInteger('3'); // false
+Number.isSafeInteger(3.1); // false
+Number.isSafeInteger(3.0); // true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.isSafeInteger")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>このメソッドが所属する {{jsxref("Number")}} オブジェクト。</li>
+ <li>{{jsxref("Number.MIN_SAFE_INTEGER")}}</li>
+ <li>{{jsxref("Number.MAX_SAFE_INTEGER")}}</li>
+ <li>{{jsxref("BigInt")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/max_safe_integer/index.html b/files/ja/web/javascript/reference/global_objects/number/max_safe_integer/index.html
new file mode 100644
index 0000000000..99d40495e2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/max_safe_integer/index.html
@@ -0,0 +1,81 @@
+---
+title: Number.MAX_SAFE_INTEGER
+slug: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Number
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.MAX_SAFE_INTEGER</code></strong> 定数は、JavaScript における安全な整数の最大値 (<code>2<sup>53</sup> - 1</code>) を表します。</p>
+
+<p>もっと大きな整数には、 {{jsxref("BigInt")}} を使用することを検討してください。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-maxsafeinteger.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>MAX_SAFE_INTEGER</code> 定数は <code>9007199254740991</code> (9,007,199,254,740,991) である値です。その数である理由は JavaScript が <a href="https://ja.wikipedia.org/wiki/IEEE_754">IEEE 754</a> で指定されたとおり<a href="https://ja.wikipedia.org/wiki/%E5%80%8D%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0">倍精度浮動小数点型数値</a>を使用し安全に <code>-(2<sup>53</sup> - 1)</code> と <code>2<sup>53</sup> - 1</code> との間の数を表すことができるからです。</p>
+
+<p>この文脈で示している安全とは、整数を正確に表現し、正しく比較する能力を指します。たとえば、 <code>Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2</code> は、数学的には不正確ですが true と評価されます。詳細については {{jsxref("Number.isSafeInteger()")}} を見てください。</p>
+
+<p>このフィールドは古いブラウザーには存在しません。 <code>Math.max(Number.MAX_SAFE_INTEGER, 2)</code> のように存在を確認せずに使用すると、 NaN のような望ましくない結果が得られます。</p>
+
+<p><code>MAX_SAFE_INTEGER</code> は {{jsxref("Number")}} の静的なプロパティなので、自ら生成した {{jsxref("Number")}} オブジェクトのプロパティとしてではなく、常に <code>Number.MAX_SAFE_INTEGER</code> として使うようにしてください。</p>
+
+<h2 id="Polyfill">Polyfill</h2>
+
+<pre class="brush: js notranslate">if (!Number.MAX_SAFE_INTEGER) {
+ Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Return_value_of_MAX_SAFE_INTEGER" name="Return_value_of_MAX_SAFE_INTEGER">MAX_SAFE_INTEGER の返値</h3>
+
+<pre class="brush: js notranslate">Number.MAX_SAFE_INTEGER; // 9007199254740991
+</pre>
+
+<h3 id="Numbers_higher_than_safe_integer" name="Numbers_higher_than_safe_integer">安全な整数よりも大きな数値</h3>
+
+<p>浮動小数点の場合、ゼロのような正規の精度以下の場合を除いて、実際には10進数の末尾の "1" が値となるため、これは2を返します。</p>
+
+<pre class="brush: js notranslate">Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.MAX_SAFE_INTEGER")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.MIN_SAFE_INTEGER")}}</li>
+ <li>{{jsxref("Number.isSafeInteger()")}}</li>
+ <li>{{jsxref("BigInt")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/max_value/index.html b/files/ja/web/javascript/reference/global_objects/number/max_value/index.html
new file mode 100644
index 0000000000..b4aea1a161
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/max_value/index.html
@@ -0,0 +1,66 @@
+---
+title: Number.MAX_VALUE
+slug: Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE
+tags:
+ - JavaScript
+ - Number
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.MAX_VALUE</code></strong> プロパティは、 JavaScript において表すことが可能な最大の数値です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-maxvalue.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>MAX_VALUE</code> プロパティはおよそ <code>1.79E+308</code>、または 2<sup>1024</sup> の値です。<code>MAX_VALUE</code> よりも大きな数値は {{jsxref("Infinity")}} で表されます。</p>
+
+<p><code>MAX_VALUE</code> は {{jsxref("Number")}} オブジェクトの静的なプロパティですので、 生成した {{jsxref("Number")}} オブジェクトのプロパティとしてではなく、常に <code>Number.MAX_VALUE</code> として使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_MAX_VALUE" name="Using_MAX_VALUE">MAX_VALUE の使用</h3>
+
+<p>以下のコードは、2 つの数値を掛け算しています。その結果が <code>MAX_VALUE</code> より小さいか等しい場合は、<code>func1</code> 関数が呼び出されます。それ以外の場合は、<code>func2</code> 関数が呼び出されます。</p>
+
+<pre class="brush: js notranslate">if (num1 * num2 &gt;= Number.MAX_VALUE) {
+ func1();
+} else {
+ func2();
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.max_value', 'Number.MAX_VALUE')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.MAX_VALUE")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.MIN_VALUE")}}</li>
+ <li>所属先の {{jsxref("Number")}} オブジェクト</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/min_safe_integer/index.html b/files/ja/web/javascript/reference/global_objects/number/min_safe_integer/index.html
new file mode 100644
index 0000000000..7b3eb2df36
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/min_safe_integer/index.html
@@ -0,0 +1,64 @@
+---
+title: Number.MIN_SAFE_INTEGER
+slug: Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Number
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.MIN_SAFE_INTEGER</code></strong> 定数は、JavaScript における安全な整数の最小値 (<code>-(2<sup>53</sup> - 1)</code>) を表します。</p>
+
+<p>これよりも小さな整数値を表す場合は、 {{jsxref("BigInt")}} を使用することを検討してください。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-min-safe-integer.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>MIN_SAFE_INTEGER</code> 定数は <code>-9007199254740991</code> (-9,007,199,254,740,991 またはおよそ -9000 兆 ) である値です。その数である理由は JavaScript が <a href="https://ja.wikipedia.org/wiki/IEEE_754">IEEE 754</a> で指定されたとおり<a href="https://ja.wikipedia.org/wiki/%E5%80%8D%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0">倍精度浮動小数点型数値</a>を使用し安全に <code>-(2<sup>53</sup> - 1)</code> と <code>2<sup>53</sup> - 1</code> との間の数を表すことができるからです。詳しくは {{jsxref("Number.isSafeInteger()")}} を見てください。</p>
+
+<p><code>MIN_SAFE_INTEGER</code> 定数は {{jsxref("Number")}} オブジェクトの静的なプロパティなので、自ら生成した {{jsxref("Number")}} オブジェクトのプロパティとしてではなく、常に、<code>Number.MIN_SAFE_INTEGER</code> として使用するようにしてください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_MIN_SAFE_INTEGER" name="Using_MIN_SAFE_INTEGER">MIN_SAFE_INTEGER の使用</h3>
+
+<pre class="brush: js notranslate">Number.MIN_SAFE_INTEGER // -9007199254740991
+-(Math.pow(2, 53) - 1) // -9007199254740991
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.min_safe_integer', 'Number.MIN_SAFE_INTEGER')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.MIN_SAFE_INTEGER")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.MAX_SAFE_INTEGER")}}</li>
+ <li>{{jsxref("Number.isSafeInteger()")}}</li>
+ <li>{{jsxref("BigInt")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/min_value/index.html b/files/ja/web/javascript/reference/global_objects/number/min_value/index.html
new file mode 100644
index 0000000000..5df4e59f6b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/min_value/index.html
@@ -0,0 +1,66 @@
+---
+title: Number.MIN_VALUE
+slug: Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE
+tags:
+ - JavaScript
+ - Number
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.MIN_VALUE</code></strong> プロパティは、 JavaScript において表すことが可能な最小の正の数値です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-min-value.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>MIN_VALUE</code> プロパティは JavaScript が表すことができる、0 に最も近い数であり、最大の負の数ではありません。</p>
+
+<p><code>Number.MIN_VALUE</code> は <code>5e-324</code>、すなわち浮動小数点の精度で表すことができる最も小さな正の数、つまり 0 にできるだけ違い数です。 <code>MIN_VALUE</code> より小さな値 ("アンダーフローする値") は 0 に変換されます。</p>
+
+<p><code>MIN_VALUE</code> は {{jsxref("Number")}} オブジェクトの静的なプロパティですので、 生成した {{jsxref("Number")}} オブジェクトのプロパティとしてではなく、常に <code>Number.MIN_VALUE</code> として使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_MIN_VALUE" name="Using_MIN_VALUE">MIN_VALUE の使用</h3>
+
+<p>以下のコードは、2 つの数値を割り算しています。その結果が <code>MIN_VALUE</code> より大きいか等しい場合は、<code>func1</code> 関数が呼び出されます。それ以外の場合は、<code>func2</code> 関数が呼び出されます。</p>
+
+<pre class="brush: js notranslate">if (num1 / num2 &gt;= Number.MIN_VALUE) {
+ func1();
+} else {
+ func2();
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.min_value', 'Number.MIN_VALUE')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.MIN_VALUE")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.MAX_VALUE")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/nan/index.html b/files/ja/web/javascript/reference/global_objects/number/nan/index.html
new file mode 100644
index 0000000000..f28ee1e457
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/nan/index.html
@@ -0,0 +1,63 @@
+---
+title: Number.NaN
+slug: Web/JavaScript/Reference/Global_Objects/Number/NaN
+tags:
+ - JavaScript
+ - Number
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/NaN
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.NaN</code></strong> は<ruby>非数<rp> (</rp><rt>Not-A-Number</rt><rp>) </rp></ruby>を表す値です。これは {{jsxref("NaN")}} と同じです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-nan.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<p>この静的プロパティにアクセスするために {{jsxref("Number")}} オブジェクトを生成する必要はありません (<code>Number.NaN</code> を使用してください)。</p>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Checking_whether_values_are_numeric" name="Checking_whether_values_are_numeric">値が数値であるかどうかのチェック</h3>
+
+<pre class="brush: js notranslate">function sanitise(x) {
+ if (isNaN(x)) {
+ return Number.NaN;
+ }
+ return x;
+}</pre>
+
+<h3 id="Testing_against_NaN" name="Testing_against_NaN">NaN に対するテスト</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/NaN#Testing_against_NaN">NaN に対するテスト</a>を <code>NaN</code> のページで参照してください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.nan', 'Number.NaN')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.NaN")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>グローバル {{jsxref("NaN")}} オブジェクト</li>
+ <li>{{jsxref("Number")}} オブジェクトに所属しています。</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/negative_infinity/index.html b/files/ja/web/javascript/reference/global_objects/number/negative_infinity/index.html
new file mode 100644
index 0000000000..16a57a9f91
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/negative_infinity/index.html
@@ -0,0 +1,84 @@
+---
+title: Number.NEGATIVE_INFINITY
+slug: Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY
+tags:
+ - JavaScript
+ - Number
+ - Property
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.NEGATIVE_INFINITY</code></strong> プロパティは負の無限大を表す値です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-negative-infinity.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Number.NEGATIVE_INFINITY</code> の値は、グローバルオブジェクトの {{jsxref("Infinity")}} プロパティの負の値と同じです。</p>
+
+<p>この値は数学的な無限大とは少々異なった振る舞いをします。</p>
+
+<ul>
+ <li>{{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}} も含む任意の正の値と、 <code>NEGATIVE_INFINITY</code> の積は <code>NEGATIVE_INFINITY</code> になります。</li>
+ <li><code>NEGATIVE_INFINITY</code> も含む任意の負の値と、 <code>NEGATIVE_INFINITY</code> の積は {{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}} になります。</li>
+ <li>任意の正の数を <code>NEGATIVE_INFINITY</code> で割った商は、-0 になります。</li>
+ <li>任意の負の数を <code>NEGATIVE_INFINITY</code> で割った商は、+0 になります。</li>
+ <li>零 と <code>NEGATIVE_INFINITY</code> の積は {{jsxref("NaN")}} になります。</li>
+ <li>NaN と <code>NEGATIVE_INFINITY</code> の積は {{jsxref("NaN")}} になります。</li>
+ <li><code>NEGATIVE_INFINITY</code> を <code>NEGATIVE_INFINITY</code> を除く、任意の負の値で割った商は {{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}} になります。</li>
+ <li><code>NEGATIVE_INFINITY</code> を {{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}} を除く、任意の正の値で割った商は <code>NEGATIVE_INFINITY</code> になります。</li>
+ <li><code>NEGATIVE_INFINITY</code> を <code>NEGATIVE_INFINITY</code> または {{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}} のいずれかで割った商は {{jsxref("NaN")}} になります。</li>
+</ul>
+
+<p>成功した場合に有限数を返す関数がエラーである状態を示すために、<code>Number.NEGATIVE_INFINITY</code> プロパティを使いたいかもしれません。しかし、そのような場合は、 {{jsxref("isFinite")}} の方がより適しているであろうことに留意してください。</p>
+
+<p><code>NEGATIVE_INFINITY</code> は {{jsxref("Number")}} の静的プロパティですので、作成した {{jsxref("Number")}} オブジェクトのプロパティとしてではなく、常に <code>Number.NEGATIVE_INFINITY</code> として扱ってください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_NEGATIVE_INFINITY" name="Using_NEGATIVE_INFINITY">NEGATIVE_INFINITY の使用</h3>
+
+<p>以下の例では、変数 <code>smallNumber</code> に最小値よりも小さな値が代入されています。{{jsxref("Statements/if...else", "if")}} ステートメントが実行されたとき、<code>smallNumber</code> は <code>-Infinity</code> の値を持つので、処理が継続する前に <code>smallNumber</code> により扱いやすい値がセットされます。</p>
+
+<pre class="brush: js notranslate">var smallNumber = (-Number.MAX_VALUE) * 2;
+
+if (smallNumber === Number.NEGATIVE_INFINITY) {
+ smallNumber = returnFinite();
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.negative_infinity', 'Number.NEGATIVE_INFINITY')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.NEGATIVE_INFINITY")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.POSITIVE_INFINITY")}}</li>
+ <li>{{jsxref("Number.isFinite()")}}</li>
+ <li>{{jsxref("Global_Objects/Infinity", "Infinity")}}</li>
+ <li>{{jsxref("Global_Objects/isFinite", "isFinite()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/number/index.html b/files/ja/web/javascript/reference/global_objects/number/number/index.html
new file mode 100644
index 0000000000..94a5d01d33
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/number/index.html
@@ -0,0 +1,62 @@
+---
+title: Number() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Number/Number
+tags:
+ - Constructor
+ - JavaScript
+ - Number
+ - Reference
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/Number
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number()</code> コンストラクター</strong>は、 {{jsxref("Number")}} オブジェクトを生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: js">new Number(<var>value</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>作成されるオブジェクトの数値による値です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js">const a = new Number('123'); // a === 123 is false
+const b = Number('123'); // b === 123 is true
+a instanceof Number; // is true
+b instanceof Number; // is false</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number-constructor', 'Number constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.Number")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("NaN")}}</li>
+ <li>{{jsxref("Math")}} グローバルオブジェクト</li>
+ <li>可変精度の整数: {{jsxref("BigInt")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/parsefloat/index.html b/files/ja/web/javascript/reference/global_objects/number/parsefloat/index.html
new file mode 100644
index 0000000000..c30f9eabcf
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/parsefloat/index.html
@@ -0,0 +1,88 @@
+---
+title: Number.parseFloat()
+slug: Web/JavaScript/Reference/Global_Objects/Number/parseFloat
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Number
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseFloat
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Number.parseFloat()</code></strong> メソッドは、引数を解釈して浮動小数点値を返します。引数の数値が解釈できない場合は、 {{jsxref("NaN")}} を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-parsefloat.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="notranslate">Number.parseFloat(<var>string</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>string</var></code></dt>
+ <dd>解析する値。この引数が文字列でない場合、抽象操作 <code><a href="https://tc39.es/ecma262/#sec-tostring">ToString</a></code> を用いて文字列に変換されます。この引数では先頭の{{glossary("whitespace", "ホワイトスペース")}}は無視されます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された <code><var>string</var></code> を解釈した浮動小数点値です。</p>
+
+<p>または、最初のホワイトスペース以外の文字が数値に変換できなかった場合は {{jsxref("NaN")}} です。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">if (Number.parseFloat === undefined) {
+ Number.parseFloat = parseFloat;
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Number.parseFloat_vs_parseFloat" name="Number.parseFloat_vs_parseFloat">Number.parseFloat と parseFloat</h3>
+
+<p>このメソッドは、グローバルの {{jsxref("parseFloat", "parseFloat()")}} 関数と同じ機能を持っています。</p>
+
+<pre class="brush: js notranslate">Number.parseFloat === parseFloat; // true
+</pre>
+
+<p>このメソッドも ECMAScript 2015 の一部です。 (この目的は、グローバルのモジュール化にあります。)</p>
+
+<p>さらなる詳細と例は {{jsxref("parseFloat", "parseFloat()")}} を参照してください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.parsefloat', 'Number.parseFloat')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.parseFloat")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>
+ <dl>
+ <dt>{{jsxref("Number")}}</dt>
+ <dd>このメソッドが所属するオブジェクト。</dd>
+ </dl>
+ </li>
+ <li>グローバルの {{jsxref("parseFloat", "parseFloat()")}} メソッド。</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/parseint/index.html b/files/ja/web/javascript/reference/global_objects/number/parseint/index.html
new file mode 100644
index 0000000000..3e07c4e573
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/parseint/index.html
@@ -0,0 +1,82 @@
+---
+title: Number.parseInt()
+slug: Web/JavaScript/Reference/Global_Objects/Number/parseInt
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Number
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseInt
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.parseInt()</code></strong> は、文字列の引数を解析し、指定された基数の整数値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-parseint.html", "taller")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Number.parseInt(<var>string,</var>[ <var>radix</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<div>
+<dl>
+ <dt><code><var>string</var></code></dt>
+ <dd>解析する値。この引数が文字列でない場合、抽象操作 <code><a href="https://tc39.es/ecma262/#sec-tostring">ToString</a></code> を用いて文字列に変換されます。この引数では先頭の{{glossary("whitespace", "ホワイトスペース")}}は無視されます。</dd>
+ <dt><code><var>radix</var></code><var> {{optional_inline}}</var></dt>
+ <dd><code>2</code> から <code>36</code> までの整数で、 <code><var>string</var></code> の<em>基数</em> (数学的記数法の底) を表します。これは既定値が <code>10</code> では<strong><em>ない</em></strong>ので注意してください。</dd>
+</dl>
+</div>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された <code><var>string</var></code> を解析した整数値です。</p>
+
+<p><code><var>radix</var></code> が <code>2</code> よりも小さいか <code>36</code> よりも大きい、または最初のホワイトスペース以外の文字が数値に変換できない場合は {{jsxref("NaN")}} が返されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドは、グローバルの {{jsxref("parseInt", "parseInt()")}} 関数と同じ機能です。</p>
+
+<pre class="brush: js">Number.parseInt === parseInt // true</pre>
+
+<p>また、これは ECMAScript 2015 の一部です (グローバルのモジュール化のため)。詳細や例は {{jsxref("parseInt", "parseInt()")}} を参照してください。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js">if (Number.parseInt === undefined) {
+ Number.parseInt = window.parseInt
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.parseint', 'Number.parseInt')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.parseInt")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>所属する {{jsxref("Number")}} オブジェクト</li>
+ <li>グローバルの {{jsxref("parseInt", "parseInt()")}} メソッド</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/positive_infinity/index.html b/files/ja/web/javascript/reference/global_objects/number/positive_infinity/index.html
new file mode 100644
index 0000000000..9d3afc9966
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/positive_infinity/index.html
@@ -0,0 +1,83 @@
+---
+title: Number.POSITIVE_INFINITY
+slug: Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY
+tags:
+ - JavaScript
+ - Number
+ - Property
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Number.POSITIVE_INFINITY</code></strong> プロパティは正の無限大を表す値です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-positive-infinity.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Number.POSITIVE_INFINITY</code> の値はグローバルオブジェクトの {{jsxref("Infinity")}} プロパティの値と同じです。</p>
+
+<p>この値は数学的な無限大とは少々異なった振る舞いをします。</p>
+
+<ul>
+ <li><code>POSITIVE_INFINITY</code> も含む任意の正の値と、 <code>POSITIVE_INFINITY</code> の積は <code>POSITIVE_INFINITY</code> になります。</li>
+ <li>{{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}} も含む任意の負の値と、 <code>POSITIVE_INFINITY</code> の積は {{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}} になります。</li>
+ <li>任意の正の数を <code>POSITIVE_INFINITY</code> で割った商は、+0 になります。</li>
+ <li>任意の負の数を <code>POSITIVE_INFINITY</code> で割った商は、-0 になります。</li>
+ <li>零 と <code>POSITIVE_INFINITY</code> の積は {{jsxref("NaN")}} になります。</li>
+ <li>{{jsxref("NaN")}} と <code>POSITIVE_INFINITY</code> の積は {{jsxref("NaN")}} になります。</li>
+ <li><code>POSITIVE_INFINITY</code> を {{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}} を除く、任意の負の値で割った商は {{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}} になります。</li>
+ <li><code>POSITIVE_INFINITY</code> を <code>POSITIVE_INFINITY</code> を除く、任意の正の値で割った商は <code>POSITIVE_INFINITY</code> になります。</li>
+ <li><code>POSITIVE_INFINITY</code> を {{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}} と <code>POSITIVE_INFINITY</code> のどちらかで割った商は {{jsxref("NaN")}} になります。</li>
+</ul>
+
+<p>成功した場合に有限数を返す関数がエラーである状態を示すために、<code>Number.POSITIVE_INFINITY</code> プロパティを使いたいかもしれません。しかし、そのような場合は、 {{jsxref("isFinite")}} の方がより適しているであろうことに留意してください。</p>
+
+<p><code>POSITIVE_INFINITY</code> は {{jsxref("Number")}} の静的プロパティですので、作成した {{jsxref("Number")}} オブジェクトのプロパティとしてではなく、常に <code>Number.POSITIVE_INFINITY</code> として扱ってください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_POSITIVE_INFINITY" name="Using_POSITIVE_INFINITY">POSITIVE_INFINITY の使用</h3>
+
+<p>以下の例では、変数 <code>bigNumber</code> に最大値よりも大きな値が代入されています。{{jsxref("Statements/if...else", "if")}} ステートメントが実行されるとき、<code>bigNumber</code> は <code>Infinity</code> の値を持つので、処理が継続する前に <code>bigNumber</code> により扱いやすい値がセットされます。</p>
+
+<pre class="brush: js notranslate">var bigNumber = Number.MAX_VALUE * 2;
+
+if (bigNumber == Number.POSITIVE_INFINITY) {
+ bigNumber = returnFinite();
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.positive_infinity', 'Number.POSITIVE_INFINITY')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.POSITIVE_INFINITY")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.NEGATIVE_INFINITY")}}</li>
+ <li>{{jsxref("Number.isFinite()")}}</li>
+ <li>{{jsxref("Infinity")}}</li>
+ <li>{{jsxref("isFinite", "isFinite()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/toexponential/index.html b/files/ja/web/javascript/reference/global_objects/number/toexponential/index.html
new file mode 100644
index 0000000000..549005d33a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/toexponential/index.html
@@ -0,0 +1,91 @@
+---
+title: Number.prototype.toExponential()
+slug: Web/JavaScript/Reference/Global_Objects/Number/toExponential
+tags:
+ - JavaScript
+ - Method
+ - Number
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/toExponential
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toExponential()</code></strong> メソッドは {{jsxref("Number")}} オブジェクトを指数表記で表した文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-toexponential.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>numObj</var>.toExponential([<var>fractionDigits</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>fractionDigits</var></code></dt>
+ <dd>任意です。小数点の後の桁数を指定する整数です。既定値はその数を表すのに必要な数の桁です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Number")}} オブジェクトを、指数表記 (小数点前は 1 桁、小数点の後は <code><var>fractionDigits</var></code> によって指定された桁で切り捨て) で表した文字列です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code><var>fractionDigits</var></code> が小さすぎたり大きすぎたりした場合。 <code>0</code> 以上 <code>20</code> 以下の値では {{jsxref("RangeError")}} が発生しません。実装によっては、より大きな値や小さな値に対応しているかもしれません。</dd>
+ <dt>{{jsxref("TypeError")}}</dt>
+ <dd>このメソッドが {{jsxref("Number")}} ではないオブジェクトに対して呼び出された場合。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>fractionDigits</var></code> 引数が省略された場合、小数点の後の桁数は、その値を特定するのに必要な桁数になります。</p>
+
+<p><code>toExponential</code> メソッドを 1 つの数値リテラル、または、指数も小数点もない数値リテラルに対して使用する場合、ドットが小数点として解釈されることを防ぐために、メソッド呼び出しに先立つドットの前に空白を置いてください。</p>
+
+<p>引数 <code><var>fractionDigits</var></code> で指定された桁よりも多くの桁を持っている数の場合、その数は、<code><var>fractionDigits</var></code> の桁で表すことができる最も近い数で表されます。{{jsxref("Number.prototype.toFixed", "toFixed()")}} メソッドの説明における概数表現の説明を参照してください。それは、<code>toExponential</code> メソッドにも適用されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toExponential" name="Using_toExponential">toExponential の使用</h3>
+
+<pre class="brush: js notranslate">var numObj = 77.1234;
+
+console.log(numObj.toExponential()); // 7.71234e+1 を表示
+console.log(numObj.toExponential(4)); // 7.7123e+1 を表示
+console.log(numObj.toExponential(2)); // 7.71e+1 を表示
+console.log(77.1234.toExponential()); // 7.71234e+1 を表示
+console.log(77 .toExponential()); // 7.7e+1 を表示
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.prototype.toexponential', 'Number.prototype.toExponential')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.toExponential")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.prototype.toFixed()")}}</li>
+ <li>{{jsxref("Number.prototype.toPrecision()")}}</li>
+ <li>{{jsxref("Number.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/tofixed/index.html b/files/ja/web/javascript/reference/global_objects/number/tofixed/index.html
new file mode 100644
index 0000000000..e14ff12e89
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/tofixed/index.html
@@ -0,0 +1,97 @@
+---
+title: Number.prototype.toFixed()
+slug: Web/JavaScript/Reference/Global_Objects/Number/toFixed
+tags:
+ - JavaScript
+ - Method
+ - Number
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/toFixed
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toFixed()</code></strong> メソッドは、数を固定小数点表記を用いて整形します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-tofixed.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>numObj</var>.toFixed([<var>digits</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>digits</var></code> {{optional_inline}}</dt>
+ <dd>小数点の後に現れる桁の数です。これは <code>0</code> 以上 <code>20</code> 以下の値、実装によっては、さらに広い値の範囲をサポートしているかもしれません。この引数が省略されると、それは <code>0</code> として扱われます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた数値を固定小数点表記を用いて表した文字列です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code><var>digits</var></code> が小さすぎたり大きすぎたりした場合。 <code>0</code> 以上 <code>100</code> 以下の値では {{jsxref("RangeError")}} が発生しません。実装によっては、より大きな値や小さな値に対応しているかもしれません。</dd>
+ <dt>{{jsxref("TypeError")}}</dt>
+ <dd>このメソッドが {{jsxref( "Number")}} ではないオブジェクト上で実行された場合。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><strong><code>toFixed()</code></strong> は <code><var>numObj</var></code> の文字列表記を、指数表記を使用せず、小数点以下を正確に <code><var>digits</var></code> 桁として返します。必要に応じて数値は丸められ、小数部は指定された長さになるよう必要に応じて 0 で埋められます。 <code><var>numObj</var></code> の絶対値が <code>1e+21</code> 以上の場合は、このメソッドは単純に {{jsxref("Number.prototype.toString()")}} を呼び出し、指数表記での文字列を返します。</p>
+
+<div class="warning">
+<p><strong>警告:</strong> 浮動小数点数は、二進数で正確にすべての十進数値を表すことができるわけではありません。これは予想外の結果を導くことがあり、例えば <code>0.1 + 0.2 === 0.3</code> は <code>false</code> を返します。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toFixed" name="Using_toFixed">toFixed の使用</h3>
+
+<pre class="brush: js notranslate">let numObj = 12345.6789
+
+numObj.toFixed() // '12346' を返す : 四捨五入され小数部がなくなる
+numObj.toFixed(1) // '12345.7' を返す : 四捨五入
+numObj.toFixed(6) // '12345.678900'を返す : 0 を追加する
+(1.23e+20).toFixed(2) // '123000000000000000000.00' を返す
+(1.23e-10).toFixed(2) // '0.00' を返す
+2.34.toFixed(1) // '2.3' を返す
+2.35.toFixed(1) // '2.4' を返す。切り上げ。
+2.55.toFixed(1) // '2.5' を返す。切り捨て。上記警告を参照。
+-2.34.toFixed(1) // -2.3 を返す (演算子の優先順位上、マイナスの数値リテラルは文字列を返さない)
+(-2.34).toFixed(1) // '-2.3'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.prototype.tofixed', 'Number.prototype.toFixed')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.toFixed")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.prototype.toExponential()")}}</li>
+ <li>{{jsxref("Number.prototype.toPrecision()")}}</li>
+ <li>{{jsxref("Number.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/tolocalestring/index.html b/files/ja/web/javascript/reference/global_objects/number/tolocalestring/index.html
new file mode 100644
index 0000000000..7b70d30c40
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/tolocalestring/index.html
@@ -0,0 +1,191 @@
+---
+title: Number.prototype.toLocaleString()
+slug: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
+tags:
+ - Internationalization
+ - JavaScript
+ - Method
+ - Number
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toLocaleString()</code></strong> メソッドは、この数値を表す言語依存の文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-tolocalestring.html")}}</div>
+
+
+
+<p>新しい <code>locales</code> と <code>options</code> 引数で アプリケーションは フォーマット変換で使われる言語を指定でき、関数の振る舞いをカスタマイズできます。古い実装では、<code>locales</code> と <code>options</code> 引数は無視され、使われるロケールや返される文字列の形式は完全に実装依存です。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><em>numObj</em>.toLocaleString(</code><code>[locales [, options]])</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>どのブラウザーが <code>locales</code> 引数と <code>options</code> 引数をサポートしているか確かめるために<a href="#Browser_compatibility">ブラウザー実装状況</a>セクションを調べてください。特徴検出のために<a href="#Checking_for_support_for_locales_and_options_arguments">例: locales 引数と options 引数をサポートしているか調べる</a>を調べてください。</p>
+
+<div class="note">
+<p><strong>注意:</strong> Firefox 29 で実装されている ECMAScript 国際化 API では、<code>locales</code> 引数が <code>Number.toLocaleString()</code> メソッドに追加されました。引数が {{jsxref("undefined")}} なら、このメソッドは OS によって指定されたローカライズされた数値を返します。Firefox の以前のバージョンでは、英語の数字が返されます。この変更はすぐに修正される可能性がある下位互換性に影響を与える回帰として報告されています。({{bug(999003)}})</p>
+</div>
+
+<div>{{page('/ja/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat', 'Parameters')}}</div>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>渡された数値を表す、言語依存の文字列です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toLocaleString" name="Using_toLocaleString"><code>toLocaleString</code> を使う</h3>
+
+<p>ロケールを指定しない基本的な使用で、デフォルトロケールとデフォルトオプションのフォーマットされた文字列が返されます。</p>
+
+<pre class="brush: js">var number = 3500;
+
+console.log(number.toLocaleString()); // Displays "3,500" if in U.S. English locale
+</pre>
+
+<h3 id="Checking_for_support_for_locales_and_options_arguments" name="Checking_for_support_for_locales_and_options_arguments"><code>locales</code> 引数と <code>options</code> 引数をサポートしているか調べる</h3>
+
+<p><code>locales</code> 引数と <code>options</code> 引数はまだすべてのブラウザーでサポートされておりません。不正な言語タグが {{jsxref("Global_Objects/RangeError", "RangeError")}} 例外で拒否される要件を使うことで、実装がすでにサポートしているかどうかを調べられます。</p>
+
+<pre class="brush: js">function toLocaleStringSupportsLocales() {
+ var number = 0;
+ try {
+ number.toLocaleString('i');
+ } catch (e) {
+ return e​.name === 'RangeError';
+ }
+ return false;
+}
+</pre>
+
+<p>ES5.1 以前の実装では、引数を使って <code>toLocaleString</code> を呼んだ場合に {{jsxref("RangeError")}} 例外を throw する必要はありませんでした。</p>
+
+<p>5.1 以前の ECMAScript をサポートしているものも含めたすべてのホストで動くチェックは、直接 <code>Number.prototype.toLocaleString</code> の地域オプションのサポートに必要な ECMA-402 で指定された機能をテストすることで行えます。</p>
+
+<pre class="brush: js">function toLocaleStringSupportsOptions() {
+ return !!(typeof Intl == 'object' &amp;&amp; Intl &amp;&amp; typeof Intl.NumberFormat == 'function');
+}</pre>
+
+<p>上記のコードは、グローバル <code>Intl</code> オブジェクトが <code>null</code> でないことと、<code>Intl</code> オブジェクトが <code>NumberFormat</code> プロパティを持ち、それが関数であることをテストします。</p>
+
+<h3 id="Using_locales" name="Using_locales"><code>locales</code> を使う</h3>
+
+<p>この例ではローカライズされた数値変換のバリエーションのいくつかを示します。アプリケーションのユーザーインターフェイスで使われる言語の形式を得るために、<code>locales</code> 引数を用いている言語(そしておそらくいくつかのフォールバック言語)を明示することを確かめてください。</p>
+
+<pre class="brush: js">var number = 123456.789;
+
+// German uses comma as decimal separator and period for thousands
+console.log(number.toLocaleString('de-DE'));
+// → 123.456,789
+
+// Arabic in most Arabic speaking countries uses real Arabic digits
+console.log(number.toLocaleString('ar-EG'));
+// → ١٢٣٤٥٦٫٧٨٩
+
+// India uses thousands/lakh/crore separators
+console.log(number.toLocaleString('en-IN'));
+// → 1,23,456.789
+
+// the nu extension key requests a numbering system, e.g. Chinese decimal
+console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
+// → 一二三,四五六.七八九
+
+// when requesting a language that may not be supported, such as
+// Balinese, include a fallback language, in this case Indonesian
+console.log(number.toLocaleString(['ban', 'id']));
+// → 123.456,789
+</pre>
+
+<h3 id="Using_options" name="Using_options"><code>options</code> を使う</h3>
+
+<p><code>toLocaleString</code> によって得られる結果は <code>options</code> 引数を使用してカスタマイズできます。</p>
+
+<pre class="brush: js">var number = 123456.789;
+
+// request a currency format
+console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
+// → 123.456,79 €
+
+// the Japanese yen doesn't use a minor unit
+console.log(number.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }))
+// → ¥123,457
+
+// limit to three significant digits
+console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
+// → 1,23,000
+
+// Use the host default language with options for number formatting
+var num = 30000.65;
+console.log(num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}));
+// → "30,000.65" where English is the default language, or
+// → "30.000,65" where German is the default language, or
+// → "30 000,65" where French is the default language
+</pre>
+
+<h2 id="Performance" name="Performance">性能</h2>
+
+<p>多数の数値をフォーマットするとき、{{jsxref("NumberFormat")}} オブジェクトを生成して {{jsxref("NumberFormat.format")}} プロパティによって得られる関数を使用するほうが良いです。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES3')}}</td>
+ <td>{{Spec2('ES3')}}</td>
+ <td>初期定義です。JavaScript 1.5 で実装されました。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-15.7.4.3', 'Number.prototype.toLocaleString')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int 1.0', '#sec-13.2.1', 'Number.prototype.toLocaleString')}}</td>
+ <td>{{Spec2('ES Int 1.0')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int 2.0', '#sec-13.2.1', 'Number.prototype.toLocaleString')}}</td>
+ <td>{{Spec2('ES Int 2.0')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sec-Number.prototype.toLocaleString', 'Number.prototype.toLocaleString')}}</td>
+ <td>{{Spec2('ES Int Draft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.Number.toLocaleString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/toprecision/index.html b/files/ja/web/javascript/reference/global_objects/number/toprecision/index.html
new file mode 100644
index 0000000000..61e5aae3d2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/toprecision/index.html
@@ -0,0 +1,92 @@
+---
+title: Number.prototype.toPrecision()
+slug: Web/JavaScript/Reference/Global_Objects/Number/toPrecision
+tags:
+ - JavaScript
+ - Method
+ - Number
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/toPrecision
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toPrecision()</code></strong> メソッドは {{jsxref("Number")}} オブジェクトを指定された精度で表した文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-toprecision.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>numObj</var>.toPrecision([<var>precision</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>precision</var></code> {{optional_inline}}</dt>
+ <dd>有効数字の数を指定する整数です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Number")}} オブジェクトを <code>precision</code> で指定された桁で概数化された、固定小数点数、または指数表記で表した文字列です。概数の表現方法については {{jsxref("Number.prototype.toFixed()")}} メソッドの説明を参照してください。それは <code>toPrecision()</code> にも適用されます。</p>
+
+<p>引数 <code>precision</code> が省略された場合、 {{jsxref("Number.prototype.toString()")}} のように振舞います。 <code>precision</code> が整数の値ではない場合は、最も近い整数に概数化されます。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/RangeError", "RangeError")}}</dt>
+ <dd><code>precision</code> が 1 と 100 の間 (両端を含む) でない場合、 {{jsxref("RangeError")}} が発生します。実装上はこの範囲を超えた値にも対応できます。 ECMA-262 では 21 桁までの精度のみを要求しています。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toPrecision" name="Using_toPrecision">toPrecision の使用</h3>
+
+<pre class="brush: js notranslate">let numObj = 5.123456
+
+console.log(numObj.toPrecision()) // logs '5.123456'
+console.log(numObj.toPrecision(5)) // logs '5.1235'
+console.log(numObj.toPrecision(2)) // logs '5.1'
+console.log(numObj.toPrecision(1)) // logs '5'
+
+numObj = 0.000123
+
+console.log(numObj.toPrecision()) // logs '0.000123'
+console.log(numObj.toPrecision(5)) // logs '0.00012300'
+console.log(numObj.toPrecision(2)) // logs '0.00012'
+console.log(numObj.toPrecision(1)) // logs '0.0001'
+
+// note that exponential notation might be returned in some circumstances
+console.log((1234.5).toPrecision(2)) // logs '1.2e+3'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.prototype.toprecision', 'Number.prototype.toPrecision')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.toPrecision")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.prototype.toFixed()")}}</li>
+ <li>{{jsxref("Number.prototype.toExponential()")}}</li>
+ <li>{{jsxref("Number.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/tosource/index.html b/files/ja/web/javascript/reference/global_objects/number/tosource/index.html
new file mode 100644
index 0000000000..852dd36dd3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/tosource/index.html
@@ -0,0 +1,39 @@
+---
+title: Number.prototype.toSource()
+slug: Web/JavaScript/Reference/Global_Objects/Number/toSource
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/toSource
+---
+<p>{{JSRef("Global_Objects", "Number")}}{{ Non-standard_header() }}</p>
+
+<h2 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h2>
+
+<p>オブジェクトのソースコードを表す文字列を返します。</p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="syntax">number.toSource()</pre>
+
+<h3 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h3>
+
+<p>無し。</p>
+
+<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2>
+
+<p><code>toSource</code> メソッドは以下の値を返します。:</p>
+
+<ul>
+ <li>組み込み <code>Number</code> オブジェクトでは、 <code>toSource</code> はソースコードが存在しないことを示す以下の文字列を返します。:</li>
+</ul>
+
+<pre class="eval">function Number() {[native code]}
+</pre>
+
+<ul>
+ <li><code>Number</code> オブジェクトのインスタンスでは、 <code>toSource</code> はそのソースコードを表す文字列を返します。</li>
+</ul>
+
+<p>このメソッドは、通常、 JavaScript によって内部的に呼ばれ、コード中で明示的には呼ばれません。</p>
+
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+
+<p><a href="ja/Core_JavaScript_1.5_Reference/Global_Objects/Object/toSource">Object.prototype.toSource</a></p>
diff --git a/files/ja/web/javascript/reference/global_objects/number/tostring/index.html b/files/ja/web/javascript/reference/global_objects/number/tostring/index.html
new file mode 100644
index 0000000000..d657e2489c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/tostring/index.html
@@ -0,0 +1,99 @@
+---
+title: Number.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/Number/toString
+tags:
+ - JavaScript
+ - Method
+ - Number
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/toString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toString()</code></strong> メソッドは、指定された {{jsxref("Number")}} オブジェクトを表す文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-tostring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>numObj</var>.toString([<var>radix</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>radix</var></code> {{optional_inline}}</dt>
+ <dd>数値を表すために使われる基数を指定する、 <code>2</code> から <code>36</code> までの整数です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された {{jsxref("Number")}} オブジェクトを表す文字列です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>toString()</code> は、与えられた <code><var>radix</var></code> が <code>2</code> 未満、または <code>36</code> を超える場合、{{jsxref("RangeError")}} が発生します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Number")}} オブジェクトは {{jsxref("Object")}} の <code>toString()</code> メソッドを上書きします。つまり、 {{jsxref("Object.prototype.toString()")}} を継承しません。 {{jsxref("Number")}} オブジェクトでは、 <code>toString()</code> メソッドは指定された基数でオブジェクトを表した文字列を返します。</p>
+
+<p><code>toString()</code> メソッドはその最初の引数を解釈し、 <code><var>radix</var></code> で指定された基数で表した文字列を返します。 <code>10</code> より大きい基数では、 9 より大きい数をアルファベットの文字で示します。例えば、16進表記 (基数 16) では、<code>a</code> から <code>f</code> までが使われます。</p>
+
+<p><code><var>radix</var></code> が指定されなかった場合、基数は <code>10</code> と見なされます。</p>
+
+<p><code><var>numObj</var></code> が負の場合、符号は保存されます。これは基数が 2 の場合も同様です。返される文字列は、<code><var>numObj</var></code> の 2 の補数<strong>ではなく</strong>、先頭に <code>-</code> 符号がついた <code><var>numObj</var></code> の正のバイナリー表現です。</p>
+
+<p><code><var>numObj</var></code> が整数でない場合、「ドット」符号は小数点以下を区切るために使われます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toString" name="Using_toString">toString の使用</h3>
+
+<pre class="brush: js notranslate">let count = 10
+
+console.log(count.toString()) // '10' を表示します。
+console.log((17).toString()) // '17' を表示します。
+console.log((17.2).toString()) // '17.2' を表示します。
+
+let x = 6
+
+console.log(x.toString(2)) // '110' を表示します。
+console.log((254).toString(16)) // 'fe' を表示します。
+
+console.log((-10).toString(2)) // '-1010' を表示します。
+console.log((-0xff).toString(2)) // '-11111111' を表示します。
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.prototype.tostring', 'Number.prototype.tostring')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.toString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.prototype.toFixed()")}}</li>
+ <li>{{jsxref("Number.prototype.toExponential()")}}</li>
+ <li>{{jsxref("Number.prototype.toPrecision()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/number/valueof/index.html b/files/ja/web/javascript/reference/global_objects/number/valueof/index.html
new file mode 100644
index 0000000000..02482a34c8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/number/valueof/index.html
@@ -0,0 +1,69 @@
+---
+title: Number.prototype.valueOf()
+slug: Web/JavaScript/Reference/Global_Objects/Number/valueOf
+tags:
+ - JavaScript
+ - Method
+ - Number
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Number/valueOf
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>valueOf()</code></strong> メソッドは {{jsxref("Number")}} オブジェクトがラップしているプリミティブ値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/number-valueof.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>numObj</var>.valueOf()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定した {{jsxref("Number")}} オブジェクトのプリミティブ値を表した数値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドは、通常は JavaScript によって内部的に呼び出されるものであり、コード中で明示的に呼び出されることはありません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_valueOf" name="Using_valueOf">valueOf の使用</h3>
+
+<pre class="brush: js notranslate">let numObj = new Number(10)
+console.log(typeof numObj) // object
+
+let num = numObj.valueOf()
+console.log(num) // 10
+console.log(typeof num) // number
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-number.prototype.valueof', 'Number.prototype.valueOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Number.valueOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Number.prototype.toSource()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/__definegetter__/index.html b/files/ja/web/javascript/reference/global_objects/object/__definegetter__/index.html
new file mode 100644
index 0000000000..dfa2a3cd81
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/__definegetter__/index.html
@@ -0,0 +1,100 @@
+---
+title: Object.prototype.__defineGetter__()
+slug: Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__
+tags:
+ - JavaScript
+ - JavaScript Reference
+ - Method
+ - Object
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__
+---
+<div>{{JSRef}}</div>
+
+<div class="warning">
+<p>この機能は非推奨となり、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクト初期化子の構文</a>または {{jsxref("Object.defineProperty()")}} API を使用してゲッターを定義する方法で置き換えられました。この機能は広く実装されていますが、古い使い方であるために <a href="https://tc39.github.io/ecma262/#sec-additional-ecmascript-features-for-web-browsers">ECMAScript 仕様書</a>で非推奨となっています。よりよい代替策が存在するので、このメソッドを使用しないでください。</p>
+</div>
+
+<p><code><strong>__defineGetter__</strong></code> メソッドは、オブジェクトのプロパティと関数を結び付け、そのプロパティが参照されるときに呼び出されるようにします。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>obj</var>.__defineGetter__(<var>prop</var>, <var>func</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>prop</var></code></dt>
+ <dd>関数と結びつけるプロパティの名前を表す文字列です。</dd>
+ <dt><code><var>func</var></code></dt>
+ <dd>プロパティの値を参照するときに呼び出される関数です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}}.</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>__defineGetter__</code> を使用することで、既存のオブジェクトに{{jsxref("Operators/get", "ゲッター", "", 1)}}を定義する事ができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Non-standard_and_deprecated_way" name="Non-standard_and_deprecated_way">標準外かつ非推奨の方法</h3>
+
+<pre class="brush: js notranslate">var o = {};
+o.__defineGetter__('gimmeFive', function() { return 5; });
+console.log(o.gimmeFive); // 5
+</pre>
+
+<h3 id="Standard-compliant_ways" name="Standard-compliant_ways">標準準拠の方法</h3>
+
+<pre class="brush: js notranslate">// Using the get operator
+var o = { get gimmeFive() { return 5; } };
+console.log(o.gimmeFive); // 5
+
+// Using Object.defineProperty
+var o = {};
+Object.defineProperty(o, 'gimmeFive', {
+ get: function() {
+ return 5;
+ }
+});
+console.log(o.gimmeFive); // 5
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="spectable standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.prototype.__defineGetter__', 'Object.prototype.__defineGetter__()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.defineGetter")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.__defineSetter__()")}}</li>
+ <li>{{jsxref("Operators/get", "get")}} operator</li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Object.prototype.__lookupGetter__()")}}</li>
+ <li>{{jsxref("Object.prototype.__lookupSetter__()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">JavaScript ガイド: ゲッターとセッターの定義</a></li>
+ <li><a href="https://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/">[Blog Post] Deprecation of __defineGetter__ and __defineSetter__</a></li>
+ <li>{{bug(647423)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/__definesetter__/index.html b/files/ja/web/javascript/reference/global_objects/object/__definesetter__/index.html
new file mode 100644
index 0000000000..bb0f1d5894
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/__definesetter__/index.html
@@ -0,0 +1,115 @@
+---
+title: Object.prototype.__defineSetter__()
+slug: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__
+tags:
+ - Deprecated
+ - JavaScript
+ - Method
+ - Object
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__
+---
+<div>{{JSRef}}</div>
+
+<div class="warning">
+<p>この機能は非推奨となり、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクト初期化子の構文</a>または {{jsxref("Object.defineProperty()")}} API を使用してセッターを定義する方法で置き換えられました。</p>
+
+<p>ただし、ウェブ上では広く実装および利用されているため、ブラウザーが実装をやめる可能性は極めて低いと考えられます。</p>
+</div>
+
+<p><code><strong>__defineSetter__</strong></code> メソッドは、オブジェクトのプロパティと関数を結び付け、そのプロパティを設定しようとすると呼び出されるようにします。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>obj</var>.__defineSetter__(<var>prop</var>, <var>fun</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>prop</var></code></dt>
+ <dd>関数と結びつけられたプロパティの名前を表す文字列です。</dd>
+ <dt><code><var>fun</var></code></dt>
+ <dd>プロパティへ値を設定しようとしたときに呼び出される関数です。この関数は以下の形式をとります。
+ <pre class="brush: js notranslate">function(<var>val</var>) { . . . }</pre>
+
+ <dl>
+ <dt><code><var>val</var></code></dt>
+ <dd>An alias for the variable that holds the value attempted to be assigned to <code><var>prop</var></code> へ代入しようとする値を保持する変数のエイリアスです。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}}.</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>__defineSetter__</code> を使用することで、既存のオブジェクトに<a href="/ja/docs/JavaScript/Reference/Operators/set">セッター関数</a>を定義する事ができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Non-standard_and_deprecated_way" name="Non-standard_and_deprecated_way">標準外かつ非推奨の方法</h3>
+
+<pre class="brush: js notranslate">var o = {};
+o.__defineSetter__('value', function(val) { this.anotherValue = val; });
+o.value = 5;
+console.log(o.value); // undefined
+console.log(o.anotherValue); // 5
+</pre>
+
+<h3 id="Standard-compliant_ways" name="Standard-compliant_ways">標準準拠の方法</h3>
+
+<pre class="brush: js notranslate">// Using the set operator
+var o = { set value(val) { this.anotherValue = val; } };
+o.value = 5;
+console.log(o.value); // undefined
+console.log(o.anotherValue); // 5
+
+// Using Object.defineProperty
+var o = {};
+Object.defineProperty(o, 'value', {
+ set: function(val) {
+ this.anotherValue = val;
+ }
+});
+o.value = 5;
+console.log(o.value); // undefined
+console.log(o.anotherValue); // 5
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.prototype.__defineSetter__', 'Object.prototype.__defineSetter__()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.defineSetter")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.__defineGetter__()")}}</li>
+ <li>{{jsxref("Operators/set", "set")}} operator</li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Object.prototype.__lookupGetter__()")}}</li>
+ <li>{{jsxref("Object.prototype.__lookupSetter__()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">JavaScript ガイド: ゲッターとセッターの定義</a></li>
+ <li><a href="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/">[Blog Post] Deprecation of __defineGetter__ and __defineSetter__</a></li>
+ <li>{{bug(647423)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/__lookupgetter__/index.html b/files/ja/web/javascript/reference/global_objects/object/__lookupgetter__/index.html
new file mode 100644
index 0000000000..7477224ce4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/__lookupgetter__/index.html
@@ -0,0 +1,90 @@
+---
+title: Object.prototype.__lookupGetter__()
+slug: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__
+tags:
+ - Deprecated
+ - JavaScript
+ - Method
+ - Object
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>__lookupGetter__</code></strong> メソッドは、指定されたプロパティに結びつけられているゲッター関数を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>obj</var>.__lookupGetter__(<var>sprop</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>sprop</var></code></dt>
+ <dd>ゲッター関数を返すプロパティの名前を表す文字列です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたプロパティへのゲッターとしてバインドされている関数です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オブジェクトのプロパティに対してゲッター関数が定義されていても、そのプロパティを通してゲッター関数への参照を得ることはできません。そのプロパティは、ゲッター関数の返値を参照するからです。 <code>__lookupGetter__</code> を使うことで、ゲッター関数への参照を得ることができます。</p>
+
+<p>これは {{jsxref("Object.getOwnPropertyDescriptor()")}} と {{jsxref("Object.getPrototypeOf()")}} を使用する標準化された方法で行うことが可能になりました。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Standard-compliant_and_non-standard_ways_to_get_a_property_setter" name="Standard-compliant_and_non-standard_ways_to_get_a_property_setter">プロパティゲッターを取得するための標準準拠の方法と標準外の方法</h3>
+
+<pre class="brush: js notranslate">var obj = {
+ get foo() {
+ return Math.random() &gt; 0.5 ? 'foo' : 'bar';
+ }
+};
+
+
+// 標準外で非推奨の方法
+obj.__lookupGetter__('foo');
+// (function() { return Math.random() &gt; 0.5 ? 'foo' : 'bar'; })
+
+
+// 標準準拠の方法
+Object.getOwnPropertyDescriptor(obj, "foo").get;
+// (function() { return Math.random() &gt; 0.5 ? 'foo' : 'bar'; })
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="spectable standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.prototype.__lookupGetter__', 'Object.prototype.__lookupGetter__()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.lookupGetter")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.__lookupSetter__()")}}</li>
+ <li>{{jsxref("Functions/get", "get")}} operator</li>
+ <li>{{jsxref("Object.getOwnPropertyDescriptor()")}} and {{jsxref("Object.getPrototypeOf()")}}</li>
+ <li>{{jsxref("Object.prototype.__defineGetter__()")}}</li>
+ <li>{{jsxref("Object.prototype.__defineSetter__()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">JavaScript ガイド: ゲッターとセッターの定義</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/__lookupsetter__/index.html b/files/ja/web/javascript/reference/global_objects/object/__lookupsetter__/index.html
new file mode 100644
index 0000000000..e8d94176f3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/__lookupsetter__/index.html
@@ -0,0 +1,90 @@
+---
+title: Object.prototype.__lookupSetter__()
+slug: Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__
+tags:
+ - Deprecated
+ - JavaScript
+ - Method
+ - Object
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>__lookupSetter__</code></strong> メソッドは、指定されたプロパティに結びつけられているセッター関数を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>obj</var>.__lookupSetter__(<var>sprop</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>sprop</var></code></dt>
+ <dd>セッター関数を返すプロパティの名前を表す文字列です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたプロパティへのセッターとしてバインドされている関数です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オブジェクトのプロパティに対してセッター関数が定義されていても、そのプロパティを通してセッター関数への参照を得ることはできません。そのプロパティは、セッター関数の返値を参照するからです。 <code>__lookupSetter__</code> を使うことで、セッター関数への参照を得ることができます。</p>
+
+<p>これは {{jsxref("Object.getOwnPropertyDescriptor()")}} を使用する標準化された方法で行うことが可能になりました。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Standard-compliant_and_non-standard_ways_to_get_a_property_setter" name="Standard-compliant_and_non-standard_ways_to_get_a_property_setter">プロパティセッターを取得するための標準準拠の方法と標準外の方法</h3>
+
+<pre class="brush: js notranslate">var obj = {
+ set foo(value) {
+ this.bar = value;
+ }
+};
+
+
+// 標準外で非推奨の方法
+obj.__lookupSetter__('foo')
+// (function(value) { this.bar = value; })
+
+
+// 標準準拠の方法
+Object.getOwnPropertyDescriptor(obj, 'foo').set;
+// (function(value) { this.bar = value; })
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="spectable standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.prototype.__lookupSetter__', 'Object.prototype.__lookupSetter__()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.lookupSetter")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.__lookupGetter__()")}}</li>
+ <li>{{jsxref("Functions/set", "set")}} operator</li>
+ <li>{{jsxref("Object.getOwnPropertyDescriptor()")}} and {{jsxref("Object.getPrototypeOf()")}}</li>
+ <li>{{jsxref("Object.prototype.__defineGetter__()")}}</li>
+ <li>{{jsxref("Object.prototype.__defineSetter__()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">JavaScript ガイド: ゲッターとセッターの定義</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/assign/index.html b/files/ja/web/javascript/reference/global_objects/object/assign/index.html
new file mode 100644
index 0000000000..411c7c53c2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/assign/index.html
@@ -0,0 +1,278 @@
+---
+title: Object.assign()
+slug: Web/JavaScript/Reference/Global_Objects/Object/assign
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Object
+ - Reference
+ - polyfill
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/assign
+---
+<p>{{JSRef}}</p>
+
+<p><span class="seoSummary"><strong><code>Object.assign()</code></strong> メソッドは、すべての{{jsxref("Object/propertyIsEnumerable", "列挙可能", "", 1)}}な{{jsxref("Object/hasOwnProperty", "自身のプロパティ", "", 1)}}の値を、1つ以上の<em>コピー元オブジェクト</em>から<em>コピー先オブジェクト</em>にコピーするために使用されます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-assign.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.assign(<var>target</var>, ...<var>sources</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>コピー先オブジェクト — ソースのプロパティを適用するもので、変更後に返されます。</dd>
+ <dt><code><var>sources</var></code></dt>
+ <dd>コピー元オブジェクト — 適用したいプロパティを含むオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>コピー先オブジェクトです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>コピー先オブジェクトのプロパティは、コピー元に同じ{{jsxref("Object/keys", "キー", "", 1)}}のプロパティがあると上書きされます。より後のコピー元のプロパティが、より前のものを同様に上書きします。</p>
+
+<p><code>Object.assign()</code> メソッドは、コピー元オブジェクトから<ruby>列挙可能<rp> (</rp><rt>enumerable</rt><rp>) </rp></ruby>かつ<ruby>直接所有<rp> (</rp><rt>own</rt><rp>) </rp></ruby>のプロパティだけをコピー先オブジェクトにコピーします。この際、コピー元オブジェクトには <code>[[Get]]</code>、コピー先オブジェクトには <code>[[Set]]</code> を使いますので、<a href="/ja/docs/Web/JavaScript/Reference/Functions/get">ゲッター</a>と<a href="/ja/docs/Web/JavaScript/Reference/Functions/set">セッター</a>を呼び出すことになります。これはプロパティの<ruby><em>代入</em><rp> (</rp><rt>assign</rt><rp>) </rp></ruby>であり、プロパティをコピーしたり新しく定義をしたりするのとは違います。そのため、コピー元にゲッターが存在する場合、新しいプロパティをプロトタイプにマージする用途には不適切でしょう。</p>
+
+<p>プロパティ定義を (<ruby>列挙可能<rp> (</rp><rt>enumerable</rt><rp>) </rp></ruby>属性も含めて) プロトタイプの中にコピーするには、このメソッドではなく {{jsxref("Object.getOwnPropertyDescriptor()")}} と {{jsxref("Object.defineProperty()")}} を使用してください。</p>
+
+<p>{{jsxref("String")}} と {{jsxref("Symbol")}} の両方のプロパティがコピーされます。</p>
+
+<p>エラーが発生した場合、例えばプロパティが書き込み不可の場合は、 {{jsxref("TypeError")}} が発生しますが、エラーが発生する前にプロパティが追加される場合、 <code><var>target</var></code> オブジェクトが変更されることがあります。</p>
+
+<div class="blockIndicator note">
+<p><strong>Note:</strong> <code>Object.assign()</code> はコピー元の値が {{jsxref("null")}} や {{jsxref("undefined")}} でも例外を投げないことに注意して下さい。</p>
+</div>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>この{{Glossary("Polyfill","ポリフィル")}}は、 ES5 にシンボルがないため、シンボルのプロパティに対応していません。</p>
+
+<pre class="brush: js notranslate">if (typeof Object.assign !== 'function') {
+ // Must be writable: true, enumerable: false, configurable: true
+ Object.defineProperty(Object, "assign", {
+ value: function assign(target, varArgs) { // .length of function is 2
+ 'use strict';
+ if (target === null || target === undefined) {
+ throw new TypeError('Cannot convert undefined or null to object');
+ }
+
+ var to = Object(target);
+
+ for (var index = 1; index &lt; arguments.length; index++) {
+ var nextSource = arguments[index];
+
+ if (nextSource !== null &amp;&amp; nextSource !== undefined) {
+ for (var nextKey in nextSource) {
+ // Avoid bugs when hasOwnProperty is shadowed
+ if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
+ to[nextKey] = nextSource[nextKey];
+ }
+ }
+ }
+ }
+ return to;
+ },
+ writable: true,
+ configurable: true
+ });
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Cloning_an_object" name="Cloning_an_object">オブジェクトの複製</h3>
+
+<pre class="brush: js notranslate">const obj = { a: 1 };
+const copy = Object.assign({}, obj);
+console.log(copy); // { a: 1 }
+</pre>
+
+<h3 id="Deep_Clone" name="Deep_Clone">深い複製についての注意</h3>
+
+<p><code>Object.assign()</code> はプロパティの値をコピーするため、深い複製を行うには別な方法を使用する必要があります。</p>
+
+<p>元の値がオブジェクトへの参照である場合、参照の値のみをコピーするからです。</p>
+
+<pre class="brush: js notranslate">function test() {
+ 'use strict';
+
+ let obj1 = { a: 0 , b: { c: 0}};
+ let obj2 = Object.assign({}, obj1);
+ console.log(JSON.stringify(obj2)); // { "a": 0, "b": { "c": 0}}
+
+ obj1.a = 1;
+ console.log(JSON.stringify(obj1)); // { "a": 1, "b": { "c": 0}}
+ console.log(JSON.stringify(obj2)); // { "a": 0, "b": { "c": 0}}
+
+ obj2.a = 2;
+ console.log(JSON.stringify(obj1)); // { "a": 1, "b": { "c": 0}}
+ console.log(JSON.stringify(obj2)); // { "a": 2, "b": { "c": 0}}
+
+ obj2.b.c = 3;
+ console.log(JSON.stringify(obj1)); // { "a": 1, "b": { "c": 3}}
+ console.log(JSON.stringify(obj2)); // { "a": 2, "b": { "c": 3}}
+
+ // Deep Clone
+ obj1 = { a: 0 , b: { c: 0}};
+ let obj3 = JSON.parse(JSON.stringify(obj1));
+ obj1.a = 4;
+ obj1.b.c = 4;
+ console.log(JSON.stringify(obj3)); // { "a": 0, "b": { "c": 0}}
+}
+
+test();</pre>
+
+<h3 id="Merging_objects" name="Merging_objects">オブジェクトの合成</h3>
+
+<pre class="brush: js notranslate">const o1 = { a: 1 };
+const o2 = { b: 2 };
+const o3 = { c: 3 };
+
+const obj = Object.assign(o1, o2, o3);
+console.log(obj); // { a: 1, b: 2, c: 3 }
+console.log(o1); // { a: 1, b: 2, c: 3 }, コピー先オブジェクト自体が変化する</pre>
+
+<h3 id="Merging_objects_with_same_properties" name="Merging_objects_with_same_properties">同じプロパティを持つオブジェクトの合成</h3>
+
+<pre class="brush: js notranslate">const o1 = { a: 1, b: 1, c: 1 };
+const o2 = { b: 2, c: 2 };
+const o3 = { c: 3 };
+
+const obj = Object.assign({}, o1, o2, o3);
+console.log(obj); // { a: 1, b: 2, c: 3 }</pre>
+
+<p>プロパティは、引数の順でより後にあるオブジェクトが同じプロパティを持っていると上書きされます。</p>
+
+<h3 id="Copying_symbol-typed_properties" name="Copying_symbol-typed_properties">シンボル型のプロパティのコピー</h3>
+
+<pre class="brush: js notranslate">const o1 = { a: 1 };
+const o2 = { [Symbol('foo')]: 2 };
+
+const obj = Object.assign({}, o1, o2);
+console.log(obj); // { a : 1, [Symbol("foo")]: 2 } (cf. bug 1207182 on Firefox)
+Object.getOwnPropertySymbols(obj); // [Symbol(foo)]
+</pre>
+
+<h3 id="Properties_on_the_prototype_chain_and_non-enumerable_properties_cannot_be_copied" name="Properties_on_the_prototype_chain_and_non-enumerable_properties_cannot_be_copied">プロトタイプチェーン上のプロパティと列挙可能ではないプロパティはコピー不可</h3>
+
+<pre class="brush: js notranslate">const obj = Object.create({ foo: 1 }, { // foo は obj のプロトタイプチェーン
+ bar: {
+ value: 2 // bar は列挙可能ではないプロパティ
+ },
+ baz: {
+ value: 3,
+ enumerable: true // bazは直接所有で列挙可能なプロパティ
+ }
+});
+
+const copy = Object.assign({}, obj);
+console.log(copy); // { baz: 3 }
+</pre>
+
+<h3 id="Primitives_will_be_wrapped_to_objects" name="Primitives_will_be_wrapped_to_objects">プリミティブはオブジェクトでラップされる</h3>
+
+<pre class="brush: js notranslate">const v1 = 'abc';
+const v2 = true;
+const v3 = 10;
+const v4 = Symbol('foo');
+
+const obj = Object.assign({}, v1, null, v2, undefined, v3, v4);
+// プリミティブ値はラップされ、 null と undefined は無視される
+// なお、文字列をラップした時だけ、直接所有で列挙可能なプロパティが存在する
+console.log(obj); // { "0": "a", "1": "b", "2": "c" }
+</pre>
+
+<h3 id="Exceptions_will_interrupt_the_ongoing_copying_task" name="Exceptions_will_interrupt_the_ongoing_copying_task">例外が発生すると実行中のコピー作業が中断される</h3>
+
+<pre class="brush: js notranslate">const target = Object.defineProperty({}, 'foo', {
+ value: 1,
+ writable: false
+}); // target.foo は読み取り専用のプロパティ
+
+Object.assign(target, { bar: 2 }, { foo2: 3, foo: 3, foo3: 3 }, { baz: 4 });
+// TypeError: "foo" is read-only
+// target.foo に代入しようとすると、この例外が発生する
+
+console.log(target.bar); // 2, 一番目のコピー元オブジェクトはコピーされている
+console.log(target.foo2); // 3, 二番目のコピー元の最初のプロパティもコピーされている
+console.log(target.foo); // 1, ここで例外が発生
+console.log(target.foo3); // undefined, assign メソッドが終了したので foo3 はコピーされない
+console.log(target.baz); // undefined, 三番目のコピー元もコピーされない
+</pre>
+
+<h3 id="Copying_accessors" name="Copying_accessors">アクセサーのコピー</h3>
+
+<pre class="brush: js notranslate">var obj = {
+ foo: 1,
+ get bar() {
+ return 2;
+ }
+};
+
+let copy = Object.assign({}, obj);
+console.log(copy);
+// { foo: 1, bar: 2 }
+// copy.bar の値は obj.bar のゲッターの返値。
+
+// 記述子を完全にコピーする代入関数
+function completeAssign(target, ...sources) {
+ sources.forEach(source =&gt; {
+ let descriptors = Object.keys(source).reduce((descriptors, key) =&gt; {
+ descriptors[key] = Object.getOwnPropertyDescriptor(source, key);
+ return descriptors;
+ }, {});
+
+  // By default, Object.assign copies enumerable Symbols, too
+ Object.getOwnPropertySymbols(source).forEach(sym =&gt; {
+ let descriptor = Object.getOwnPropertyDescriptor(source, sym);
+ if (descriptor.enumerable) {
+ descriptors[sym] = descriptor;
+ }
+ });
+ Object.defineProperties(target, descriptors);
+ });
+ return target;
+}
+
+copy = completeAssign({}, obj);
+console.log(copy);
+// { foo:1, get bar() { return 2 } }
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.assign', 'Object.assign')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.assign")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.defineProperties()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">プロパティの列挙可能性と所有権</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Spread_syntax#Spread_in_object_literals">Object リテラルでおスプレッド構文の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/constructor/index.html b/files/ja/web/javascript/reference/global_objects/object/constructor/index.html
new file mode 100644
index 0000000000..eaafc2c9f9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/constructor/index.html
@@ -0,0 +1,257 @@
+---
+title: Object.prototype.constructor
+slug: Web/JavaScript/Reference/Global_Objects/Object/constructor
+tags:
+ - JavaScript
+ - Object
+ - Property
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/constructor
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>constructor</code></strong> プロパティは、インスタンスオブジェクトを生成した {{jsxref("Object")}} のコンストラクター関数への参照を返します。なお、このプロパティの値は<em>関数そのものへの参照</em>であり、関数名を含んだ文字列ではありません。</p>
+
+<p>値が <code>1</code>, <code>true</code>, <code>"test"</code> のようなプリミティブ値の場合は読み取り専用です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>(<code>Object.create(null)</code> で生成されたオブジェクトを除いて) すべてのオブジェクトが <code>constructor</code> プロパティを持ちます。明示的にコンストラクター関数を用いることなく生成されたオブジェクト (オブジェクトリテラルや配列リテラルなど) は、 <code>constructor</code> プロパティがそのオブジェクトの基礎オブジェクトのコンストラクター型を指します。</p>
+
+<pre class="brush: js notranslate">let o = {}
+o.constructor === Object // true
+
+let o = new Object
+o.constructor === Object // true
+
+let a = []
+a.constructor === Array // true
+
+let a = new Array
+a.constructor === Array // true
+
+let n = new Number(3)
+n.constructor === Number // true
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Displaying_the_constructor_of_an_object" name="Displaying_the_constructor_of_an_object">オブジェクトのコンストラクターの表示</h3>
+
+<p>以下の例では、コンストラクターである <code>Tree</code> と、その方のオブジェクトである <code>theTree</code> を生成します。そして、 <code>theTree</code> オブジェクトの <code>constructor</code> プロパティを表示します。</p>
+
+<pre class="brush: js notranslate">function Tree(name) {
+ this.name = name
+}
+
+let theTree = new Tree('Redwood')
+console.log('theTree.constructor is ' + theTree.constructor)
+</pre>
+
+<p>この例の出力は次のとおりです。</p>
+
+<pre class="brush: js notranslate">theTree.constructor is function Tree(name) {
+ this.name = name
+}
+</pre>
+
+<h3 id="Changing_the_constructor_of_an_object" name="Changing_the_constructor_of_an_object">オブジェクトのコンストラクターの変更</h3>
+
+<p>次の例は、一般的なオブジェクトのコンストラクターの値を変更する方法を示しています。 <code>true</code>, <code>1</code>, <code>"test"</code> については、 (コンストラクターが読み取り専用のネイティブのものであるため) 影響を受けません。</p>
+
+<p>この例は、オブジェクトの <code>constructor</code> プロパティに頼ることが常に安全とは限らないことを示しています。</p>
+
+<pre class="brush:js notranslate">function Type () {}
+
+let types = [
+ new Array(),
+ [],
+ new Boolean(),
+ true, // 変わらない
+ new Date(),
+ new Error(),
+ new Function(),
+ function () {},
+ Math,
+ new Number(),
+ 1, // 変わらない
+ new Object(),
+ {},
+ new RegExp(),
+ /(?:)/,
+ new String(),
+ 'test' // 変わらない
+];
+
+for (let i = 0; i &lt; types.length; i++) {
+ types[i].constructor = Type
+ types[i] = [types[i].constructor, types[i] instanceof Type, types[i].toString()]
+}
+
+console.log(types.join('\n'))
+</pre>
+
+<p>この例の出力は次の通りです (参考にコメントを追加しています)。</p>
+
+<pre class="brush: js notranslate">function Type() {},false, // new Array()
+function Type() {},false, // []
+function Type() {},false,false // new Boolean()
+function Boolean() {
+ [native code]
+},false,true // true
+function Type() {},false,Mon Sep 01 2014 16:03:49 GMT+0600 // new Date()
+function Type() {},false,Error // new Error()
+function Type() {},false,function anonymous() {
+
+} // new Function()
+function Type() {},false,function () {} // function () {}
+function Type() {},false,[object Math] // Math
+function Type() {},false,0 // new Number()
+function Number() {
+ [native code]
+},false,1 // 1
+function Type() {},false,[object Object] // new Object()
+function Type() {},false,[object Object] // {}
+function Type() {},false,/(?:)/ // new Regexp()
+function Type() {},false,/(?:)/ // /(?:)/
+function Type() {},false, // new String()
+function String() {
+ [native code]
+},false,test // 'test'
+</pre>
+
+<h3 id="Changing_the_constructor_of_a_function" name="Changing_the_constructor_of_a_function">関数のコンストラクターの変更</h3>
+
+<p>多くの場合、このプロパティは <strong>new</strong> およびプロトタイプ継承チェーンで将来の呼び出しに使われる<strong>関数コンストラクター</strong>としての関数の定義に使用されます。</p>
+
+<pre class="brush: js notranslate">function Parent() { /* ... */ }
+Parent.prototype.parentMethod = function parentMethod() {}
+
+function Child() {
+ Parent.call(this) // Make sure everything is initialized properly
+}
+Child.prototype = Object.create(Parent.prototype) // Child のプロトタイプを Parent のプロトタイプで再定義
+
+Child.prototype.constructor = Child // Child の元のコンストラクターを復帰</pre>
+
+<p>しかし、いつこの最後の行を実行する必要があるのでしょうか。残念ながら、正しい答えは、<em>場合による</em>ということです。</p>
+
+<p>元のコンストラクターを再割り当てすることが重要である場合と、これがコードの未使用の一行になる場合を定義してみましょう。</p>
+
+<p>以下の場合を見てみてください。オブジェクトが自分自身を生成するために <code>create()</code> メソッドを持っています。</p>
+
+<pre class="brush: js notranslate">function Parent() { /* ... */ }
+function CreatedConstructor() {
+ Parent.call(this)
+}
+
+CreatedConstructor.prototype = Object.create(Parent.prototype)
+
+CreatedConstructor.prototype.create = function create() {
+ return new this.constructor()
+}
+
+new CreatedConstructor().create().create() // TypeError undefined is not a function since constructor === Parent</pre>
+
+<p>上記の例では、コンストラクターが Parent にリンクしているため、例外が発生します。</p>
+
+<p>これを防ぐには、利用したいことに必要なコンストラクターを割り当てるだけです。</p>
+
+<pre class="brush: js notranslate">function Parent() { /* ... */ }
+function CreatedConstructor() { /* ... */ }
+
+CreatedConstructor.prototype = Object.create(Parent.prototype)
+CreatedConstructor.prototype.constructor = CreatedConstructor // sets the correct constructor for future use
+
+CreatedConstructor.prototype.create = function create() {
+ return new this.constructor()
+}
+
+new CreatedConstructor().create().create() // it's pretty fine</pre>
+
+<p>これで、コンストラクターの変更が有用である理由が明確になりました。</p>
+
+<p>もう一つの例を考えてみましょう。</p>
+
+<pre class="brush: js notranslate">function ParentWithStatic() {}
+
+ParentWithStatic.startPosition = { x: 0, y:0 } // Static member property
+ParentWithStatic.getStartPosition = function getStartPosition() {
+ return this.startPosition
+}
+
+function Child(x, y) {
+ this.position = {
+ x: x,
+ y: y
+ }
+}
+
+Child = Object.assign(ParentWithStatic)
+Child.prototype = Object.create(ParentWithStatic.prototype)
+Child.prototype.constructor = Child
+
+Child.prototype.getOffsetByInitialPosition = function getOffsetByInitialPosition() {
+ let position = this.position
+ let startPosition = this.constructor.getStartPosition() // error undefined is not a function, since the constructor is Child
+
+ return {
+ offsetX: startPosition.x - position.x,
+ offsetY: startPosition.y - position.y
+ }
+};</pre>
+
+<p>この例では、正常に動作するように親のコンストラクターを維持するか、静的プロパティを子のコンストラクタに再割り当てする必要があります。</p>
+
+<pre class="brush: js notranslate">...
+Child = Object.assign(ParentWithStatic) // Notice that we assign it before we create(...) a prototype below
+Child.prototype = Object.create(ParentWithStatic.prototype)
+...
+</pre>
+
+<p>または、親コンストラクターの識別子を子コンストラクター関数の別のプロパティに代入し、そのプロパティを介してアクセスします。</p>
+
+<pre class="brush: js notranslate">...
+Child.parentConstructor = ParentWithStatic
+Child.prototype = Object.create(ParentWithStatic.prototype)
+...
+ let startPosition = this.constructor.parentConstructor.getStartPosition()
+...
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>まとめ</strong>: コンストラクターを手動で更新したり設定したりすると、異なる結果や混乱する結果を導くことがあります。これを防ぐためには、それぞれの場合に応じてコンストラクターの役割を定義することが必要です。多くの場合、コンストラクター使用されず、再割り当ての必要はありません。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.prototype.constructor', 'Object.prototype.constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.constructor")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<div class="hidden">
+<p>ここでの中括弧は MDN wiki で定義されている標準マクロを呼び出します。詳細はこちらを確認してください。 <a href="/en-US/docs/MDN/Contribute/Structures/Macros/Commonly-used_macros">https://developer.mozilla.org/en-US/docs/MDN/Contribute/Structures/Macros/Commonly-used_macros</a></p>
+</div>
+
+<ul>
+ <li>{{jsxref("statements/class","クラス定義","",1)}}</li>
+ <li>{{jsxref("Classes/constructor","クラスのコンストラクター","",1)}}</li>
+ <li>用語集: {{Glossary("constructor", "コンストラクター", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/count/index.html b/files/ja/web/javascript/reference/global_objects/object/count/index.html
new file mode 100644
index 0000000000..62975242b6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/count/index.html
@@ -0,0 +1,44 @@
+---
+title: Object.prototype.__count__
+slug: Web/JavaScript/Reference/Global_Objects/Object/count
+tags:
+ - JavaScript
+ - Object
+ - Obsolute
+ - Property
+ - Prototype
+translation_of: Archive/Web/JavaScript/Object.count
+---
+<div>{{JSRef}}{{Non-standard_Header}}{{obsolete_header("gecko2")}}</div>
+
+<p><strong><code>__count__</code></strong> プロパティはオブジェクトの列挙可能なプロパティの数を保存するために使用されていましたが、削除されました。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><var>obj</var>.__count__</code></pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js">{ 1: 1 }.__count__ // 1
+[].__count__ // 0
+[1].__count__ // 1
+[1, /* hole */, 2, 3].__count__ // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>どの仕様書でも定義されていません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの対応</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.count")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a class="external" href="http://whereswalden.com/2010/04/06/more-changes-coming-to-spidermonkey-the-magical-__count__-property-of-objects-is-being-removed/">[Blog post] More changes coming to SpiderMonkey: the magical __count__ property is being removed</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/create/index.html b/files/ja/web/javascript/reference/global_objects/object/create/index.html
new file mode 100644
index 0000000000..f59ce00141
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/create/index.html
@@ -0,0 +1,404 @@
+---
+title: Object.create()
+slug: Web/JavaScript/Reference/Global_Objects/Object/create
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - 'Null'
+ - Object
+ - Reference
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/create
+---
+<p>{{JSRef}}</p>
+
+<p><code><strong>Object.create()</strong></code> メソッドは、既存のオブジェクトを新しく生成されるオブジェクトのプロトタイプとして使用して、新しいオブジェクトを生成します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-create.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.create(<var>proto</var>, [<var>propertiesObject</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>proto</var></code></dt>
+ <dd>新たに生成されるオブジェクトのプロトタイプになるべきオブジェクトです。</dd>
+ <dt><code><var>propertiesObject</var></code> {{Optional_inline}}</dt>
+ <dd>指定されていて、 {{jsxref("undefined")}} でない場合、それ自身が所有する一連の列挙可能なプロパティ (つまり、それ自身に定義されていて、プロトタイプチェインの中では<em>列挙可能でない</em>プロパティ) が、それらのプロパティ名を伴う一連のプロパティ記述子を指定し、新たに生成されるオブジェクトに追加されることになります。これらのプロパティは、 {{jsxref("Object.defineProperties()")}} の2番目の引数に対応するものです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定したプロトタイプオブジェクトとプロパティを持つ新しいオブジェクトです。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p><code><var>proto</var></code> 引数は次のいずれかになります。</p>
+
+<ul>
+ <li>{{jsxref("null")}} または</li>
+ <li>{{jsxref("Object")}} ただし<a href="/ja/docs/Glossary/Primitive#Primitive_wrapper_objects_in_JavaScript">プリミティブラッパーオブジェクト</a>を除く</li>
+</ul>
+
+<p><code>proto</code> がどちらでもない場合、 {{jsxref("TypeError")}} がスローされます。</p>
+
+<h2 id="Custom_and_Null_objects" name="Custom_and_Null_objects">カスタムオブジェクトと Null オブジェクト</h2>
+
+<p>完全にカスタムされたオブジェクトから作成された新しいオブジェクト (特に <code>null</code> オブジェクトから作成されたもの、基本的にはメンバーを持たないカスタムオブジェクト) は、予想外の振る舞いをすることがあります。これは特にデバッグ時に当てはまります。一般的なオブジェクト-プロパティ変換/検出ユーティリティ関数はエラーを生成したり、単に情報を失ったりする可能性があるからです (特にエラーを無視するサイレントエラートラップを使用している場合)。例えば、ここに二つのオブジェクトがあります。</p>
+
+<pre class="brush: js notranslate">oco = Object.create( {} ); // create a normal object
+ocn = Object.create( null ); // create a "null" object
+
+&gt; console.log(oco) // {} -- Seems normal
+&gt; console.log(ocn) // {} -- Seems normal here too, so far
+
+oco.p = 1; // create a simple property on normal obj
+ocn.p = 0; // create a simple property on "null" obj
+
+&gt; console.log(oco) // {p: 1} -- Still seems normal
+&gt; console.log(ocn) // {p: 0} -- Still seems normal here too. BUT WAIT...
+</pre>
+
+<p>上記のように、今のところすべてが正常なように見えます。しかし、実際に使ってみると、その違いはすぐに明らかになります。</p>
+
+<pre class="brush: js notranslate">&gt; "oco is: " + oco // shows "oco is: [object Object]"
+
+&gt; "ocn is: " + ocn // throws error: Cannot convert object to primitive value
+</pre>
+
+<p>多くの最も基本的な組み込み機能のほんの一部をテストするだけで、問題の大きさがより明確にわかります。</p>
+
+<pre class="brush: js notranslate">&gt; alert(oco) // shows [object Object]
+&gt; alert(ocn) // throws error: Cannot convert object to primitive value
+
+&gt; oco.toString() // shows [object Object]
+&gt; ocn.toString() // throws error: ocn.toString is not a function
+
+&gt; oco.valueOf() // shows {}
+&gt; ocn.valueOf() // throws error: ocn.valueOf is not a function
+
+&gt; oco.hasOwnProperty("p") // shows "true"
+&gt; ocn.hasOwnProperty("p") // throws error: ocn.hasOwnProperty is not a function
+
+&gt; oco.constructor // shows "Object() { [native code] }"
+&gt; ocn.constructor // shows "undefined"
+</pre>
+
+<p>このように、これらの違いにより、一見単純そうに見える問題であっても、デバッグがすぐに迷走してしまうことがあります。例えば、以下のようなものです。</p>
+
+<p><em>シンプルな共通デバッグ関数です。</em></p>
+
+<pre class="brush: js notranslate">// display top-level property name:value pairs of given object
+function ShowProperties(obj){
+ for(var prop in obj){
+ console.log(prop + ": " + obj[prop] + "\n" );
+ }
+}</pre>
+
+<p><em>このような単純な結果ではありません。 (特にサイレントエラートラップがエラーメッセージを隠していた場合)</em></p>
+
+<pre class="brush: js notranslate">ob={}; ob.po=oco; ob.pn=ocn; // create a compound object using the test objects from above as property values
+
+&gt; ShowProperties( ob ) // display top-level properties
+- po: [object Object]
+- Error: Cannot convert object to primitive value
+
+Note that only first property gets shown.
+</pre>
+
+<p><em>(しかし、同じオブジェクトが単に順番が違うだけで作成されている場合 -- 少なくともいくつかの実装では...)</em></p>
+
+<pre class="brush: js notranslate">ob={}; ob.pn=ocn; ob.po=oco; // create same compound object again, but create same properties in different order
+
+&gt; ShowProperties( ob ) // display top-level properties
+- Error: Cannot convert object to primitive value
+
+Note that neither property gets shown.</pre>
+
+<p>Note that such a different order may arise statically via disparate fixed codings such as here, but also dynamically via whatever the order any such property-adding code-branches actually get executed at runtime as depends on inputs and/or random-variables. Then again, the actual iteration order is not guaranteed no matter what the order members are added.</p>
+
+<p>Be aware of, also, that using Object.entries() on an object created via Object.create() will result in an empty array being returned.</p>
+
+<pre class="brush: js notranslate">var obj = Object.create({ a: 1, b: 2 });
+
+&gt; console.log(Object.entries(obj)); // shows "[]"
+</pre>
+
+<h4 id="Some_NON-solutions">Some NON-solutions</h4>
+
+<p>A good solution for the missing object-methods is not immediately apparent.</p>
+
+<p>Adding the missing object-method directly from the standard-object does NOT work:</p>
+
+<pre class="brush: js notranslate">ocn = Object.create( null ); // create "null" object (same as before)
+
+ocn.toString = Object.toString; // since new object lacks method then try assigning it directly from standard-object
+
+<span>&gt; ocn.toString // shows "toString() { [native code] }" -- missing method seems to be there now</span>
+&gt; ocn.toString == Object.toString // shows "true" -- method seems to be same as the standard object-method
+
+&gt; ocn.toString() // error: Function.prototype.toString requires that 'this' be a Function
+</pre>
+
+<p><br>
+ Adding the missing object-method directly to new object's "prototype" does not work either, since the new object does not have a real prototype (which is really the cause of ALL these problems) and one cannot be <strong>directly</strong> added:</p>
+
+<pre class="brush: js notranslate">ocn = Object.create( null ); // create "null" object (same as before)
+
+ocn.prototype.toString = Object.toString; // Error: Cannot set property 'toString' of undefined
+
+ocn.prototype = {}; // try to create a prototype
+ocn.prototype.toString = Object.toString; // since new object lacks method then try assigning it from standard-object <span>
+
+&gt; ocn.toString() // error: ocn.toString is not a function</span>
+</pre>
+
+<p><br>
+ Adding the missing object-method by using the standard-object<strong> </strong>as new object's prototype does not work either:</p>
+
+<pre class="brush: js notranslate">ocn = Object.create( null ); // create "null" object (same as before)
+Object.setPrototypeOf(ocn, Object); // set new object's prototype to the standard-object
+
+&gt; ocn.toString() // error: Function.prototype.toString requires that 'this' be a Function
+</pre>
+
+<h4 id="Some_OK_solutions">Some OK solutions</h4>
+
+<p>Again, adding the missing object-method directly from the <strong>standard-object </strong>does NOT work. However, adding the <strong>generic</strong> method directly, DOES:</p>
+
+<pre class="brush: js notranslate">ocn = Object.create( null ); // create "null" object (same as before)
+
+ocn.toString = toString; // since new object lacks method then assign it directly from generic version
+
+&gt; ocn.toString() // shows "[object Object]"
+&gt; "ocn is: " + ocn // shows "ocn is: [object Object]"
+
+
+ob={}; ob.pn=ocn; ob.po=oco; // create a compound object (same as before)
+
+&gt; ShowProperties(ob) // display top-level properties
+- po: [object Object]
+- pn: [object Object]
+</pre>
+
+<p>However, setting the generic <strong>prototype</strong> as the new object's prototype works even better:</p>
+
+<pre class="brush: js notranslate">ocn = Object.create( null ); // create "null" object (same as before)
+Object.setPrototypeOf(ocn, Object.prototype); // set new object's prototype to the "generic" object (NOT standard-object)
+</pre>
+
+<p><em>(In addition to all the string-related functions shown above, this also adds:)</em></p>
+
+<pre class="brush: js notranslate">&gt; ocn.valueOf() // shows {}
+&gt; ocn.hasOwnProperty("x") // shows "false"
+&gt; ocn.constructor // shows "Object() { [native code] }"
+
+// ...and all the rest of the properties and methods of Object.prototype.
+</pre>
+
+<p>As shown, objects modified this way now look very much like ordinary objects.</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>このポリフィルは、プロトタイプは選択されたが第二引数を考慮しない状況向けに、新規オブジェクトを生成する主要な利用法に対応します。</p>
+
+<p>実際の ES5 の <code>Object.create</code> では、<code>[[Prototype]]</code> として <code>null</code> を設定することがサポートされていますが、このポリフィルは ECMAScript5 以前のサポートをする制約上、null を使用できないことに注意してください。</p>
+
+<pre class="brush: js notranslate"> if (typeof Object.create !== "function") {
+ Object.create = function (proto, propertiesObject) {
+ if (typeof proto !== 'object' &amp;&amp; typeof proto !== 'function') {
+ throw new TypeError('Object prototype may only be an Object: ' + proto);
+ } else if (proto === null) {
+ throw new Error("This browser's implementation of Object.create is a shim and doesn't support 'null' as the first argument.");
+ }
+
+ if (typeof propertiesObject != 'undefined') {
+ throw new Error("This browser's implementation of Object.create is a shim and doesn't support a second argument.");
+ }
+
+ function F() {}
+ F.prototype = proto;
+
+ return new F();
+ };
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Classical_inheritance_with_Object.create" name="Classical_inheritance_with_Object.create"><code>Object.create()</code> を用いた古典的な継承</h3>
+
+<p>以下の例は、古典的な継承をするための <code>Object.create()</code> の使用方法です。これは、すべての JavaScript が対応している単一継承です。</p>
+
+<pre class="brush: js notranslate">// Shape - superclass
+function Shape() {
+ this.x = 0;
+ this.y = 0;
+}
+
+// superclass method
+Shape.prototype.move = function(x, y) {
+ this.x += x;
+ this.y += y;
+ console.info('Shape moved.');
+};
+
+// Rectangle - subclass
+function Rectangle() {
+ Shape.call(this); // call super constructor.
+}
+
+// subclass extends superclass
+Rectangle.prototype = Object.create(Shape.prototype);
+
+//If you don't set Rectangle.prototype.constructor to Rectangle,
+//it will take the prototype.constructor of Shape (parent).
+//To avoid that, we set the prototype.constructor to Rectangle (child).
+Rectangle.prototype.constructor = Rectangle;
+
+var rect = new Rectangle();
+
+console.log('Is rect an instance of Rectangle?', rect instanceof Rectangle); // true
+console.log('Is rect an instance of Shape?', rect instanceof Shape); // true
+rect.move(1, 1); // Outputs, 'Shape moved.'
+</pre>
+
+<p>複数のオブジェクトから継承したい場合は、ミックスインが可能です。</p>
+
+<pre class="brush: js notranslate">function MyClass() {
+ SuperClass.call(this);
+ OtherSuperClass.call(this);
+}
+
+// inherit one class
+MyClass.prototype = Object.create(SuperClass.prototype);
+// mixin another
+Object.assign(MyClass.prototype, OtherSuperClass.prototype);
+// re-assign constructor
+MyClass.prototype.constructor = MyClass;
+
+MyClass.prototype.myMethod = function() {
+ // do something
+};
+</pre>
+
+<p>{{jsxref("Object.assign()")}} は OtherSuperClass プロトタイプから MyClass プロトタイプへプロパティをコピーし、 MyClass のすべてのインスタンスで利用できるようにします。 <code>Object.assign()</code> は ES2015 で導入され、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill">ポリフィルを利用することができます</a>。古いブラウザーへの対応が必要な場合は、 <code><a href="https://api.jquery.com/jQuery.extend/">jQuery.extend()</a></code> または <code><a href="https://lodash.com/docs/#assign">_.assign()</a></code> を利用することができます。</p>
+
+<h3 id="Using_propertiesObject_argument_with_Object.create" name="Using_propertiesObject_argument_with_Object.create">Object.create() と propertiesObject 引数の併用</h3>
+
+<pre class="brush: js notranslate">var o;
+
+// プロトタイプを null にしてオブジェクトを生成
+o = Object.create(null);
+
+
+o = {};
+// is equivalent to:
+o = Object.create(Object.prototype);
+
+
+// Example where we create an object with a couple of
+// sample properties. (Note that the second parameter
+// maps keys to *property descriptors*.)
+o = Object.create(Object.prototype, {
+ // foo is a regular 'value property'
+ foo: {
+ writable: true,
+ configurable: true,
+ value: 'hello'
+ },
+ // bar is a getter-and-setter (accessor) property
+ bar: {
+ configurable: false,
+ get: function() { return 10; },
+ set: function(value) {
+ console.log('Setting `o.bar` to', value);
+ }
+/* with ES2015 Accessors our code can look like this
+ get() { return 10; },
+ set(value) {
+ console.log('Setting `o.bar` to', value);
+ } */
+ }
+});
+
+
+function Constructor() {}
+o = new Constructor();
+// is equivalent to:
+o = Object.create(Constructor.prototype);
+// Of course, if there is actual initialization code
+// in the Constructor function,
+// the Object.create() cannot reflect it
+
+
+// Create a new object whose prototype is a new, empty
+// object and add a single property 'p', with value 42.
+o = Object.create({}, { p: { value: 42 } });
+
+// by default properties ARE NOT writable,
+// enumerable or configurable:
+o.p = 24;
+o.p;
+// 42
+
+o.q = 12;
+for (var prop in o) {
+ console.log(prop);
+}
+// 'q'
+
+delete o.p;
+// false
+
+// to specify an ES3 property
+o2 = Object.create({}, {
+ p: {
+ value: 42,
+ writable: true,
+ enumerable: true,
+ configurable: true
+ }
+});
+/* is not equivalent to:
+This will create an object with prototype : {p: 42 }
+o2 = Object.create({p: 42}) */
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.create', 'Object.create')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.create")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Object.defineProperties()")}}</li>
+ <li>{{jsxref("Object.prototype.isPrototypeOf()")}}</li>
+ <li>{{jsxref("Reflect.construct()")}}</li>
+ <li><a href="http://ejohn.org/blog/objectgetprototypeof/">getPrototypeOf()</a> に関する John Resig 氏の投稿</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/defineproperties/index.html b/files/ja/web/javascript/reference/global_objects/object/defineproperties/index.html
new file mode 100644
index 0000000000..29e646d673
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/defineproperties/index.html
@@ -0,0 +1,182 @@
+---
+title: Object.defineProperties()
+slug: Web/JavaScript/Reference/Global_Objects/Object/defineProperties
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperties
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Object.defineProperties()</code></strong> メソッドは、オブジェクトに直接新しいプロパティを定義し、あるいは既存のプロパティを変更して、そのオブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-defineproperties.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.defineProperties(<var>obj</var>, <var>props</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>プロパティを定義または変更するオブジェクト。</dd>
+ <dt><code><var>props</var></code></dt>
+ <dd>キーが定義または変更されるプロパティの名前を表し、値がそれらのプロパティを記述するオブジェクトであるオブジェクトです。 <code>props</code> の各値は、データ記述子かアクセサー記述子のいずれかでなければなりませんが、両方を指定することはできません (詳細は {{jsxref("Object.defineProperty()")}} を参照してください)。</dd>
+ <dd>データ記述子およびアクセサー記述子は、オプションで以下のキーを含むことができます。</dd>
+ <dd>
+ <dl>
+ <dt><code>configurable</code></dt>
+ <dd>プロパティの記述子が変更でき、プロパティが対応するオブジェクトから削除できるときのみ <code>true</code>。<br>
+ <strong>既定値は <code>false</code>。</strong></dd>
+ <dt><code>enumerable</code></dt>
+ <dd>対応するオブジェクトのプロパティを列挙したとき表示される場合のみ <code>true</code>。<br>
+ <strong>既定値は <code>false</code>。</strong></dd>
+ </dl>
+
+ <p>データ記述子には以下のオプションのキーもあります。</p>
+
+ <dl>
+ <dt><code>value</code></dt>
+ <dd>プロパティに関連づける値。 JavaScript で有効な任意の値です (数値、オブジェクト、関数など)。<br>
+ <strong>既定値は {{jsxref("undefined")}}。</strong></dd>
+ <dt><code>writable</code></dt>
+ <dd>プロパティに関連づけられた値が{{jsxref("Operators/Assignment_Operators", "代入演算子", "", 1)}}で変更できる場合のみ <code>true</code>。<br>
+ <strong>既定値は <code>false</code>。</strong></dd>
+ </dl>
+
+ <p>アクセサー記述子には、以下のオプションのキーもあります。</p>
+
+ <dl>
+ <dt><code>get</code></dt>
+ <dd>プロパティのゲッターとして用いられる関数。ゲッターがなければ {{jsxref("undefined")}} になります。関数の返値がプロパティの値として使用されます。<br>
+ <strong>既定値は {{jsxref("undefined")}}。</strong></dd>
+ <dt><code>set</code></dt>
+ <dd>プロパティのセッターとして用いられる関数。セッターがなければ {{jsxref("undefined")}} になります。関数はただひとつの引数として、プロパティに代入された新たな値を受取ります。<br>
+ <strong>既定値は {{jsxref("undefined")}}。</strong></dd>
+ </dl>
+
+ <p>記述子が <code>value</code>, <code>writable</code>, <code>get</code> <code>set</code> キーのいずれでもない場合は、データ記述子として扱われます。記述子に <code>value</code> または <code>writable</code> と <code>get</code> または <code>set</code> キーの両方があった場合は、例外が発生します。</p>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>関数に渡されたオブジェクト。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Object.defineProperties" name="Using_Object.defineProperties">Object.defineProperties の使用</h3>
+
+<pre class="brush: js notranslate">var obj = {};
+Object.defineProperties(obj, {
+ 'property1': {
+ value: true,
+ writable: true
+ },
+ 'property2': {
+ value: 'Hello',
+ writable: false
+ }
+ // etc. etc.
+});
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>すべての名前とプロパティが自身の初期値を参照する基本的な実行環境において、 <code>Object.defineProperties</code> は以下の JavaScript による再実装とほぼ同等です(<code>isCallable</code> のコメントに注意)。</p>
+
+<pre class="brush: js;highlight:[8] notranslate">function defineProperties(obj, properties) {
+ function convertToDescriptor(desc) {
+ function hasProperty(obj, prop) {
+ return Object.prototype.hasOwnProperty.call(obj, prop);
+ }
+
+ function isCallable(v) {
+ // 注意: 関数以外の値が呼び出し可能である場合、必要に応じて変更。
+ return typeof v === 'function';
+ }
+
+ if (typeof desc !== 'object' || desc === null)
+ throw new TypeError('bad desc');
+
+ var d = {};
+
+ if (hasProperty(desc, 'enumerable'))
+ d.enumerable = !!desc.enumerable;
+ if (hasProperty(desc, 'configurable'))
+ d.configurable = !!desc.configurable;
+ if (hasProperty(desc, 'value'))
+ d.value = desc.value;
+ if (hasProperty(desc, 'writable'))
+ d.writable = !!desc.writable;
+ if (hasProperty(desc, 'get')) {
+ var g = desc.get;
+
+ if (!isCallable(g) &amp;&amp; typeof g !== 'undefined')
+ throw new TypeError('bad get');
+ d.get = g;
+ }
+ if (hasProperty(desc, 'set')) {
+ var s = desc.set;
+ if (!isCallable(s) &amp;&amp; typeof s !== 'undefined')
+ throw new TypeError('bad set');
+ d.set = s;
+ }
+
+ if (('get' in d || 'set' in d) &amp;&amp; ('value' in d || 'writable' in d))
+ throw new TypeError('identity-confused descriptor');
+
+ return d;
+ }
+
+ if (typeof obj !== 'object' || obj === null)
+ throw new TypeError('bad obj');
+
+ properties = Object(properties);
+
+ var keys = Object.keys(properties);
+ var descs = [];
+
+ for (var i = 0; i &lt; keys.length; i++)
+ descs.push([keys[i], convertToDescriptor(properties[keys[i]])]);
+
+ for (var i = 0; i &lt; descs.length; i++)
+ Object.defineProperty(obj, descs[i][0], descs[i][1]);
+
+ return obj;
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.defineproperties', 'Object.defineProperties')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.defineProperties")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Object.keys()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">プロパティの列挙可能性と所有権</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/defineproperty/index.html b/files/ja/web/javascript/reference/global_objects/object/defineproperty/index.html
new file mode 100644
index 0000000000..b4b7fa05ca
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/defineproperty/index.html
@@ -0,0 +1,499 @@
+---
+title: Object.defineProperty()
+slug: Web/JavaScript/Reference/Global_Objects/Object/defineProperty
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - JavaScript 1.8.5
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperty
+---
+<div>{{JSRef}}</div>
+
+<p>静的メソッドの <code><strong>Object.defineProperty()</strong></code> は、あるオブジェクトに新しいプロパティを直接定義したり、オブジェクトの既存のプロパティを変更したりして、そのオブジェクトを返します。</p>
+
+<div class="note">
+<p><strong>メモ:</strong> このメソッドは {{jsxref("Object")}} コンストラクターで直接呼び出すものであって、<code>Object</code> 型のインスタンスで呼ぶものではありません。</p>
+</div>
+
+<div>{{EmbedInteractiveExample("pages/js/object-defineproperty.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Object.defineProperty(<var>obj</var>, <var>prop</var>, <var>descriptor</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>プロパティを定義したいオブジェクト。</dd>
+ <dt><code><var>prop</var></code></dt>
+ <dd>定義または変更するプロパティの名前または {{jsxref("Symbol")}}。</dd>
+ <dt><code><var>descriptor</var></code></dt>
+ <dd>定義または変更されるプロパティの記述子。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>渡されたオブジェクトをそのまま返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドで、あるオブジェクトのプロパティを明示的に追加または変更することができます。代入による通常のプロパティ追加では、プロパティ列挙 ({{jsxref("Statements/for...in", "for...in")}} ループや {{jsxref("Object.keys")}} メソッド) に現れ、値は変更可能で、また{{jsxref("Operators/delete", "削除", "", 1)}}も可能なプロパティが生成されます。このメソッドでは、これらの詳細事項を既定値から変えることが可能です。既定では、<code>Object.defineProperty()</code> を使って追加された値は不変になります。</p>
+
+<p>プロパティの記述子は、データ記述子とアクセサー記述子の二つに分かれます。<em><dfn>データ記述子</dfn></em>は値を持つプロパティで、その値は書き換え可能にも不可能にもできます。<em><dfn>アクセサー記述子</dfn></em>は、関数のゲッターとセッターの組で表されるプロパティです。記述子はこれら二種類のどちらかでなければならず、両方になることはできません。</p>
+
+<p>どちらの形でも記述子はオブジェクトで表現します。共通して以下のキーを持つことができます (既定値は Object.defineProperty() を使ってプロパティを定義する場合)。</p>
+
+<dl>
+ <dt><code>configurable</code></dt>
+ <dd><code>true</code> である場合のみ、この種の記述子を変更することや、対応するオブジェクトからプロパティを削除することができます。<br>
+ <strong>既定値は <code>false</code> です。</strong></dd>
+ <dt><code>enumerable</code></dt>
+ <dd><code>true</code> である場合のみ、このプロパティは対応するオブジェクトでのプロパティ列挙に現れます。<br>
+ <strong>既定値は <code>false</code> です。</strong></dd>
+</dl>
+
+<p>データ記述子の場合はオプションとして次のキーを持つことができます:</p>
+
+<dl>
+ <dt><code>value</code></dt>
+ <dd>プロパティに関連づけられた値です。有効な JavaScript の値 (number, object, function など) である必要があります。<br>
+ <strong>既定値は {{jsxref("undefined")}} です。</strong></dd>
+ <dt><code>writable</code></dt>
+ <dd><code>true</code> である場合のみ、プロパティに関連づけられた値は{{jsxref("Operators/Assignment_Operators", "代入演算子", "", 1)}}で変更することができます。<br>
+ <strong>既定値は <code>false</code> です。</strong></dd>
+</dl>
+
+<p>アクセサー記述子の場合はオプションとして次のキーを持つことができます。</p>
+
+<dl>
+ <dt><code>get</code></dt>
+ <dd>プロパティのゲッターとなる関数で、ゲッターを設けない場合は {{jsxref("undefined")}} です。プロパティにアクセスするとこの関数が引数なしでコールされます。この関数内で <code>this</code> はアクセスしようとしたプロパティを持つオブジェクトになります(プロパティを定義するために作成した記述子オブジェクトではありません)。戻り値はこのプロパティの値として使われます。<br>
+ <strong>既定値は {{jsxref("undefined")}} です。</strong></dd>
+ <dt><code>set</code></dt>
+ <dd>プロパティのセッターとなる関数で、セッターがない場合は {{jsxref("undefined")}} です。プロパティに値が割り当てられたとき、その値を引数としてこの関数がコールされます。この関数内で <code>this</code> は割り当てようとしたプロパティを持つオブジェクトになります。<br>
+ <strong>既定値は {{jsxref("undefined")}} です。</strong></dd>
+</dl>
+
+<p>記述子に <code>value</code>, <code>writable</code>, <code>get</code>, <code>set</code> のいずれのキーもない場合、データ記述子として扱われます。記述子に <code>value</code> または <code>writable</code> と、<code>get</code> または <code>set</code> のキーの両方がある場合は、例外が投げられます。</p>
+
+<p>これらのキーは必ずしも記述子が直接所有しているとは限らないことに留意してください。継承されたプロパティも同様です。これらの既定値が存在することを保証するには、先行して {{jsxref("Object.prototype")}} を freeze しておくか、すべてのオプションを明示的に指定するか、{{jsxref("Object.create", "Object.create(null)")}} で {{jsxref("null")}} に設定するかします。</p>
+
+<pre class="brush: js">// __proto__ を使うやり方
+var obj = {};
+var descriptor = Object.create(null); // 意図しないキーの継承を防止します。
+descriptor.value = 'static';
+
+// 既定で継承不可、変更不可、書換不可のプロパティとなります。
+Object.defineProperty(obj, 'key', descriptor);
+
+// 明示的な指定
+Object.defineProperty(obj, 'key', {
+ enumerable: false,
+ configurable: false,
+ writable: false,
+ value: 'static'
+});
+
+// 同じオブジェクトを再利用
+function withValue(value) {
+ var d = withValue.d || (
+ withValue.d = {
+ enumerable: false,
+ writable: false,
+ configurable: false,
+ value: value
+ }
+ );
+
+ // 値の代入で重複操作を防ぐ
+ if (d.value !== value) d.value = value;
+
+ return d;
+}
+// このように使います。
+Object.defineProperty(obj, 'key', withValue('static'));
+
+// freeze が利用できるなら、オブジェクトのプロトタイプのプロパティ
+// (value, get, set, enumerable, writable, configurable) を
+// 追加・削除することを防ぐことができます。
+(Object.freeze || Object)(Object.prototype);
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p><em>バイナリーフラグ</em>を使って <code>Object.defineProperty</code> を利用したい場合は <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty/Additional_examples">追加の例</a> を見てください。</p>
+
+<h3 id="Creating_a_property" name="Creating_a_property">プロパティの生成</h3>
+
+<p>オブジェクトに指定されたプロパティが存在しないとき、<code>Object.defineProperty()</code> は指定された形で新たなプロパティを生成します。記述子のキーは省略することができ、そのようなキーには既定値が適用されます。</p>
+
+<pre class="brush: js">var o = {}; // 新しいオブジェクトの生成
+
+// データ記述子により、defineProperty を用いて
+// オブジェクトプロパティを追加する例
+Object.defineProperty(o, 'a', {
+ value: 37,
+ writable: true,
+ enumerable: true,
+ configurable: true
+});
+// o オブジェクトに 'a' プロパティが存在するようになり、その値は 37 となります
+
+// アクセサー記述子により、defineProperty を用いて
+// オブジェクトプロパティを追加する例
+var bValue = 38;
+Object.defineProperty(o, 'b', {
+ // メソッド名ショートハンドを利用しています(ES2015 の機能)。
+ // 次のように書いているのと同じことです:
+ // get: function() { return bValue; },
+ // set: function(newValue) { bValue = newValue; },
+ get() { return bValue; },
+ set(newValue) { bValue = newValue; },
+ enumerable: true,
+ configurable: true
+});
+o.b; // 38
+// o オブジェクトに 'b' プロパティが存在するようになり、
+// その値は 38 となります
+// o.b は再定義されない限り、その値は常に bValue と同じです。
+
+// (訳注:データとアクセサーを)両方を混在させることはできません:
+Object.defineProperty(o, 'conflict', {
+ value: 0x9f91102,
+ get() { return 0xdeadbeef; }
+});
+// TypeError が発生します。value はデータ記述子にのみ、
+// get はアクセサー記述子にのみ存在していなければなりません。
+</pre>
+
+<h3 id="Modifying_a_property" name="Modifying_a_property">プロパティの変更</h3>
+
+<p>プロパティが既に存在している場合、<code>Object.defineProperty()</code> は記述子の値および現在のオブジェクトの設定に基づいて、プロパティの変更を試みます。元の記述子で <code>configurable</code> 属性が <code>false</code> なら、そのプロパティは「変更不可」です。変更不可のプロパティは記述子の属性を変更することができません。データプロパティで <code>writable</code> なら、値を変更することができますし、<code>writable</code> 属性を <code>true</code> から <code>false</code> に変更することが出来ます。変更不可のプロパティはデータとアクセサーの種別を切り替えることはできません。</p>
+
+<p>変更不可なプロパティに変更を加えようとすると、新旧の値が同じでない限り {{jsxref("TypeError")}} が投げられます(可能な場合の <code>value</code> と <code>writable</code> の変更は除きます)。</p>
+
+<h4 id="Writable_attribute" name="Writable_attribute">Writable 属性</h4>
+
+<p><code>writable</code> プロパティ属性が <code>false</code> に設定されているとき、そのプロパティは書換不可になります。代入が出来なくなります。</p>
+
+<pre class="brush: js">var o = {}; // 新しいオブジェクトの生成
+
+Object.defineProperty(o, 'a', {
+ value: 37,
+ writable: false
+});
+
+console.log(o.a); // 37 がログ出力されます
+o.a = 25; // エラーは発生しません
+// (strict モードでは発生します。同じ値を代入したとしても。)
+console.log(o.a); // 37 がログ出力されます。代入文は動作しません。
+
+// strict mode
+(function() {
+ 'use strict';
+ var o = {};
+ Object.defineProperty(o, 'b', {
+ value: 2,
+ writable: false
+ });
+ o.b = 3; // TypeError がスローされます: "b" is read-only
+ return o.b; // 上の行は動作せず 2 が返ります(訳注:正しくは「ここに制御は来ません」)
+}());
+</pre>
+
+<p>例で見たように、書き込み不可のプロパティに書き込もうとしても変更されず、またエラーは発生しません。</p>
+
+<h4 id="Enumerable_attribute" name="Enumerable_attribute">Enumerable 属性</h4>
+
+<p><code>enumerable</code> プロパティ属性は、プロパティが {{jsxref("Statements/for...in", "for...in")}} ループや {{jsxref("Object.keys()")}} に現れるか否かを定義します。</p>
+
+<pre class="brush: js">var o = {};
+Object.defineProperty(o, 'a', {
+ value: 1,
+ enumerable: true
+});
+Object.defineProperty(o, 'b', {
+ value: 2,
+ enumerable: false
+});
+Object.defineProperty(o, 'c', {
+ value: 3
+}); // enumerable の既定値は false
+o.d = 4; // このようにプロパティを生成するとき、
+ // enumerable の既定値は true
+Object.defineProperty(o, Symbol.for('e'), {
+ value: 5,
+ enumerable: true
+});
+Object.defineProperty(o, Symbol.for('f'), {
+ value: 6,
+ enumerable: false
+});
+
+for (var i in o) {
+ console.log(i);
+}
+// 'a' と 'd' がログされます(順不同)
+
+Object.keys(o); // ['a', 'd']
+
+o.propertyIsEnumerable('a'); // true
+o.propertyIsEnumerable('b'); // false
+o.propertyIsEnumerable('c'); // false
+o.propertyIsEnumerable('d'); // true
+o.propertyIsEnumerable(Symbol.for('e')); // true
+o.propertyIsEnumerable(Symbol.for('f')); // false
+
+var p = { ...o }
+p.a // 1
+p.b // undefined
+p.c // undefined
+p.d // 4
+p[Symbol.for('e')] // 5
+p[Symbol.for('f')] // undefined
+</pre>
+
+<h4 id="Configurable_attribute" name="Configurable_attribute">Configurable 属性</h4>
+
+<p><code>configurable</code> 属性は、プロパティをオブジェクトから削除できるかとプロパティの属性 (<code>value</code> と <code>writable</code> 以外) を変更できるかを同時に制御します。</p>
+
+<pre class="brush: js">var o = {};
+Object.defineProperty(o, 'a', {
+ get() { return 1; },
+ configurable: false
+});
+
+Object.defineProperty(o, 'a', {
+ configurable: true
+}); // TypeError が発生
+Object.defineProperty(o, 'a', {
+ enumerable: true
+}); // TypeError が発生
+Object.defineProperty(o, 'a', {
+ set() {}
+}); // TypeError が発生 (set は未定義であった)
+Object.defineProperty(o, 'a', {
+ get() { return 1; }
+}); // TypeError が発生 (新たな get は全く同じであるにもかかわらず)
+Object.defineProperty(o, 'a', {
+ value: 12
+}); // TypeError が発生 ('configurable' が false でも 'value' は変更できますが、ここでは 'get' アクセサーがあるため変更できません)
+
+console.log(o.a); // logs 1
+delete o.a; // 何も起きません
+console.log(o.a); // logs 1
+</pre>
+
+<p><code>o.a</code> の <code>configurable</code> 属性が <code>true</code> である場合、エラーが発生することなく最終的にプロパティが削除されます。</p>
+
+<h3 id="Adding_properties_and_default_values" name="Adding_properties_and_default_values">プロパティおよび既定値の追加</h3>
+
+<p>属性の既定値がどう適用されるかを考えることは重要です。値の割り当てにドット表記を用いた場合と <code>Object.defineProperty()</code> を用いた場合とでは、以下の例で示したとおりに違いがあります。</p>
+
+<pre class="brush: js">var o = {};
+
+o.a = 1;
+// これは以下と同じです:
+Object.defineProperty(o, 'a', {
+ value: 1,
+ writable: true,
+ configurable: true,
+ enumerable: true
+});
+
+// その一方で、
+Object.defineProperty(o, 'a', { value: 1 });
+// これは以下と同じです:
+Object.defineProperty(o, 'a', {
+ value: 1,
+ writable: false,
+ configurable: false,
+ enumerable: false
+});
+</pre>
+
+<h3 id="Custom_Setters_and_Getters" name="Custom_Setters_and_Getters">独自のゲッターおよびセッター</h3>
+
+<p>例として自律的に記録を行うオブジェクトを作成してみます。<code>temperature</code> プロパティに値が代入されると、配列 <code>archive</code> に要素が一つ追加されます。</p>
+
+<pre class="brush: js">function Archiver() {
+ var temperature = null;
+ var archive = [];
+
+ Object.defineProperty(this, 'temperature', {
+ get() {
+ console.log('get!');
+ return temperature;
+ },
+ set(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 }]
+</pre>
+
+<p>次の例では、ゲッターが常に同じ値を返すようにしています。</p>
+
+<pre class="brush: js">var pattern = {
+ get() {
+ return 'I always return this string, ' +
+ 'whatever you have assigned';
+ },
+ set() {
+ this.myname = 'this is my name string';
+ }
+};
+
+function TestDefineSetAndGet() {
+ Object.defineProperty(this, 'myproperty', pattern);
+}
+
+var instance = new TestDefineSetAndGet();
+instance.myproperty = 'test';
+console.log(instance.myproperty);
+// I always return this string, whatever you have assigned
+
+console.log(instance.myname); // this is my name string
+</pre>
+
+<h3 id="Inheritance_of_properties" name="Inheritance_of_properties">プロパティの継承</h3>
+
+<p>アクセサープロパティを継承されると、その派生クラスでもプロパティがアクセスされたり書き換えられるときに <code>get</code> と <code>set</code> が呼ばれます。これらのメソッドが値を保持するために変数を使っていると、すべてのオブジェクトがその値を共有することになります。</p>
+
+<pre class="brush: js">function myclass() {
+}
+
+var value;
+Object.defineProperty(myclass.prototype, "x", {
+ get() {
+ return value;
+ },
+ set(x) {
+ value = x;
+ }
+});
+
+var a = new myclass();
+var b = new myclass();
+a.x = 1;
+console.log(b.x); // 1
+</pre>
+
+<p>この問題を回避する方法は値を別のプロパティで保持することです。<code>get</code> と <code>set</code> メソッド内で <code>this</code> はアクセス/書き換えされようとしているプロパティを納めるオブジェクトを指しています。</p>
+
+<pre class="brush: js">function myclass() {
+}
+
+Object.defineProperty(myclass.prototype, "x", {
+ get() {
+ return this.stored_x;
+ },
+ set(x) {
+ this.stored_x = x;
+ }
+});
+
+var a = new myclass();
+var b = new myclass();
+a.x = 1;
+console.log(b.x); // undefined
+</pre>
+
+<p>アクセサープロパティとは違い、データプロパティは常にオブジェクト自身に格納されるのであって、prototype に格納されるわけではありません。しかし、書き込み不可能なデータプロパティを継承している場合、継承先オブジェクトでも書き換えは阻止されます。</p>
+
+<pre class="brush: js">function myclass() {
+}
+
+myclass.prototype.x = 1;
+Object.defineProperty(myclass.prototype, "y", {
+ writable: false,
+ value: 1
+});
+
+var a = new myclass();
+a.x = 2;
+console.log(a.x); // 2
+console.log(myclass.prototype.x); // 1
+a.y = 2; // 無視されます。strict モードではエラースローされます。
+console.log(a.y); // 1
+console.log(myclass.prototype.y); // 1
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.defineproperty', 'Object.defineProperty')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.defineProperty")}}</p>
+
+<h2 id="Compatibility_notes" name="Compatibility_notes">互換性のメモ</h2>
+
+<h3 id="Redefining_the_length_property_of_an_Array_object" name="Redefining_the_length_property_of_an_Array_object"><code>Array</code> オブジェクトの <code>length</code> プロパティの再定義</h3>
+
+<p>配列の {{jsxref("Array.length", "length")}} プロパティを再定義することは、通常の再定義の制限に照らせば可能です。({{jsxref("Array.length", "length")}} プロパティは初期状態で構成不可、列挙不可、書き込み可能です。つまり、変更されていない配列では、{{jsxref("Array.length", "length")}} プロパティの値を変更したり書き込み不可にしたりすることが可能です。列挙可否や構成可否、また書き込み不可に変更した後は値や書き込み可否も、変更することはできません。) しかし、すべてのブラウザーがこの再定義を許可しているとは限りません。</p>
+
+<p>Firefox 4 から 22 までの間では、配列の {{jsxref("Array.length", "length")}} プロパティを再定義しようとすると、無条件に (許可の有無にかかわらず) {{jsxref("TypeError")}} が発生します。</p>
+
+<p><code>Object.defineProperty()</code> を実装している Chrome のバージョンでは、状況によっては配列の現在の {{jsxref("Array.length", "length")}} プロパティとは異なる length の値を無視することがあります。状況によっては書き込み可否が暗黙に動作しない (そして例外を発生させない) こともあります。また、関連して、{{jsxref("Array.prototype.push")}} のような配列を変更する一部のメソッドが、書き込み不可であることを尊重しないことがあります。</p>
+
+<p><code>Object.defineProperty()</code> を実装する Safari のバージョンでは配列の現在の {{jsxref("Array.length", "length")}} プロパティと異なる値の length を無視し、また書き込み許可を変更する試みはエラーなしに実行されますが、実際はプロパティの書き込み許可が変更されません。</p>
+
+<p>Internet Explorer 9 以降と Firefox 23 以降のみが、完全かつ正確に配列の {{jsxref("Array.length", "length")}} プロパティの再定義を実装しているようです。現時点では、配列の {{jsxref("Array.length", "length")}} プロパティの再定義はどのブラウザーでも動作する、あるいは特定のルールに則って動作するとは考えないようにしてください。そして、もしこれが実行<em>できた</em>としても、<a href="http://whereswalden.com/2013/08/05/new-in-firefox-23-the-length-property-of-an-array-can-be-made-non-writable-but-you-shouldnt-do-it/">これを行う本当に良い理由はありません</a>。</p>
+
+<h3 id="Internet_Explorer_8_specific_notes" name="Internet_Explorer_8_specific_notes">Internet Explorer 8 の特記事項</h3>
+
+<p>Internet Explorer 8 は <code>Object.defineProperty()</code> メソッドを <a class="external" href="https://msdn.microsoft.com/en-us/library/dd229916%28VS.85%29.aspx">DOM オブジェクトでのみ使用できる</a>ものとして実装しました。以下 2 点に注意が必要です:</p>
+
+<ul>
+ <li>ネイティブオブジェクトに対して <code>Object.defineProperty()</code> を用いようとするとエラーが発生します。</li>
+ <li>プロパティの属性には特定の値を設定しなければなりません。<code>configurable</code>, <code>enumerable</code>, <code>writable</code> の各属性に対して、データ記述子ではすべて <code>true</code> に、アクセサー記述子では <code>configurable</code> に <code>true</code>、<code>enumerable</code> に <code>false</code> にです。(?)ほかの値(?)を与えようとすると、エラーが発生します。</li>
+ <li>プロパティの再設定には、始めにプロパティの削除が必要です。プロパティが削除されていない場合、再設定を試みる前の状態のままになります。</li>
+</ul>
+
+<h3 id="Chrome_37_and_below_specific_notes" name="Chrome_37_and_below_specific_notes">Chrome 37 以下の特記事項</h3>
+
+<p>Chrome 37 以下には、<code>writable: false</code> 指定を行なった "prototype" プロパティを関数に定義する場合に、想定通りに動かない <a href="https://bugs.chromium.org/p/v8/issues/detail?id=3448">バグ</a> があります。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Enumerability_and_ownership_of_properties">列挙可能性とプロパティの所有権</a></li>
+ <li>{{jsxref("Object.defineProperties()")}}</li>
+ <li>{{jsxref("Object.propertyIsEnumerable()")}}</li>
+ <li>{{jsxref("Object.getOwnPropertyDescriptor()")}}</li>
+ <li>{{jsxref("Object.prototype.watch()")}}</li>
+ <li>{{jsxref("Object.prototype.unwatch()")}}</li>
+ <li>{{jsxref("Operators/get", "get")}}</li>
+ <li>{{jsxref("Operators/set", "set")}}</li>
+ <li>{{jsxref("Object.create()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty/Additional_examples">追加の <code>Object.defineProperty</code> の例</a></li>
+ <li>{{jsxref("Reflect.defineProperty()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/entries/index.html b/files/ja/web/javascript/reference/global_objects/object/entries/index.html
new file mode 100644
index 0000000000..9b1787ea03
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/entries/index.html
@@ -0,0 +1,155 @@
+---
+title: Object.entries()
+slug: Web/JavaScript/Reference/Global_Objects/Object/entries
+tags:
+ - JavaScript
+ - Method
+ - Object
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/entries
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Object.entries()</strong></code> メソッドは、引数に与えたオブジェクトが所有する、文字列をキーとした列挙可能なプロパティの組 <code>[<var>key</var>, <var>value</var>]</code> からなる配列を返します。配列要素の順序は {{jsxref("Statements/for...in", "for...in")}} ループによる順序と同じです (両者の主な違いは、<code>for...in</code> ループではプロトタイプチェーン内のプロパティも列挙されることです)。</p>
+
+<p><code><strong>Object.entries()</strong></code> で返される配列の順序は、オブジェクトがどのように定義されたかに依存しません。特定の順序にする必要があるのであれば、<code>Object.entries(obj).sort((a, b) =&gt; a[0] - b[0]);</code> のようにして、まず配列を整列する必要があります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-entries.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.entries(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>返されることになる文字列をキーとした列挙可能な所有プロパティの組 <code>[<var>key</var>, <var>value</var>]</code> を持つオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>引数に与えたオブジェクトが所有する、文字列をキーとした列挙可能なプロパティの組 <code>[<var>key</var>, <var>value</var>]</code> の配列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Object.entries()</code> は、<code>object</code> に直接存在する文字列をキーとした列挙可能プロパティの組 <code>[<var>key</var>, <var>value</var>]</code> が配列要素に対応した配列を返します。プロパティの順序はオブジェクト内のプロパティに対してループさせた時の順序と同じになります。</p>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>ネイティブで <code>Object.entries</code> に対応していない古い環境に互換性を持たせる場合は、以下のいずれかを使用することができます。</p>
+
+<ul>
+ <li><code>Object.entries</code> の試験的実装である <a href="https://github.com/tc39/proposal-object-values-entries">tc39/proposal-object-values-entries</a> (IE に対応する必要がない場合)</li>
+ <li><a href="https://github.com/es-shims/Object.entries">es-shims/Object.entries</a> リポジトリにあるポリフィル</li>
+ <li>または、単純に、下記の配布可能なポリフィルを使うこともできます。</li>
+</ul>
+
+<pre class="brush: js notranslate">if (!Object.entries) {
+  Object.entries = function( obj ){
+ var ownProps = Object.keys( obj ),
+  i = ownProps.length,
+ resArray = new Array(i); // preallocate the Array
+  while (i--)
+  resArray[i] = [ownProps[i], obj[ownProps[i]]];
+
+  return resArray;
+ };
+}
+</pre>
+
+<p>上記のポリフィルのコードスニペットで、IE&lt;9 の対応が必要な場合、Object.keys の polyfill ({{jsxref("Object.keys")}} ページにあるようなもの) も必要となります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js notranslate">const obj = { foo: 'bar', baz: 42 };
+console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
+
+// 配列様オブジェクト
+const obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]
+
+// ランダムなキー順序を持つ配列様オブジェクト
+const anObj = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.entries(anObj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]
+
+// 列挙可能でないプロパティ getFoo がある
+const myObj = Object.create({}, { getFoo: { value() { return this.foo; } } });
+myObj.foo = 'bar';
+console.log(Object.entries(myObj)); // [ ['foo', 'bar'] ]
+
+// オブジェクトでない引数はオブジェクトへと型強制されます
+console.log(Object.entries('foo')); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]
+
+// returns an empty array for any primitive type, since primitives have no own properties
+console.log(Object.entries(100)); // [ ]
+
+// iterate through key-value gracefully
+const obj = { a: 5, b: 7, c: 9 };
+for (const [key, value] of Object.entries(obj)) {
+ console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
+}
+
+// Or, using array extras
+Object.entries(obj).forEach(([key, value]) =&gt; {
+console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
+});
+</pre>
+
+<h3 id="Converting_an_Object_to_a_Map" name="Converting_an_Object_to_a_Map"><code>Object</code> から <code>Map</code> への変換</h3>
+
+<p>{{jsxref("Map", "new Map()")}} コンストラクターは <code>entries</code> による反復処理に対応しています。<code>Object.entries</code> を使うと、{{jsxref("Object")}} から {{jsxref("Map")}} へと簡単に変換できます。:</p>
+
+<pre class="brush: js notranslate">const obj = { foo: 'bar', baz: 42 };
+const map = new Map(Object.entries(obj));
+console.log(map); // Map { foo: "bar", baz: 42 }
+</pre>
+
+<h3 id="Iterating_through_an_Object" name="Iterating_through_an_Object"><code>Object</code> をループする</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">Array Destructuring</a> を使って、objects を簡単にループできます。</p>
+
+<pre class="brush: js notranslate">const obj = { foo: 'bar', baz: 42 };
+Object.entries(obj).forEach(([key, value]) =&gt; console.log(`${key}: ${value}`)); // "foo: bar", "baz: 42"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.entries', 'Object.entries')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Object.entries")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">プロパティの列挙可能性と所有権</a></li>
+ <li>{{jsxref("Object.keys()")}}</li>
+ <li>{{jsxref("Object.values()")}}</li>
+ <li>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</li>
+ <li>{{jsxref("Object.create()")}}</li>
+ <li>{{jsxref("Object.fromEntries()")}}</li>
+ <li>{{jsxref("Object.getOwnPropertyNames()")}}</li>
+ <li>{{jsxref("Map.prototype.entries()")}}</li>
+ <li>{{jsxref("Map.prototype.keys()")}}</li>
+ <li>{{jsxref("Map.prototype.values()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/freeze/index.html b/files/ja/web/javascript/reference/global_objects/object/freeze/index.html
new file mode 100644
index 0000000000..5f5ee145fd
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/freeze/index.html
@@ -0,0 +1,245 @@
+---
+title: Object.freeze()
+slug: Web/JavaScript/Reference/Global_Objects/Object/freeze
+tags:
+ - ECMAScript5
+ - JavaScript
+ - Object
+ - Reference
+ - freeze
+ - メソッド
+ - ロック
+ - 不変性
+ - 凍結
+ - 変更
+ - 変更可能性
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/freeze
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Object.freeze()</strong></code> メソッドはオブジェクトを<strong>凍結</strong>します。凍結されたオブジェクトは変更できなくなります。オブジェクトを凍結すると、新しいプロパティを追加したり、既存のプロパティを削除したりすることができなくなり、既存のプロパティに対する列挙可否、構成可否、書き込み可否の変更ができなくなり、既存のプロパティの値が変更できなくなります。加えて、オブジェクトを凍結するとプロトタイプも変更できなくなります。<code>freeze()</code> は渡されたものと同じオブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-freeze.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.freeze(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>凍結するオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>この関数に渡されたオブジェクトです。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>凍結されたオブジェクトにプロパティのセットを追加あるいは削除することはできません。実行しようとすると暗黙に失敗するか、または {{jsxref("TypeError")}} 例外が発生して失敗します (多くの場合は、ただし{{jsxref("Strict_mode", "厳格モード", "", 1)}}ではこれに限りません)。</p>
+
+<p>凍結されたオブジェクトデータプロパティについては、値を変更することはできず、構成可否、書き込み可否の属性は false に設定されます。アクセサープロパティ (ゲッターおよびセッター) は同様に動作します (そして、値を変更しているかのようにみえます)。なお、オブジェクトである値については、それも凍結されていない限り変更可能です。オブジェクトとして、配列は凍結可能です。凍結すると、要素が変更可能ではなくなり、配列に対する要素の追加や削除ができなくなります。</p>
+
+<p><code>freeze()</code> は関数に渡されたものと同じオブジェクトを返します。凍結されたコピーを生成する訳では<em>ありません</em>。</p>
+
+<p>ECMAScript 5 では、このメソッドの引数がオブジェクトではない (プリミティブである) 場合、{{jsxref("TypeError")}} が発生します。ECMAScript 2015 では、オブジェクトではない引数は通常の凍結済みのオブジェクトである場合と同様に扱い、単純に返されます。</p>
+
+<pre class="brush: js notranslate">&gt; Object.freeze(1)
+TypeError: 1 is not an object // ES5 のコード
+
+&gt; Object.freeze(1)
+1 // ES2015 のコード
+</pre>
+
+<p>要素を伴う {{domxref("ArrayBufferView")}} では、メモリー上のビューであり絶対的に他の問題の可能性があるため、{{jsxref("TypeError")}} が発生します。</p>
+
+<pre class="brush: js notranslate">&gt; Object.freeze(new Uint8Array(0)) // 要素なし
+<em>Uint8Array</em> []
+
+&gt; Object.freeze(new Uint8Array(1)) // 要素あり
+TypeError: Cannot freeze array buffer views with elements
+
+&gt; Object.freeze(new DataView(new ArrayBuffer(32))) // 要素なし
+<em>DataView</em> {}
+
+&gt; Object.freeze(new Float64Array(new ArrayBuffer(64), 63, 0)) // 要素なし
+<em>Float64Array</em> []
+
+&gt; Object.freeze(new Float64Array(new ArrayBuffer(64), 32, 2)) // 要素あり
+TypeError: Cannot freeze array buffer views with elements
+</pre>
+
+<p>なお、標準の3つのプロパティ (<code>buf.byteLength</code>, <code>buf.byteOffset</code> and <code>buf.buffer</code>) は読み取り専用ですので ({{jsxref("ArrayBuffer")}} または {{jsxref("SharedArrayBuffer")}} の場合)、これらのプロパティを凍結しようとする理由はありません。</p>
+
+<h3 id="Comparison_to_Object.seal" name="Comparison_to_Object.seal()">Object.seal() との比較</h3>
+
+<p>{{jsxref("Object.seal()")}} によって封印されたオブジェクトは、既存のプロパティを変更することができます。<code>Object.freeze()</code> によって凍結されたオブジェクトの既存のプロパティは、不変になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Freezing_objects" name="Freezing_objects">オブジェクトの凍結</h3>
+
+<pre class="brush: js notranslate">const obj = {
+ prop() {},
+ foo: 'bar'
+};
+
+// 凍結前: 新しいプロパティが追加でき、
+// 既存のプロパティは変更や削除ができます
+obj.foo = 'baz';
+obj.lumpy = 'woof';
+delete obj.prop;
+
+// 凍結
+const o = Object.freeze(obj);
+
+// 返値は渡したオブジェクトとまったく同じものです。
+o === obj; // true
+
+// オブジェクトは凍結されています。
+Object.isFrozen(obj); // === true
+
+// すべての変更が失敗するようになりました
+obj.foo = 'quux'; // 暗黙的に何も行われません
+// 暗黙的にプロパティは追加されません
+obj.quaxxor = 'the friendly duck';
+
+// また、厳格モードではこれらの試みに対して TypeError が発生します
+function fail(){
+ 'use strict';
+ obj.foo = 'sparky'; // TypeError が発生
+ delete obj.foo; // TypeError が発生
+ delete obj.quaxxor; // 属性 'quaxxor' が追加されたことがないため true を返す
+ obj.sparky = 'arf'; // TypeError が発生
+}
+
+fail();
+
+// Object.defineProperty; から変更を試みますが、
+// 以下のどちらの文も TypeError が発生します。
+Object.defineProperty(obj, 'ohai', { value: 17 });
+Object.defineProperty(obj, 'foo', { value: 'eit' });
+
+// プロトタイプを変更することもできず、
+// 以下のどちらの文も TypeError が発生します。
+Object.setPrototypeOf(obj, { x: 20 })
+obj.__proto__ = { x: 20 }
+</pre>
+
+<h3 id="Freezing_arrays" name="Freezing_arrays">配列の凍結</h3>
+
+<pre class="brush: js notranslate">let a = [0];
+Object.freeze(a); // 配列が変更できなくなりました。
+
+a[0] = 1; // 暗黙に失敗
+
+// 厳格モードで試みると TypeError が発生します
+function fail() {
+ "use strict"
+ a[0] = 1;
+}
+
+fail();
+
+// push を試みる
+a.push(2); // TypeError が発生</pre>
+
+<p>凍結されたオブジェクトは<em>不変</em>になります。しかし、<em>定数</em>であるとは限りません。以下の例では、凍結されたオブジェクトが定数ではないことを示しています (凍結が浅い)。</p>
+
+<pre class="brush: js notranslate">const obj1 = {
+ internal: {}
+};
+
+Object.freeze(obj1);
+obj1.internal.a = 'aValue';
+
+obj1.internal.a // 'aValue'</pre>
+
+<p>定数オブジェクトになるには、参照のつながり全体 (他のオブジェクトへの直接または間接的な参照) が不変で凍結されたオブジェクトのみを参照していなければなりません。凍結されるオブジェクトは、オブジェクト全体の中にあるオブジェクトの<em>状態</em> (値と他のオブジェクトへの参照) がすべて固定されているので、不変ということができます。なお、文字列、数値、真偽値はすべて不変となり、関数や配列はオブジェクト扱いです。</p>
+
+<h4 id="What_is_shallow_freeze" name="What_is_shallow_freeze">浅い凍結とは</h4>
+
+<p><code>Object.freeze(<var>object</var>)</code> を呼び出した結果は、<code>object</code> の直属のプロパティにのみ適用され、<code>object</code> 上<em>のみ</em>に対するその後のプロパティの追加、削除、値の再割り当て操作を禁止します。これらのプロパティの値がオブジェクトそのものであった場合、これらのオブジェクトは凍結されず、プロパティの追加、削除、値の再割り当て操作の対象になり得ます。</p>
+
+<pre class="brush: js notranslate">const employee = {
+ name: "Mayank",
+ designation: "Developer",
+ address: {
+ street: "Rohini",
+ city: "Delhi"
+ }
+};
+
+Object.freeze(employee);
+
+employee.name = "Dummy"; // 非 strict モードでは暗黙に失敗
+employee.address.city = "Noida"; // 子オブジェクトの属性は変更できる
+
+console.log(employee.address.city) // 出力: "Noida"
+</pre>
+
+<p>オブジェクトを不変にするには、オブジェクト型のプロパティをそれぞれ再帰的に凍結させてください (深い凍結)。オブジェクトが参照グラフに{{interwiki("wikipedia", "閉路")}}を含まないことが分かっている場合は、デザインパターンに基づいてケースバイケースのパターンを使用してください。そうでないと、無限ループが発生します。<code>deepFreeze()</code> をパス (例えば配列) 引数を受け取る内部関数を持つよう拡張すると、オブジェクトを不変にするプロセスにいるときに、<code>deepFreeze()</code> が再帰的に呼び出されることを防ぐことができます。凍結させてはいけない [window] のようなオブジェクトを凍結させる危険性がなおあります。</p>
+
+<pre class="brush: js notranslate">function deepFreeze(object) {
+ // オブジェクトで定義されたプロパティ名を取得
+ const propNames = Object.getOwnPropertyNames(object);
+
+ // 自分自身を凍結する前にプロパティを凍結
+
+ for (const name of propNames) {
+ const value = object[name];
+
+ if (value &amp;&amp; typeof value === "object") {
+ deepFreeze(value);
+ }
+ }
+
+ return Object.freeze(object);
+}
+
+const obj2 = {
+ internal: {
+ a: null
+ }
+};
+
+deepFreeze(obj2);
+
+obj2.internal.a = 'anotherValue'; // 非 strict モードでは暗黙に失敗
+obj2.internal.a; // null
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.freeze', 'Object.freeze')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.freeze")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.isFrozen()")}}</li>
+ <li>{{jsxref("Object.preventExtensions()")}}</li>
+ <li>{{jsxref("Object.isExtensible()")}}</li>
+ <li>{{jsxref("Object.seal()")}}</li>
+ <li>{{jsxref("Object.isSealed()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/fromentries/index.html b/files/ja/web/javascript/reference/global_objects/object/fromentries/index.html
new file mode 100644
index 0000000000..04f84e02d2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/fromentries/index.html
@@ -0,0 +1,108 @@
+---
+title: Object.fromEntries()
+slug: Web/JavaScript/Reference/Global_Objects/Object/fromEntries
+tags:
+ - JavaScript
+ - Method
+ - Object
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/fromEntries
+---
+<p>{{JSRef}}</p>
+
+<p><code><strong>Object.fromEntries()</strong></code> メソッドは、キーと値の組み合わせのリストをオブジェクトに変換します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-fromentries.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.fromEntries(<var>iterable</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>iterable</var></code></dt>
+ <dd><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">反復処理プロトコル</a>を実装している {{jsxref("Array")}} や {{jsxref("Map")}} やその他の反復処理可能なオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>反復可能な項目から作成されたプロパティを持つ新しいオブジェクト。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>Object.fromEntries()</code> メソッドは、キーと値のリストを取り、これらの項目から作成されたプロパティを持つ新しいオブジェクトを返します。引数の <var>iterable</var> は <code>@@iterator</code> メソッドを実装しており、オブジェクトのような二つの要素を持ち、最初の要素がプロパティキーとして使われる値であり、次の要素がプロパティのキーに関連付けられる値であるようなオブジェクトであることが求められます。</p>
+
+<p><code>Object.fromEntries()</code> は {{jsxref("Object.entries()")}} の逆の動作をします。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Converting_a_Map_to_an_Object" name="Converting_a_Map_to_an_Object">Map から Object への変換</h3>
+
+<p><code>Object.fromEntries</code> では、 {{jsxref("Map")}} を {{jsxref("Object")}} に変換することができます。</p>
+
+<pre class="brush: js notranslate">const map = new Map([ ['foo', 'bar'], ['baz', 42] ]);
+const obj = Object.fromEntries(map);
+console.log(obj); // { foo: "bar", baz: 42 }
+</pre>
+
+<h3 id="Converting_an_Array_to_an_Object" name="Converting_an_Array_to_an_Object">Array から Object への変換</h3>
+
+<p><code>Object.fromEntries</code> では、 {{jsxref("Array")}} を {{jsxref("Object")}} に変換することができます。</p>
+
+<pre class="brush: js notranslate">const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
+const obj = Object.fromEntries(arr);
+console.log(obj); // { 0: "a", 1: "b", 2: "c" }
+</pre>
+
+<h3 id="Object_transformations" name="Object_transformations">オブジェクトの変形</h3>
+
+<p><code>Object.fromEntries</code>、逆のメソッド {{jsxref("Object.entries()")}}、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array#Methods_2">配列操作メソッド</a>を使用して、以下のようにオブジェクトを変形することができます。</p>
+
+<pre class="brush: js notranslate">const object1 = { a: 1, b: 2, c: 3 };
+
+const object2 = Object.fromEntries(
+ Object.entries(object1)
+ .map(([ key, val ]) =&gt; [ key, val * 2 ])
+);
+
+console.log(object2);
+// { a: 2, b: 4, c: 6 }</pre>
+
+<div class="hidden">
+<p>MDN のページにポリフィルを追加しないでください。詳しくは、 <a href="https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500">https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500</a> を参照してください。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.fromentries', 'Object.fromEntries')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.fromEntries")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.entries()")}}</li>
+ <li>{{jsxref("Object.keys()")}}</li>
+ <li>{{jsxref("Object.values()")}}</li>
+ <li>{{jsxref("Map.prototype.entries()")}}</li>
+ <li>{{jsxref("Map.prototype.keys()")}}</li>
+ <li>{{jsxref("Map.prototype.values()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html b/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html
new file mode 100644
index 0000000000..5f0db498a0
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html
@@ -0,0 +1,149 @@
+---
+title: Object.getOwnPropertyDescriptor()
+slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Object.getOwnPropertyDescriptor()</code></strong> メソッドは、与えられたオブジェクトの特定のプロパティ (すなわち、あるオブジェクトの直接の表現であり、オブジェクトのプロトタイプチェーン内のものではない) の構成を記述するオブジェクトを返します。返されるオブジェクトは変更可能ですが、変更しても元のプロパティの構成には影響を与えません。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-getownpropertydescriptor.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.getOwnPropertyDescriptor(<var>obj</var>, <var>prop</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>プロパティの確認を行うオブジェクトです。</dd>
+ <dt><code><var>prop</var></code></dt>
+ <dd>記述子を受け取るプロパティの名前または {{jsxref("Symbol")}} です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたプロパティがオブジェクトにある場合は、プロパティ記述子で、それ以外の場合は {{jsxref("undefined")}} です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドで、プロパティの正確な定義を確認することができます。 JavaScript の<dfn>プロパティ</dfn>は、文字列値の名前または {{jsxref("Symbol")}} とプロパティ記述子から成ります。プロパティ記述子およびその属性についての詳細情報は、 {{jsxref("Object.defineProperty()")}} にあります。</p>
+
+<p><dfn>プロパティ記述子</dfn>は、以下の属性のいくつかを記録したものです。</p>
+
+
+
+<dl>
+ <dt><code>value</code></dt>
+ <dd>プロパティに関連づけられた値です (データ記述子のみ)。</dd>
+ <dt><code>writable</code></dt>
+ <dd><code>true</code> である場合、プロパティに関連づけられた値は変更することができます (データ記述子のみ)。</dd>
+ <dt><code>get</code></dt>
+ <dd>プロパティのゲッターとして提供する関数、あるいはゲッターがない場合は <code>undefined</code> です (アクセサ記述子のみ)。</dd>
+ <dt><code>set</code></dt>
+ <dd>プロパティのセッターとして提供する関数、あるいはセッターがない場合は <code>undefined</code> です (アクセサ記述子のみ)。</dd>
+ <dt><code>configurable</code></dt>
+ <dd><code>true</code> である場合、この種の記述子を変更することや、対応するオブジェクトからプロパティを削除することができます。</dd>
+ <dt><code>enumerable</code></dt>
+ <dd><code>true</code> である場合、このプロパティは対応するオブジェクトでのプロパティ列挙に現れます。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Object.getOwnPropertyDescriptor" name="Using_Object.getOwnPropertyDescriptor">Object.getOwnPropertyDescriptor の使用</h3>
+
+<pre class="brush: js notranslate">var o, d;
+
+o = { get foo() { return 17; } };
+d = Object.getOwnPropertyDescriptor(o, 'foo');
+// d is {
+// configurable: true,
+// enumerable: true,
+// get: /*the getter function*/,
+// set: undefined
+// }
+
+o = { bar: 42 };
+d = Object.getOwnPropertyDescriptor(o, 'bar');
+// d is {
+// configurable: true,
+// enumerable: true,
+// value: 42,
+// writable: true
+// }
+
+o = { [Symbol.for('baz')]: 73 }
+d = Object.getOwnPropertyDescriptor(o, Symbol.for('baz'));
+// d is {
+// configurable: true,
+// enumerable: true,
+// value: 73,
+// writable: true
+// }
+
+o = {};
+Object.defineProperty(o, 'qux', {
+ value: 8675309,
+ writable: false,
+ enumerable: false
+});
+d = Object.getOwnPropertyDescriptor(o, 'qux');
+// d is {
+// value: 8675309,
+// writable: false,
+// enumerable: false,
+// configurable: false
+// }
+</pre>
+
+<h3 id="Non-object_coercion" name="Non-object_coercion">オブジェクト以外の型変換</h3>
+
+<p>ECMAScript 5 では、このメソッドへの最初の引数がオブジェクトでない (プリミティブである) 場合は、 {{jsxref("TypeError")}} が発生します。 ECMAScript 2015 では、最初の引数がオブジェクトでなくても、最初に強制的にオブジェクトに変換します。</p>
+
+<pre class="brush: js notranslate">Object.getOwnPropertyDescriptor('foo', 0);
+// TypeError: "foo" is not an object // ES5 code
+
+Object.getOwnPropertyDescriptor('foo', 0);
+// Object returned by ES2015 code: {
+// configurable: false,
+// enumerable: true,
+// value: "f",
+// writable: false
+// }
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.getownpropertydescriptor', 'Object.getOwnPropertyDescriptor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.getOwnPropertyDescriptor")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Reflect.getOwnPropertyDescriptor()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html b/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html
new file mode 100644
index 0000000000..3232f7de88
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html
@@ -0,0 +1,110 @@
+---
+title: Object.getOwnPropertyDescriptors()
+slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors
+tags:
+ - JavaScript
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Object.getOwnPropertyDescriptors()</strong></code> メソッドは、指定したオブジェクトのすべてのプロパティ記述子を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-getownpropertydescriptors.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.getOwnPropertyDescriptors(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>obj</code></dt>
+ <dd>すべてのプロパティディスクリプタを取得するオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>オブジェクトのすべてのプロパティ記述子を含むオブジェクト。プロパティがない場合、空オブジェクトの可能性がある。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>このメソッドは、オブジェクトのすべての独自のプロパティの正確な記述の検査を可能にします。 JavaScript では、<dfn>プロパティ</dfn>は文字列値による名前または {{jsxref("Symbol")}} とプロパティ記述子で構成されています。プロパティ記述子の型と属性についての詳細情報は、{{jsxref("Object.defineProperty()")}} で確認してください。</p>
+
+<p><dfn>プロパティディスクリプタ</dfn> は、次の属性のいくつかを持ちます。</p>
+
+<dl>
+ <dt><code>value</code></dt>
+ <dd>プロパティに関連づけられた値です (データディスクリプタのみ)。</dd>
+ <dt><code>writable</code></dt>
+ <dd><code>true</code> である場合、プロパティに関連づけられた値は変更することができます (データ記述子のみ)。</dd>
+ <dt><code>get</code></dt>
+ <dd>プロパティのゲッターとして提供する関数、あるいはゲッターがない場合は {{jsxref("undefined")}} です (アクセサ記述子のみ)。</dd>
+ <dt><code>set</code></dt>
+ <dd>プロパティのセッターとして提供する関数、あるいはセッターがない場合は {{jsxref("undefined")}} です (アクセサ記述子のみ)。</dd>
+ <dt><code>configurable</code></dt>
+ <dd><code>true</code> である場合、この種の記述子を変更することや、対応するオブジェクトからプロパティを削除することができます。</dd>
+ <dt><code>enumerable</code></dt>
+ <dd><code>true</code> である場合、このプロパティは対応するオブジェクトでのプロパティ列挙に現れます。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_a_shallow_clone" name="Creating_a_shallow_clone">浅いコピーの生成</h3>
+
+<p>{{jsxref("Object.assign()")}} メソッドは、ソースオブジェクトから対象のオブジェクトに対して enumerable とプロパティのみコピーできる一方、2 つの未知のオブジェクト間の浅いコピーのために、このメソッドと {{jsxref("Object.create()")}} を使用できます:</p>
+
+<pre class="brush: js notranslate">Object.create(
+ Object.getPrototypeOf(obj),
+ Object.getOwnPropertyDescriptors(obj)
+);
+</pre>
+
+<h3 id="Creating_a_subclass" name="Creating_a_subclass">サブクラスの作成</h3>
+
+<p>サブクラスを作成する通常の方法は、サブクラスを定義し、そのプロトタイプをスーパークラスのインスタンスに設定し、そのインスタンスにプロパティを定義することです。これは特にセッターやゲッターが無骨になることがあります。代わりに、プロトタイプを設定するためにこのコードを使用することもできます。</p>
+
+<pre class="brush: js notranslate">function superclass() {}
+superclass.prototype = {
+ // Define your methods and properties here
+};
+function subclass() {}
+subclass.prototype = Object.create(
+  superclass.prototype,
+  {
+ // Define your methods and properties here
+ }
+);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.getOwnPropertyDescriptors")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.getOwnPropertyDescriptor()")}}</li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li><a href="https://github.com/tc39/proposal-object-getownpropertydescriptors">Polyfill</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/getownpropertynames/index.html b/files/ja/web/javascript/reference/global_objects/object/getownpropertynames/index.html
new file mode 100644
index 0000000000..adc5db5aed
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/getownpropertynames/index.html
@@ -0,0 +1,157 @@
+---
+title: Object.getOwnPropertyNames()
+slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - JavaScript 1.8.5
+ - Method
+ - Object
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Object.getOwnPropertyNames()</code></strong> メソッドは、与えられたオブジェクトで発見されたすべての直接のプロパティを含む配列を (シンボルを使用したものを除き、列挙不可能なプロパティを含んで) 返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-getownpropertynames.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.getOwnPropertyNames(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>オブジェクトで、これ自身の列挙可能および列挙不可能なプロパティが返されます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたオブジェクトで発見された、列挙可能および列挙不可能なプロパティに対応する文字列を要素とする配列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Object.getOwnPropertyNames()</code> は、 <code><var>obj</var></code> で発見された列挙可能および列挙不可能なプロパティに対応する文字列を要素とする配列を返します。配列内における列挙可能なプロパティの順序は、オブジェクトで {{jsxref("Statements/for...in", "for...in")}} (または {{jsxref("Object.keys()")}}) を実行して見つかるものの順序と同じです。 ES6 によれば、オブジェクトの整数のキーは (列挙可能であっても列挙不可能であっても) 最初の配列に昇順で追加され、その後に挿入順を表す文字列キーが続きます。</p>
+
+<p>ES5 では、このメソッドの引数がオブジェクトではない (プリミティブである) 場合、 {{jsxref("TypeError")}} が発生します。 ES2015 では、引数がオブジェクトではない場合はオブジェクトに型変換されます。</p>
+
+<pre class="brush: js notranslate">Object.getOwnPropertyNames('foo');
+// TypeError: "foo" is not an object (ES5 code)
+
+Object.getOwnPropertyNames('foo');
+// ["0", "1", "2", "length"] (ES2015 code)
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Object.getOwnPropertyNames" name="Using_Object.getOwnPropertyNames">Object.getOwnPropertyNames() の使用</h3>
+
+<pre class="brush: js notranslate">var arr = ['a', 'b', 'c'];
+console.log(Object.getOwnPropertyNames(arr).sort()); // .sort() は配列のメソッド
+// ["0", "1", "2", "length"] と出力される
+
+// 配列風オブジェクト
+var obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.getOwnPropertyNames(obj).sort()); // .sort() は配列のメソッド
+// ["0", "1", "2"] と出力される
+
+// Array.forEach を使ったプロパティと値の出力
+Object.getOwnPropertyNames(obj).forEach(
+ function (val, idx, array) {
+ console.log(val + ' -&gt; ' + obj[val]);
+ }
+);
+// 出力結果
+// 0 -&gt; a
+// 1 -&gt; b
+// 2 -&gt; c
+
+// 列挙不可能なプロパティ
+var my_obj = Object.create({}, {
+ getFoo: {
+ value: function() { return this.foo; },
+ enumerable: false
+ }
+});
+my_obj.foo = 1;
+
+console.log(Object.getOwnPropertyNames(my_obj).sort());
+// ["foo", "getFoo"] と出力されます
+</pre>
+
+<p>列挙可能なプロパティのみ取得したい場合は {{jsxref("Object.keys()")}} を参照するか、 {{jsxref("Statements/for...in", "for...in")}} ループを用いるかしてください。 (なお、 for...in ループでは {{jsxref("Object.prototype.hasOwnProperty()", "hasOwnProperty()")}} でフィルタリングされない限りは、そのオブジェクト上で直接見つかるプロパティだけでなく、プロトタイプチェーン上の列挙可能なプロパティも返されることに注意してください。)</p>
+
+<p>プロトタイプチェーン上のプロパティは配列に含まれません。</p>
+
+<pre class="brush: js notranslate">function ParentClass() {}
+ParentClass.prototype.inheritedMethod = function() {};
+
+function ChildClass() {
+ this.prop = 5;
+ this.method = function() {};
+}
+ChildClass.prototype = new ParentClass;
+ChildClass.prototype.prototypeMethod = function() {};
+
+console.log(
+ Object.getOwnPropertyNames(
+ new ChildClass() // ["prop", "method"]
+ )
+);
+</pre>
+
+<h3 id="Get_non-enumerable_properties_only" name="Get_non-enumerable_properties_only">列挙不可能なプロパティのみを取得する</h3>
+
+<p>ここでは {{jsxref("Array.prototype.filter()")}} 関数を使用して、 ({{jsxref("Object.keys()")}} で取得した) 列挙可能なキーを (<code>Object.getOwnPropertyNames()</code> で取得した) すべてのキーからフィルタリングし、出力として列挙不可能なキーのみを取得します。</p>
+
+<pre class="brush: js notranslate">var target = myObject;
+var enum_and_nonenum = Object.getOwnPropertyNames(target);
+var enum_only = Object.keys(target);
+var nonenum_only = enum_and_nonenum.filter(function(key) {
+ var indexInEnum = enum_only.indexOf(key);
+ if (indexInEnum == -1) {
+ // このキーが enum_only の中になければ、
+ // そのキーは列挙不可能であることを意味するので、
+ // true を返してフィルターの中に残します。
+ return true;
+ } else {
+ return false;
+ }
+});
+
+console.log(nonenum_only);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.getOwnPropertyNames")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Enumerability_and_ownership_of_properties">プロパティの列挙可能性と所有権</a></li>
+ <li>{{jsxref("Object.prototype.hasOwnProperty()")}}</li>
+ <li>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</li>
+ <li>{{jsxref("Object.create()")}}</li>
+ <li>{{jsxref("Object.keys()")}}</li>
+ <li>{{jsxref("Array.forEach()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html b/files/ja/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html
new file mode 100644
index 0000000000..284dc92554
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html
@@ -0,0 +1,86 @@
+---
+title: Object.getOwnPropertySymbols()
+slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Object.getOwnPropertySymbols()</code></strong> メソッドは、与えられたオブジェクト上で直接見つかるシンボルプロパティすべての配列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-getownpropertysymbols.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: js notranslate">Object.getOwnPropertySymbols(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>シンボルプロパティが返されるオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられたオブジェクト上で直接見つかるシンボルプロパティすべての配列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Object.getOwnPropertyNames()")}} と同様、与えられたオブジェクトのすべてのシンボルプロパティをシンボルの配列として取得することができます。 {{jsxref("Object.getOwnPropertyNames()")}} 自体はオブジェクトのシンボルプロパティを含まず、文字列プロパティのみを含むことに注意して下さい。</p>
+
+<p>すべてのオブジェクトが最初に自身のシンボルプロパティを持っているとは限らないので、 <code>Object.getOwnPropertySymbols()</code> は、オブジェクトにシンボルプロパティを設定しない限りは空の配列を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getOwnPropertySymbols" name="Using_getOwnPropertySymbols">getOwnPropertySymbols の使用</h3>
+
+<pre class="brush: js notranslate">var obj = {};
+var a = Symbol('a');
+var b = Symbol.for('b');
+
+obj[a] = 'localSymbol';
+obj[b] = 'globalSymbol';
+
+var objectSymbols = Object.getOwnPropertySymbols(obj);
+
+console.log(objectSymbols.length); // 2
+console.log(objectSymbols); // [Symbol(a), Symbol(b)]
+console.log(objectSymbols[0]); // Symbol(a)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.getownpropertysymbols', 'Object.getOwnPropertySymbols')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.getOwnPropertySymbols")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.getOwnPropertyNames()")}}</li>
+ <li>{{jsxref("Symbol")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/getprototypeof/index.html b/files/ja/web/javascript/reference/global_objects/object/getprototypeof/index.html
new file mode 100644
index 0000000000..22d3bd5976
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/getprototypeof/index.html
@@ -0,0 +1,86 @@
+---
+title: Object.getPrototypeOf()
+slug: Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Object.getPrototypeOf()</code></strong> メソッドは、指定されたオブジェクトのプロトタイプ (つまり、内部プロパティ <code>[[Prototype]]</code> の値) を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-getprototypeof.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.getPrototypeOf(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>プロトタイプを取得したいオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたオブジェクトのプロトタイプです。何も継承していないオブジェクトの場合は {{jsxref("null")}} です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_getPrototypeOf" name="Using_getPrototypeOf">getPrototypeOf の使用</h3>
+
+<pre class="brush: js notranslate">var proto = {};
+var obj = Object.create(proto);
+Object.getPrototypeOf(obj) === proto; // true
+</pre>
+
+<h3 id="Non-object_coercion" name="Non-object_coercion">オブジェクト以外の型変換</h3>
+
+<p>ES5 では引数 <var>obj</var> がオブジェクトではない場合 {{jsxref("TypeError")}} が発生します。しかし ES2015 では対応する {{jsxref("Object")}} に変換されてから処理されます。</p>
+
+<pre class="brush: js notranslate">Object.getPrototypeOf('foo');
+// TypeError: "foo" is not an object (ES5 code)
+Object.getPrototypeOf('foo');
+// String.prototype (ES2015 code)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.getprototypeof', 'Object.getPrototypeOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.getPrototypeOf")}}</p>
+
+<h3 id="Opera-specific_notes" name="Opera-specific_notes">Opera 固有のメモ</h3>
+
+<p>古いバージョンの Opera は <code>Object.getPrototypeOf()</code> に対応していませんが、 Opera 10.50 以降で標準外の {{jsxref("Object.proto", "__proto__")}} に対応しています。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.isPrototypeOf()")}}</li>
+ <li>{{jsxref("Object.setPrototypeOf()")}}</li>
+ <li>{{jsxref("Object.prototype.__proto__")}}</li>
+ <li>John Resig 氏の記事 : <a href="http://ejohn.org/blog/objectgetprototypeof/">getPrototypeOf</a></li>
+ <li>{{jsxref("Reflect.getPrototypeOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/hasownproperty/index.html b/files/ja/web/javascript/reference/global_objects/object/hasownproperty/index.html
new file mode 100644
index 0000000000..177ea1a986
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/hasownproperty/index.html
@@ -0,0 +1,146 @@
+---
+title: Object.prototype.hasOwnProperty()
+slug: Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
+tags:
+ - JavaScript
+ - Method
+ - Object
+ - Prototype
+ - hasOwnProperty
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>hasOwnProperty()</code></strong> メソッドは、オブジェクト自身が(継承されていない)指定されたプロパティを持っているかどうかを示す真偽値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-prototype-hasownproperty.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>obj</var>.hasOwnProperty(<var>prop</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><var>prop</var></dt>
+ <dd>テストするプロパティの名前の {{jsxref("String")}} または {{Glossary("Symbol")}} 。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Boolean")}} で、オブジェクトが指定されたプロパティを自身のプロパティとして持っているかどうかを示す</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Object")}} のすべての子孫は <code>hasOwnProperty</code> メソッドを継承しています。このメソッドはあるオブジェクトが指定されたプロパティを、そのオブジェクトの直接のプロパティとして持っているかどうかを特定するのに使うことができます。 {{jsxref("Operators/in", "in")}} 演算子とは異なり、このメソッドはオブジェクトのプロトタイプチェーンをたどってチェックしません。 {{jsxref("Object")}} が {{jsxref("Array")}} の場合、 <code>hasOwnProperty</code> メソッドはある添字が存在するかどうかを調べることができます。</p>
+
+<h2 id="Note" name="Note">注</h2>
+
+<p><code>hasOwnProperty</code> はプロパティの値が <code>null</code> または <code>undefined</code> であっても true を返します。</p>
+
+<pre class="brush: js notranslate">o = new Object();
+o.propOne = null;
+o.hasOwnProperty('propOne'); // true を返す
+o.propTwo = undefined;
+o.hasOwnProperty('propTwo'); // true を返す
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_hasOwnProperty_to_test_for_a_propertys_existence" name="Using_hasOwnProperty_to_test_for_a_property's_existence">hasOwnProperty を使ってプロパティの存在を調べる</h3>
+
+<p>オブジェクト <code>o</code> が <code>prop</code> という名前のプロパティを持っているかどうかを特定する例を以下に示します。</p>
+
+<pre class="brush: js notranslate">o = new Object();
+o.hasOwnProperty('prop'); // false を返す
+o.prop = 'exists';
+o.hasOwnProperty('prop'); // true を返す
+</pre>
+
+<h3 id="Direct_versus_inherited_properties" name="Direct_versus_inherited_properties">直接のプロパティと継承されたプロパティ</h3>
+
+<p>以下の例では、直接のプロパティとプロトタイプチェーンを通じて継承されたプロパティを区別します。</p>
+
+<pre class="brush: js notranslate">o = new Object();
+o.prop = 'exists';
+o.hasOwnProperty('prop'); // true を返す
+o.hasOwnProperty('toString'); // false を返す
+o.hasOwnProperty('hasOwnProperty'); // false を返す
+</pre>
+
+<h3 id="Iterating_over_the_properties_of_an_object" name="Iterating_over_the_properties_of_an_object">オブジェクトのプロパティの反復処理</h3>
+
+<p>以下の例では、継承されたプロパティを除いてオブジェクトのプロパティを反復処理する方法を示します。なお、 {{jsxref("Statements/for...in", "for...in")}} ループですでに列挙可能なアイテムのみが反復処理されるので、 <code>hasOwnProperty</code> 自体は列挙可能なアイテムに厳密に限定されているため、ループ内に列挙できないプロパティが見られないことに基づいて想定するべきではありません ({{jsxref("Object.getOwnPropertyNames()")}} のように)。</p>
+
+<pre class="brush: js notranslate">var buz = {
+ fog: 'stack'
+};
+
+for (var name in buz) {
+ if (buz.hasOwnProperty(name)) {
+ console.log('this is fog (' +
+ name + ') for sure. Value: ' + buz[name]);
+ }
+ else {
+ console.log(name); // toString or something else
+ }
+}
+</pre>
+
+<h3 id="Using_hasOwnProperty_as_a_property_name" name="Using_hasOwnProperty_as_a_property_name">プロパティ名としての hasOwnProperty の使用</h3>
+
+<p>JavaScript は <code>hasOwnProperty</code> というプロパティ名を保護していません。したがって、オブジェクトがこの名前のプロパティを持っている場合が存在すれば、正しい結果を得るためには<em>外部の</em> <code>hasOwnProperty</code> を使用する必要があります。</p>
+
+<pre class="brush: js notranslate">var foo = {
+ hasOwnProperty: function() {
+ return false;
+ },
+ bar: 'Here be dragons'
+};
+
+foo.hasOwnProperty('bar'); // 常に false を返す
+
+// 別な Object の hasOwnProperty 使用して、
+// this を foo に設定して呼び出す
+({}).hasOwnProperty.call(foo, 'bar'); // true
+
+// この目的では、 Object プロトタイプの hasOwnProperty プロパティを
+// 使用することもできます。
+Object.prototype.hasOwnProperty.call(foo, 'bar'); // true
+</pre>
+
+<p>なお、後者の場合は新しくオブジェクトを生成しません。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.prototype.hasownproperty', 'Object.prototype.hasOwnProperty')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.hasOwnProperty")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Enumerability_and_ownership_of_properties">プロパティの列挙可能性と所有権</a></li>
+ <li>{{jsxref("Object.getOwnPropertyNames()")}}</li>
+ <li>{{jsxref("Statements/for...in", "for...in")}}</li>
+ <li>{{jsxref("Operators/in", "in")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Inheritance_and_the_prototype_chain">継承とプロトタイプチェーン</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/index.html b/files/ja/web/javascript/reference/global_objects/object/index.html
new file mode 100644
index 0000000000..15b8d88d07
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/index.html
@@ -0,0 +1,287 @@
+---
+title: Object
+slug: Web/JavaScript/Reference/Global_Objects/Object
+tags:
+ - Constructor
+ - JavaScript
+ - Object
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/Object
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Object</strong></code> クラスは <a href="/ja/docs/Web/JavaScript/Data_structures">JavaScript のデータ型</a>の一つを表します。これは様々なキー付きコレクションとより複雑な実態を格納するために使用されます。Object は {{jsxref("Object/Object", "Object()")}} コンストラクターまたは<a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクト初期化子/リテラル構文</a>を使用して生成することができます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>JavaScript のほぼすべてのオブジェクトが {{jsxref("Object")}} のインスタンスです。一般的なオブジェクトは、プロパティを (メソッドを含めて) <code>Object.prototype</code> から継承していますが、これらのプロパティはシャドウ化 (別名オーバーライド) されている場合があります。しかし、意図的にそうではない <code>Object</code> を生成したり (例えば {{jsxref("Object.create", "Object.create(null)")}} によって)、変更した結果そうではなくなる場合 (例えば {{jsxref("Object.setPrototypeOf")}}) もあります。</p>
+
+<p><code>Object</code> プロトタイプオブジェクトへの変更は、その変更の対象となるプロパティやメソッドがプロトタイプチェーンに沿ってさらにオーバーライドされない限り、プロトタイプチェーンを通してすべてのオブジェクトに表示されます。これはとても強力ですが、オブジェクトの動作をオーバーライドしたり拡張したりするのは潜在的に危険をはらむ仕組みでもあります。</p>
+
+<p><code>Object</code> コンストラクターは、指定された値のオブジェクトラッパーを生成します。</p>
+
+<ul>
+ <li>値が {{jsxref("null")}} または {{jsxref("undefined")}} である場合、空のオブジェクトを生成して返します。</li>
+ <li>それ以外の場合は、与えられた値に関連する型のオブジェクトを返します。</li>
+ <li>値がすでにオブジェクトであった場合は、その値を返します。</li>
+</ul>
+
+<p>コンストラクター以外のコンテキストで呼び出された場合、<code>Object</code> は <code>new Object()</code> と同等に動作します。</p>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクト初期化子/リテラル構文</a>も参照してください。</p>
+
+<h3 id="Deleting_a_property_from_an_object" name="Deleting_a_property_from_an_object">オブジェクトからプロパティを削除する</h3>
+
+<p>オブジェクト自体には、自身のプロパティを削除するメソッドはありません ( {{jsxref("Map.prototype.delete", "Map.prototype.delete()")}}) など)。これを行うには、<a href="/ja/docs/Web/JavaScript/Reference/Operators/delete">delete 演算子</a>を使用する必要があります。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Object/Object", "Object()")}}</dt>
+ <dd><code>Object</code> コンストラクターは指定された値のオブジェクトラッパーを生成します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Object.assign","Object.assign()")}}</dt>
+ <dd>1 個以上のソースオブジェクトから、自身の列挙可能なプロパティの値をすべてターゲットオブジェクトにコピーします。</dd>
+ <dt>{{jsxref("Object.create","Object.create()")}}</dt>
+ <dd>指定されたプロトタイプオブジェクトとプロパティから、新しいオブジェクトを生成します。</dd>
+ <dt>{{jsxref("Object.defineProperty","Object.defineProperty()")}}</dt>
+ <dd>指定された記述子で記述された名前付きプロパティをオブジェクトへ追加します。</dd>
+ <dt>{{jsxref("Object.defineProperties","Object.defineProperties()")}}</dt>
+ <dd>指定された記述子で記述された複数の名前付きプロパティをオブジェクトへ追加します。</dd>
+ <dt>{{jsxref("Object.entries","Object.entries()")}}</dt>
+ <dd>指定したオブジェクトの<strong>自身の</strong>列挙可能な文字列プロパティのすべての <code>[key, value]</code> ペアを含む配列を返します。</dd>
+ <dt>{{jsxref("Object.freeze","Object.freeze()")}}</dt>
+ <dd>オブジェクトを凍結します。他のコードがプロパティを削除したり変更したりすることができなくなります。</dd>
+ <dt>{{jsxref("Object.fromEntries","Object.fromEntries()")}}</dt>
+ <dd>反復可能な <code>[key, value]</code> の組から新しいオブジェクトを返します。(これは {{jsxref("Object.entries")}} の逆です。)</dd>
+ <dt>{{jsxref("Object.getOwnPropertyDescriptor","Object.getOwnPropertyDescriptor()")}}</dt>
+ <dd>オブジェクトの名前付きプロパティに対応するプロパティ記述子を返します。</dd>
+ <dt>{{jsxref("Object.getOwnPropertyDescriptors","Object.getOwnPropertyDescriptors()")}}</dt>
+ <dd>オブジェクトの自身のすべてのプロパティの記述子を含むオブジェクトを返します。</dd>
+ <dt>{{jsxref("Object.getOwnPropertyNames","Object.getOwnPropertyNames()")}}</dt>
+ <dd>指定したオブジェクトの<strong>自身の</strong>列挙可能および列挙不可なすべてのプロパティの名前を、配列として返します。</dd>
+ <dt>{{jsxref("Object.getOwnPropertySymbols","Object.getOwnPropertySymbols()")}}</dt>
+ <dd>指定したオブジェクト上に直接存在するすべてのシンボルプロパティからなる配列を返します。</dd>
+ <dt>{{jsxref("Object.getPrototypeOf","Object.getPrototypeOf()")}}</dt>
+ <dd>指定されたオブジェクトのプロトタイプ (内部の <code>[[Prototype]]</code> プロパティ) を返します。</dd>
+ <dt>{{jsxref("Object.is","Object.is()")}}</dt>
+ <dd>二つの値が同じ値であるかどうかを比較します。<code>NaN</code> 値はすべて同じとして扱われます (抽象的等価比較とも厳密等価比較とも異なります)。</dd>
+ <dt>{{jsxref("Object.isExtensible","Object.isExtensible()")}}</dt>
+ <dd>オブジェクトの拡張が許可されているかどうかを判定します。</dd>
+ <dt>{{jsxref("Object.isFrozen","Object.isFrozen()")}}</dt>
+ <dd>オブジェクトが凍結されているかどうかを判定します。</dd>
+ <dt>{{jsxref("Object.isSealed","Object.isSealed()")}}</dt>
+ <dd>オブジェクトが封印されているかどうかを判定します。</dd>
+ <dt>{{jsxref("Object.keys","Object.keys()")}}</dt>
+ <dd>指定されたオブジェクト<strong>自身</strong>の列挙可能なプロパティの名前をすべて含む配列を返します。</dd>
+ <dt>{{jsxref("Object.preventExtensions","Object.preventExtensions()")}}</dt>
+ <dd>オブジェクトに対するあらゆる拡張を禁止します。</dd>
+ <dt>{{jsxref("Object.seal","Object.seal()")}}</dt>
+ <dd>オブジェクトを封印し、オブジェクトのプロパティの削除を禁止します。</dd>
+ <dt>{{jsxref("Object.setPrototypeOf","Object.setPrototypeOf()")}}</dt>
+ <dd>プロトタイプ (内部の <code>[[Prototype]]</code> プロパティ) を設定します。</dd>
+ <dt>{{jsxref("Object.values","Object.values()")}}</dt>
+ <dd>指定したオブジェクトの<strong>自身</strong>の列挙可能な文字列プロパティのすべてに対応する値を含む配列を返します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<div>
+<dl>
+ <dt>{{jsxref("Object.prototype.constructor")}}</dt>
+ <dd>オブジェクトのプロトタイプを生成する関数を指定します。</dd>
+ <dt>{{jsxref("Object.prototype.__proto__")}}</dt>
+ <dd>オブジェクトがインスタンス化されたとき、プロトタイプとして使用されたオブジェクトを指します。</dd>
+ <dt>{{jsxref("Object.prototype.__noSuchMethod__")}}</dt>
+ <dd>未定義のオブジェクトメンバーがメソッドとして呼び出された際に実行される関数を定義します。</dd>
+</dl>
+</div>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<div>
+<dl>
+ <dt>{{jsxref("Object.prototype.__defineGetter__()")}}</dt>
+ <dd>指定したプロパティに、アクセスの際に実行されて戻り値を返す関数を関連付けます。</dd>
+ <dt>{{jsxref("Object.prototype.__defineSetter__()")}}</dt>
+ <dd>指定したプロパティに、設定の際に実行されてプロパティを変更する関数を関連付けます。</dd>
+ <dt>{{jsxref("Object.prototype.__lookupGetter__()")}}</dt>
+ <dd>{{jsxref("Object.prototype.__defineGetter__()", "__defineGetter__()")}} メソッドによって特定のプロパティに関連付けされた関数を返します。</dd>
+ <dt>{{jsxref("Object.prototype.__lookupSetter__()")}}</dt>
+ <dd>{{jsxref("Object.prototype.__defineSetter__()", "__defineSetter__()")}} メソッドによって特定のプロパティに関連付けされた関数を返します。</dd>
+ <dt>{{jsxref("Object.prototype.hasOwnProperty()")}}</dt>
+ <dd>指定したプロパティが、プロトタイプチェーンを通じて継承されたものではなくオブジェクトが直接持っているプロパティかどうかを示す真偽値を返します。</dd>
+ <dt>{{jsxref("Object.prototype.isPrototypeOf()")}}</dt>
+ <dd>指定したオブジェクトが、このメソッドを呼び出した元であるオブジェクトのプロトタイプチェーンにあるかどうかを示す真偽値を返します。</dd>
+ <dt>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</dt>
+ <dd>内部の <a href="/ja/docs/Web/JavaScript/Data_structures#Properties">ECMAScript [[Enumerable]] 属性</a> の設定状態を示す真偽値を返します。</dd>
+ <dt>{{jsxref("Object.prototype.toSource()")}}</dt>
+ <dd>このメソッドの呼び出し元オブジェクトを表すオブジェクトリテラルからなるソース文字列を返します。この値を使って新しいオブジェクトを作成できます。</dd>
+ <dt>{{jsxref("Object.prototype.toLocaleString()")}}</dt>
+ <dd>{{jsxref("Object.toString", "toString()")}} を呼び出します。</dd>
+ <dt>{{jsxref("Object.prototype.toString()")}}</dt>
+ <dd>指定したオブジェクトを表す文字列を返します。</dd>
+ <dt>{{jsxref("Object.prototype.unwatch()")}}</dt>
+ <dd>オブジェクトのプロパティから代入処理を監視するウォッチポイントを取り除きます。</dd>
+ <dt>{{jsxref("Object.prototype.valueOf()")}}</dt>
+ <dd>指定したオブジェクトのプリミティブ値を返します。</dd>
+ <dt>{{jsxref("Object.prototype.watch()")}}</dt>
+ <dd>オブジェクトのプロパティに代入処理を監視するウォッチポイントを追加します。</dd>
+</dl>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Object_given_undefined_and_null_types" name="Using_Object_given_undefined_and_null_types"><code>undefined</code> と <code>null</code> データ型を与えられた <code>Object</code> を使用する</h3>
+
+<p>次の例は、<code>o</code> に空の <code>Object</code> オブジェクトを格納します。</p>
+
+<pre class="brush: js notranslate">let o = new Object()
+</pre>
+
+<pre class="brush: js notranslate">let o = new Object(undefined)
+</pre>
+
+<pre class="brush: js notranslate">let o = new Object(null)
+</pre>
+
+<h3 id="Using_Object_to_create_Boolean_objects" name="Using_Object_to_create_Boolean_objects"><code>Boolean</code> オブジェクトの生成に <code>Object</code> を使用する</h3>
+
+<p>次の例は、<code>o</code> に {{jsxref("Boolean")}} オブジェクトを格納します。</p>
+
+<pre class="brush: js notranslate">// o = new Boolean(true) に同じ
+let o = new Object(true)
+</pre>
+
+<pre class="brush: js notranslate">// to o = new Boolean(false) に同じ
+let o = new Object(Boolean())
+</pre>
+
+<h3 id="Object_prototypes" name="Object_prototypes">オブジェクトのプロトタイプ</h3>
+
+<p><code>Object.prototype</code> の既存のメソッドの動作を変更する場合は、既存のロジックの前または後で独自の拡張を囲む形でコードを挿入するようにしてください。例えば、この (テストされていない) コードは、組込みロジックや誰かの拡張機能が実行される前に、条件付きで独自のロジックを実行します。</p>
+
+<p>関数が呼び出されると、呼び出す引数は配列状「変数」 <a href="/ja/docs/Web/JavaScript/Reference/Functions/arguments">arguments</a> に保持されます。例えば <code>myFn(a, b, c)</code> の呼び出しでは、myFn の本体内での引数は (a, b, c) に対応する 3 つの配列状要素を含みます。</p>
+
+<p>フックを使ってプロトタイプを変更する場合は、関数で <code>apply()</code> を呼び出すことで、<code>this</code> と引数 (呼び出し状態) を現在の動作に渡します。このパターンは、<code>Node.prototype</code> や <code>Function.prototype</code> など、どんなプロトタイプにも使えます。</p>
+
+<pre class="brush: js notranslate">var current = Object.prototype.valueOf;
+
+// Since my property "-prop-value" is cross-cutting and isn't always
+// on the same prototype chain, I want to modify Object.prototype:
+Object.prototype.valueOf = function() {
+ if (this.hasOwnProperty('-prop-value')) {
+ return this['-prop-value'];
+ } else {
+ // It doesn't look like one of my objects, so let's fall back on
+ // the default behavior by reproducing the current behavior as best we can.
+ // The apply behaves like "super" in some other languages.
+ // Even though valueOf() doesn't take arguments, some other hook may.
+ return current.apply(this, arguments);
+ }
+}
+</pre>
+
+<p>JavaScript はサブクラスオブジェクトを持っていないため、プロトタイプはオブジェクトとして機能する特定の関数の「基本クラス」オブジェクトを作成するための有用な回避策です。例えば、以下のようになります。</p>
+
+<pre class="brush: js notranslate">var Person = function(name) {
+ this.name = name;
+ this.canTalk = true;
+};
+
+Person.prototype.greet = function() {
+ if (this.canTalk) {
+ console.log('Hi, I am ' + this.name);
+ }
+};
+
+var Employee = function(name, title) {
+ Person.call(this, name);
+ this.title = title;
+};
+
+Employee.prototype = Object.create(Person.prototype);
+Employee.prototype.constructor = Employee; //If you don't set Object.prototype.constructor to Employee,
+ //it will take prototype.constructor of Person (parent).
+ //To avoid that, we set the prototype.constructor to Employee (child).
+
+
+Employee.prototype.greet = function() {
+ if (this.canTalk) {
+ console.log('Hi, I am ' + this.name + ', the ' + this.title);
+ }
+};
+
+var Customer = function(name) {
+ Person.call(this, name);
+};
+
+Customer.prototype = Object.create(Person.prototype);
+Customer.prototype.constructor = Customer; //If you don't set Object.prototype.constructor to Customer,
+ //it will take prototype.constructor of Person (parent).
+ //To avoid that, we set the prototype.constructor to Customer (child).
+
+
+var Mime = function(name) {
+ Person.call(this, name);
+ this.canTalk = false;
+};
+
+Mime.prototype = Object.create(Person.prototype);
+Mime.prototype.constructor = Mime; //If you don't set Object.prototype.constructor to Mime,
+ //it will take prototype.constructor of Person (parent).
+ //To avoid that, we set the prototype.constructor to Mime (child).
+
+
+var bob = new Employee('Bob', 'Builder');
+var joe = new Customer('Joe');
+var rg = new Employee('Red Green', 'Handyman');
+var mike = new Customer('Mike');
+var mime = new Mime('Mime');
+
+bob.greet();
+// Hi, I am Bob, the Builder
+
+joe.greet();
+// Hi, I am Joe
+
+rg.greet();
+// Hi, I am Red Green, the Handyman
+
+mike.greet();
+// Hi, I am Mike
+
+mime.greet();</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object-objects', 'Object')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクト初期化子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/is/index.html b/files/ja/web/javascript/reference/global_objects/object/is/index.html
new file mode 100644
index 0000000000..ab871c5ab4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/is/index.html
@@ -0,0 +1,125 @@
+---
+title: Object.is()
+slug: Web/JavaScript/Reference/Global_Objects/Object/is
+tags:
+ - Comparison
+ - Condition
+ - Conditional
+ - ECMAScript 2015
+ - Equality
+ - JavaScript
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/is
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Object.is()</code></strong> メソッドは 2 つの値が<a href="/ja/docs/Web/JavaScript/Equality_comparisons_and_sameness">同一値</a>であるかどうかを判定します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>Object.is(<var>value1</var>, <var>value2</var>);</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value1</var></code></dt>
+ <dd>比較する 1 つ目の値。</dd>
+ <dt><code><var>value2</var></code></dt>
+ <dd>比較する 2 つ目の値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Boolean")}} で、 2 つの引数が同一値であるかどうかを表します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Object.is()</code> は 2 つの値が<a href="/ja/docs/Web/JavaScript/Equality_comparisons_and_sameness">同一値</a>であるかどうかを判定します。2 つの値が以下の規則の一つに当てはまる場合に同一となります。</p>
+
+<ul>
+ <li>どちらも {{jsxref("undefined")}}</li>
+ <li>どちらも {{jsxref("null")}}</li>
+ <li>どちらも <code>true</code> かどちらも <code>false</code></li>
+ <li>どちらも同じ文字からなる同じ長さの文字列</li>
+ <li>どちらも同じオブジェクト</li>
+ <li>どちらも数で、
+ <ul>
+ <li>どちらも <code>+0</code></li>
+ <li>どちらも <code>-0</code></li>
+ <li>どちらも {{jsxref("NaN")}}</li>
+ <li>あるいはどちらもゼロ以外で {{jsxref("NaN")}} でなく、同じ数値を持つ</li>
+ </ul>
+ </li>
+</ul>
+
+<p>このメソッドは {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} 演算子による等値比較と同じものでは<strong>ありません</strong>。 <code>==</code> 演算子は等値性比較の前に (同じ型でなければ) 両辺に対して様々な型変換を適用します (結果、例えば <code>"" == false</code> は <code>true</code> に評価されます) が、<code>Object.is</code> は両辺どちらの値にも型変換を行いません。</p>
+
+<p>また {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}} 演算子による同値比較とも同じものでも<strong>ありません</strong>。 <code>===</code> 演算子は (そして <code>==</code> 演算子も) 数値 <code>-0</code> と <code>+0</code> は同じものとして扱い、 {{jsxref("Number.NaN")}} と {{jsxref("NaN")}} は異なるものとして扱います。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Object.is" name="Using_Object.is">Object.is の使用</h3>
+
+<pre class="brush: js notranslate">Object.is('foo', 'foo'); // true
+Object.is(window, window); // true
+
+Object.is('foo', 'bar'); // false
+Object.is([], []); // false
+
+var foo = { a: 1 };
+var bar = { a: 1 };
+Object.is(foo, foo); // true
+Object.is(foo, bar); // false
+
+Object.is(null, null); // true
+
+// 特殊なケース
+Object.is(0, -0); // false
+Object.is(-0, -0); // true
+Object.is(NaN, 0/0); // true
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">if (!Object.is) {
+  Object.defineProperty(Object, "is", {
+  value: function (x, y) {
+ // 同値アルゴリズム
+ if (x === y) { // ステップ 1 から 5、および 7 から 10
+ // ステップ 6.b から 6.e までの場合: +0 != -0
+ return x !== 0 || 1 / x === 1 / y;
+ } else {
+ // ステップ 6.a の場合: NaN == NaN
+ return x !== x &amp;&amp; y !== y;
+ }
+  }
+ });
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.is', 'Object.is')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.is")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Equality_comparisons_and_sameness">等値比較と同一性</a> — 標準搭載されている 3 つの同一性比較支援機能の比較</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/isextensible/index.html b/files/ja/web/javascript/reference/global_objects/object/isextensible/index.html
new file mode 100644
index 0000000000..048fc8733d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/isextensible/index.html
@@ -0,0 +1,103 @@
+---
+title: Object.isExtensible()
+slug: Web/JavaScript/Reference/Global_Objects/Object/isExtensible
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - JavaScript 1.8.5
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/isExtensible
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Object.isExtensible()</code></strong> メソッドは、オブジェクトが拡張可能であるか (新しいプロパティを追加することができるかどうか) を判定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-isextensible.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.isExtensible(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>チェックするオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Boolean")}} で、与えられたオブジェクトが拡張可能であるかどうかを示します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オブジェクトは既定では拡張可能です。つまり、新しいプロパティの追加が可能であり、 ({{jsxref("Object.proto", "__proto__")}} のプロパティに対応しているエンジンでは) <code>__proto__</code> プロパティを変更することができます。オブジェクトは {{jsxref("Object.preventExtensions()")}}, {{jsxref("Object.seal()")}}, {{jsxref("Object.freeze()")}} の何れかを用いる事で拡張不能に設定する事が可能です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Object.isExtensible" name="Using_Object.isExtensible">Object.isExtensible の使用</h3>
+
+<pre class="brush: js notranslate">// 新規のオブジェクトは拡張可能
+var empty = {};
+Object.isExtensible(empty); // === true
+
+// その設定は変える事が可能
+Object.preventExtensions(empty);
+Object.isExtensible(empty); // === false
+
+// seal メソッドで封印されたオブジェクトは拡張不可と定義される
+var sealed = Object.seal({});
+Object.isExtensible(sealed); // === false
+
+// freeze メソッドで凍結されたオブジェクトも拡張不可と定義される
+var frozen = Object.freeze({});
+Object.isExtensible(frozen); // === false
+</pre>
+
+<h3 id="Non-object_coercion" name="Non-object_coercion">オブジェクト以外の型強制</h3>
+
+<p>ES5 では、このメソッドの引数がオブジェクトではない場合 (プリミティブの場合)、 {{jsxref("TypeError")}} が発生します。 ES2015 以降では、オブジェクトでない引数は、それが拡張不可能な通常のオブジェクトであるかのように扱われ、単に <code>false</code> を返します。</p>
+
+<pre class="brush: js notranslate">Object.isExtensible(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.isExtensible(1);
+// false (ES2015 code)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.isextensible', 'Object.isExtensible')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.isExtensible")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.preventExtensions()")}}</li>
+ <li>{{jsxref("Object.seal()")}}</li>
+ <li>{{jsxref("Object.isSealed()")}}</li>
+ <li>{{jsxref("Object.freeze()")}}</li>
+ <li>{{jsxref("Object.isFrozen()")}}</li>
+ <li>{{jsxref("Reflect.isExtensible()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/isfrozen/index.html b/files/ja/web/javascript/reference/global_objects/object/isfrozen/index.html
new file mode 100644
index 0000000000..14526c51f8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/isfrozen/index.html
@@ -0,0 +1,167 @@
+---
+title: Object.isFrozen()
+slug: Web/JavaScript/Reference/Global_Objects/Object/isFrozen
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/isFrozen
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Object.isFrozen()</code></strong> はオブジェクトが{{jsxref("Object.freeze()", "凍結されている", "", 1)}}かどうかを判定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-isfrozen.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.isFrozen(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>確認したいオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられたオブジェクトが凍結されているかどうかを示す {{jsxref("Boolean")}}。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オブジェクトが{{jsxref("Object.isExtensible()", "拡張可能", "", 1)}}ではなく、すべてのプロパティは設定変更不可であり、そしてすべてのデータプロパティ (これはゲッターやセッターコンポーネントを持つアクセサプロパティではないものを指します) が書き込み不可である場合に、凍結されているとなります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Object.isFrozen_の使用">Object.isFrozen の使用</h3>
+
+<pre class="brush: js notranslate">// 新しいオブジェクトは拡張可能であるので、凍結されていません
+Object.isFrozen({}); // === false
+
+// 拡張可能ではない空のオブジェクトは、他に何もしなくても
+// 凍結されています
+var vacuouslyFrozen = Object.preventExtensions({});
+Object.isFrozen(vacuouslyFrozen); // === true
+
+// プロパティをひとつ持つ新しいオブジェクトも拡張可能であり、
+// それゆえ凍結されていません
+var oneProp = { p: 42 };
+Object.isFrozen(oneProp); // === false
+
+// オブジェクトを拡張不可にしても、それは凍結されません
+// なぜなら、まだプロパティが設定変更可能
+// (かつ書き込み可能) であるからです
+Object.preventExtensions(oneProp);
+Object.isFrozen(oneProp); // === false
+
+// ...しかしプロパティを削除すると、そのオブジェクトは
+// 他に何もしなくても凍結されます
+delete oneProp.p;
+Object.isFrozen(oneProp); // === true
+
+// 書き込み不可であるが設定変更可能なプロパティを持つ、
+// 拡張不可のオブジェクトは、凍結されていません
+var nonWritable = { e: 'plep' };
+Object.preventExtensions(nonWritable);
+Object.defineProperty(nonWritable, 'e', {
+ writable: false
+}); // 書き込み不可にします
+Object.isFrozen(nonWritable); // === false
+
+// プロパティを設定変更不可にすると、
+// オブジェクトは凍結されます
+Object.defineProperty(nonWritable, 'e', {
+ configurable: false
+}); // 設定変更不可にします
+Object.isFrozen(nonWritable); // === true
+
+// 設定変更不可であるが書き込み可能なプロパティを持つ、
+// 拡張不可のオブジェクトは、やはり凍結されていません
+var nonConfigurable = { release: 'the kraken!' };
+Object.preventExtensions(nonConfigurable);
+Object.defineProperty(nonConfigurable, 'release', {
+ configurable: false
+});
+Object.isFrozen(nonConfigurable); // === false
+
+// プロパティを書き込み不可にすると、オブジェクトは
+// 凍結されます
+Object.defineProperty(nonConfigurable, 'release', {
+ writable: false
+});
+Object.isFrozen(nonConfigurable); // === true
+
+// 設定変更可能なアクセサープロパティを持つ拡張不可の
+// オブジェクトは、凍結されていません
+var accessor = { get food() { return 'yum'; } };
+Object.preventExtensions(accessor);
+Object.isFrozen(accessor); // === false
+
+// ...しかしプロパティを設定変更不可にすると、
+// オブジェクトは凍結されます
+Object.defineProperty(accessor, 'food', {
+ configurable: false
+});
+Object.isFrozen(accessor); // === true
+
+// なお、オブジェクトを凍結するもっとも簡単な方法は、
+// Object.freeze を呼び出すことです
+var frozen = { 1: 81 };
+Object.isFrozen(frozen); // === false
+Object.freeze(frozen);
+Object.isFrozen(frozen); // === true
+
+// 定義によると、凍結されたオブジェクトは拡張不可です
+Object.isExtensible(frozen); // === false
+
+// また、凍結されたオブジェクトは封印されています
+Object.isSealed(frozen); // === true
+</pre>
+
+<h3 id="Non-object_coercion" name="Non-object_coercion">オブジェクト以外の型強制</h3>
+
+<p>ES5 では、このメソッドの引数がオブジェクトではない場合 (プリミティブの場合)、 {{jsxref("TypeError")}} が発生します。 ES2015 以降では、オブジェクトでない引数は、それが凍結された通常のオブジェクトであるかのように扱われ、単に <code>true</code> を返します。</p>
+
+<pre class="brush: js notranslate">Object.isFrozen(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.isFrozen(1);
+// true (ES2015 code)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.isfrozen', 'Object.isFrozen')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.isFrozen")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.freeze()")}}</li>
+ <li>{{jsxref("Object.preventExtensions()")}}</li>
+ <li>{{jsxref("Object.isExtensible()")}}</li>
+ <li>{{jsxref("Object.seal()")}}</li>
+ <li>{{jsxref("Object.isSealed()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/isprototypeof/index.html b/files/ja/web/javascript/reference/global_objects/object/isprototypeof/index.html
new file mode 100644
index 0000000000..c019b11ef9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/isprototypeof/index.html
@@ -0,0 +1,113 @@
+---
+title: Object.prototype.isPrototypeOf()
+slug: Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf
+tags:
+ - JavaScript
+ - Mehtod
+ - Object
+ - Prototype
+ - Reference
+ - isPrototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>isPrototypeOf()</strong></code> メソッドは、オブジェクトが別のオブジェクトのプロトタイプチェーンに存在するかどうかを判定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-prototype-isprototypeof.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div class="note">
+<p><code>isPrototypeOf()</code> は、{{jsxref("Operators/instanceof", "instanceof")}} 演算子とは異なります。"<code>object instanceof AFunction</code>" 式では、<code>object</code> のプロトタイプチェーンは <code>AFunction</code> 自身ではなく、<code>AFunction.prototype</code> に対して判定されます。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>prototypeObj</var>.isPrototypeOf(<var>object</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>object</var></code></dt>
+ <dd>プロトタイプチェーンの検索対象。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>呼び出されたオブジェクトがプロトタイプチェーン内に指定されたオブジェクトを持つかどうかを示す {{jsxref("Boolean")}}。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("TypeError")}}</dt>
+ <dd><code><var>prototypeObj</var></code> が undefined か null の場合、{{jsxref("TypeError")}} 発生する</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>isPrototypeOf()</code> を用いると、オブジェクトが別のオブジェクト内のプロトタイプチェーンに存在するかどうかをチェックする事ができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_isPrototypeOf" name="Using_isPrototypeOf">isPrototypeOf の使用</h3>
+
+<p>この例は、<code>baz</code> オブジェクトのプロトタイプチェーンに、<code>Baz.prototype</code> と <code>Bar.prototype</code>、<code>Foo.prototype</code>、<code>Object.prototype</code> が存在しているデモです。</p>
+
+<pre class="brush: js notranslate">function Foo() {}
+function Bar() {}
+function Baz() {}
+
+Bar.prototype = Object.create(Foo.prototype);
+Baz.prototype = Object.create(Bar.prototype);
+
+var baz = new Baz();
+
+console.log(Baz.prototype.isPrototypeOf(baz)); // true
+console.log(Bar.prototype.isPrototypeOf(baz)); // true
+console.log(Foo.prototype.isPrototypeOf(baz)); // true
+console.log(Object.prototype.isPrototypeOf(baz)); // true
+</pre>
+
+<p><code>isPrototypeOf()</code> メソッドは、{{jsxref("Operators/instanceof", "instanceof")}} 演算子と同様に、特定のプロトタイプチェーンから継承されたオブジェクトを扱うときにのみ機能するコードを持つ場合、たとえばそのオブジェクトに特定のメソッドやプロパティが存在することを保証する場合に特に便利です。</p>
+
+<p>たとえば、<code>baz</code> オブジェクトが <code>Foo.prototype</code> に由来しているか検証してみます:</p>
+
+<pre class="brush: js notranslate">if (Foo.prototype.isPrototypeOf(baz)) {
+  // do something safe
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.prototype.isprototypeof', 'Object.prototype.isPrototypeOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.isPrototypeOf")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Operators/instanceof", "instanceof")}}</li>
+ <li>{{jsxref("Object.getPrototypeOf()")}}</li>
+ <li>
+ <div>{{jsxref("Object.setPrototypeOf()")}}</div>
+ </li>
+ <li>{{jsxref("Object.prototype.__proto__")}} </li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/issealed/index.html b/files/ja/web/javascript/reference/global_objects/object/issealed/index.html
new file mode 100644
index 0000000000..1daa6cf391
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/issealed/index.html
@@ -0,0 +1,130 @@
+---
+title: Object.isSealed()
+slug: Web/JavaScript/Reference/Global_Objects/Object/isSealed
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - JavaScript 1.8.5
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/isSealed
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Object.isSealed()</code></strong> メソッドは、オブジェクトが封印されているかどうかを判定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-issealed.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.isSealed(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>確認したいオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられたオブジェクトが封印されているかどうかを示す {{jsxref("Boolean")}}。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オブジェクトが封印されている場合は <code>true</code> が、そうでない場合は <code>false</code> が返ります。オブジェクトが{{jsxref("Object.isExtensible", "拡張不可", "", 1)}}かつすべてのプロパティが設定変更不可であり、それゆえ削除できない場合 (ただし書き込み不可である必要はありません) 場合に、封印されているとなります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Object.isSealed_の使用">Object.isSealed の使用</h3>
+
+<pre class="brush: js notranslate">// 既定でオブジェクトは封印されていません
+var empty = {};
+Object.isSealed(empty); // === false
+
+// 空のオブジェクトを拡張不可にすると、
+// そのまま封印状態になります
+Object.preventExtensions(empty);
+Object.isSealed(empty); // === true
+
+// 空でないオブジェクトでは、そのプロパティをすべて設定変更不可にしない限り
+// 上記と同じにはなりません
+var hasProp = { fee: 'fie foe fum' };
+Object.preventExtensions(hasProp);
+Object.isSealed(hasProp); // === false
+
+// そこですべてのプロパティを設定変更不可にすると、
+// オブジェクトは封印状態になります
+Object.defineProperty(hasProp, 'fee', {
+  configurable: false
+});
+Object.isSealed(hasProp); // === true
+
+// オブジェクトを封印する最も簡単な方法は、
+// もちろん Object.seal です
+var sealed = {};
+Object.seal(sealed);
+Object.isSealed(sealed); // === true
+
+// 封印されたオブジェクトはその定義により、拡張できません
+Object.isExtensible(sealed); // === false
+
+// 封印されたオブジェクトは凍結されているかも
+// しれませんが、必ずしもそうではありません
+Object.isFrozen(sealed); // === true
+// すべてのプロパティが書き込み不能でもあります
+
+var s2 = Object.seal({ p: 3 });
+Object.isFrozen(s2); // === false
+// "p" は依然書き込み可能です
+
+var s3 = Object.seal({ get p() { return 0; } });
+Object.isFrozen(s3); // === true
+// アクセサプロパティでは設定変更が可能かという事柄だけになります
+</pre>
+
+<h3 id="Non-object_coercion" name="Non-object_coercion">オブジェクト以外の型強制</h3>
+
+<p>ES5 では、このメソッドの引数がオブジェクトではない場合 (プリミティブの場合)、 {{jsxref("TypeError")}} が発生します。 ES2015 以降では、オブジェクトでない引数は、それが封印された通常のオブジェクトであるかのように扱われ、単に <code>true</code> それを返します。</p>
+
+<pre class="brush: js notranslate">Object.isSealed(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.isSealed(1);
+// true (ES2015 code)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.issealed', 'Object.isSealed')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.isSealed")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.seal()")}}</li>
+ <li>{{jsxref("Object.preventExtensions()")}}</li>
+ <li>{{jsxref("Object.isExtensible()")}}</li>
+ <li>{{jsxref("Object.freeze()")}}</li>
+ <li>{{jsxref("Object.isFrozen()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/keys/index.html b/files/ja/web/javascript/reference/global_objects/object/keys/index.html
new file mode 100644
index 0000000000..2e7cc6c595
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/keys/index.html
@@ -0,0 +1,161 @@
+---
+title: Object.keys()
+slug: Web/JavaScript/Reference/Global_Objects/Object/keys
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - JavaScript 1.8.5
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/keys
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Object.keys()</strong></code> メソッドは、指定されたオブジェクトが持つプロパティの <strong>名前</strong>の配列を、通常のループで取得するのと同じ順序で返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-keys.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.keys(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>自身の列挙可能なプロパティが返されるオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられたオブジェクトのすべての列挙可能なプロパティを表す文字列の配列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Object.keys()</code> は、<code>object</code> で直接発見された列挙可能なプロパティに対応する文字列を要素とする配列を返します。プロパティの順序は、オブジェクトのプロパティをループにより手動で取得した場合と同じです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Object.keys" name="Using_Object.keys">Object.keys の使用</h3>
+
+<pre class="brush: js notranslate">// 単純な配列
+const arr = ['a', 'b', 'c'];
+console.log(Object.keys(arr)); // console: ['0', '1', '2']
+
+// オブジェクトのような配列
+const obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.keys(obj)); // console: ['0', '1', '2']
+
+// キーの順序がランダムなオブジェクトのような配列
+const anObj = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.keys(anObj)); // console: ['2', '7', '100']
+
+// getFoo は列挙可能ではないプロパティ
+const myObj = Object.create({}, {
+ getFoo: {
+ value: function () { return this.foo; }
+ }
+});
+myObj.foo = 1;
+console.log(Object.keys(myObj)); // console: ['foo']
+</pre>
+
+<p>列挙可能ではないものを含むすべてのプロパティを取得したい場合、{{jsxref("Object.getOwnPropertyNames()")}} をご覧ください。</p>
+
+<h3 id="Non-object_coercion" name="Non-object_coercion">オブジェクト以外の型変換</h3>
+
+<p>ES5 では、このメソッドへの引数がオブジェクトではない (プリミティブである) 場合、 {{jsxref("TypeError")}} が発生します。</p>
+
+<p>ES2015 以降では、オブジェクトでない引数はオブジェクトへ変換されるようになりました。</p>
+
+<pre class="brush: js notranslate">// In ES5
+Object.keys('foo'); // TypeError: "foo" is not an object
+
+Object.keys('foo');
+// ["0", "1", "2"] (ES2015 code)
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>Object.keys</code> にネイティブに対応していない環境向けに互換性を確保するには、以下のコード部品をコピーしてください。</p>
+
+<pre class="brush: js notranslate">// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
+if (!Object.keys) {
+ Object.keys = (function() {
+ 'use strict';
+ var hasOwnProperty = Object.prototype.hasOwnProperty,
+ hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),
+ dontEnums = [
+ 'toString',
+ 'toLocaleString',
+ 'valueOf',
+ 'hasOwnProperty',
+ 'isPrototypeOf',
+ 'propertyIsEnumerable',
+ 'constructor'
+ ],
+ dontEnumsLength = dontEnums.length;
+
+ return function(obj) {
+ if (typeof obj !== 'function' &amp;&amp; (typeof obj !== 'object' || obj === null)) {
+ throw new TypeError('Object.keys called on non-object');
+ }
+
+ var result = [], prop, i;
+
+ for (prop in obj) {
+ if (hasOwnProperty.call(obj, prop)) {
+ result.push(prop);
+ }
+ }
+
+ if (hasDontEnumBug) {
+ for (i = 0; i &lt; dontEnumsLength; i++) {
+ if (hasOwnProperty.call(obj, dontEnums[i])) {
+ result.push(dontEnums[i]);
+ }
+ }
+ }
+ return result;
+ };
+ }());
+}
+</pre>
+
+<p>上記のコードは IE7 において (もしかすると IE8 でも)、他のウィンドウから渡されたオブジェクトの場合、列挙不可能な key を含むことに注意してください。</p>
+
+<p>より簡単なブラウザーのポリフィルについては、<a class="external" href="http://tokenposts.blogspot.com.au/2012/04/javascript-objectkeys-browser.html">Javascript - Object.keys Browser Compatibility</a> をご覧ください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.keys', 'Object.keys')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.keys")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">列挙可能性とプロパティの所有権</a></li>
+ <li>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</li>
+ <li>{{jsxref("Object.create()")}}</li>
+ <li>{{jsxref("Object.getOwnPropertyNames()")}}</li>
+ <li>{{jsxref("Object.values()")}}</li>
+ <li>{{jsxref("Object.entries()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/object/index.html b/files/ja/web/javascript/reference/global_objects/object/object/index.html
new file mode 100644
index 0000000000..719a697a55
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/object/index.html
@@ -0,0 +1,84 @@
+---
+title: Object() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Object/Object
+tags:
+ - Constructor
+ - JavaScript
+ - Object
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/Object
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Object</code> コンストラクター</strong>は、与えられた値のオブジェクトラッパーを生成します。</p>
+
+<ul>
+ <li>その値が {{jsxref("null")}} または {{jsxref("undefined")}} である場合、からのオブジェクトを生成して返します。</li>
+ <li>その他の場合は、与えらえた値に対応する型のオブジェクトを返します。</li>
+ <li>値がすでにオブジェクトであった場合は、その値を返します。</li>
+</ul>
+
+<p>コンストラクターではない場面で <code>Object</code> が呼び出された場合は、 <code>new Object()</code> と同様に動作します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Object()
+new Object(<var>value</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>任意の値。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_a_new_Object" name="Creating_a_new_Object">新しい Object の生成</h3>
+
+<pre class="brush: js notranslate">let o = new Object()
+o.foo = 42
+
+console.log(o)
+// Object { foo: 42 }</pre>
+
+<h3 id="Using_Object_given_undefined_and_null_types" name="Using_Object_given_undefined_and_null_types">undefined および null 型が与えられた Object の使用</h3>
+
+<p>次の例は、空の <code>Object</code> オブジェクトを <code>o</code> に格納します。</p>
+
+<pre class="brush: js notranslate">let o = new Object()
+</pre>
+
+<pre class="brush: js notranslate">let o = new Object(undefined)
+</pre>
+
+<pre class="brush: js notranslate">let o = new Object(null)</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object-constructor', 'Object constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.Object")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクト初期化子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/preventextensions/index.html b/files/ja/web/javascript/reference/global_objects/object/preventextensions/index.html
new file mode 100644
index 0000000000..a9c97dd29b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/preventextensions/index.html
@@ -0,0 +1,129 @@
+---
+title: Object.preventExtensions()
+slug: Web/JavaScript/Reference/Global_Objects/Object/preventExtensions
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - JavaScript 1.8.5
+ - Method
+ - Object
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/preventExtensions
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Object.preventExtensions()</code></strong> メソッドはすでにプロパティが追加されたオブジェクトで、新しいプロパティを抑制します (すなわち、オブジェクトのさらなる拡張を抑制します)。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-preventextensions.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.preventExtensions(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>拡張を不可能にしたいオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>拡張不可能にされたオブジェクトです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>新しいプロパティを追加できる場合、オブジェクトは拡張可能です。 <code>Object.preventExtensions()</code> はオブジェクトを拡張不可能と標示することで、その時点で持っているプロパティ以外のプロパティを持たせることを不可能にします。拡張不可能なオブジェクトのプロパティは通常、依然として<em>削除</em>できることに注意してください。拡張不可能なオブジェクトへ新たにプロパティを追加しようとしても、暗黙的あるいは {{jsxref("TypeError")}} エラーを発生させて失敗します (通常は {{jsxref("Functions_and_function_scope/Strict_mode", "strict mode", "", 1)}} において、ただしこれに限定はされません)。</p>
+
+<p><code>Object.preventExtensions()</code> は、自身のプロパティの追加のみを抑制します。オブジェクトプロトタイプにプロパティを追加することは可能です。</p>
+
+<p>このメソッドは対象の <code>[[prototype]]</code> を不変にし、それ以降のあらゆる <code>[[prototype]]</code> への再代入は {{jsxref("TypeError")}} を発生します。この動作は <code>[[prototype]]</code> 内部プロパティ固有のものであり、他のプロパティは変更可能なままです。</p>
+
+<p>拡張可能なオブジェクトを拡張不可能にする方法はありますが、逆の方法はありません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Object.preventExtensions" name="Using_Object.preventExtensions">Object.preventExtensions の使用</h3>
+
+<pre class="brush: js notranslate">// Object.preventExtensions は拡張不可能にしたオブジェクトを返します
+var obj = {};
+var obj2 = Object.preventExtensions(obj);
+obj === obj2; // true
+
+// 既定でオブジェクトは拡張可能です
+var empty = {};
+Object.isExtensible(empty); // === true
+
+// この性質は変更できます
+Object.preventExtensions(empty);
+Object.isExtensible(empty); // === false
+
+// Object.defineProperty で拡張不可能なオブジェクトに
+// 新しいプロパティを追加する際、エラーが発生します
+var nonExtensible = { removable: true };
+Object.preventExtensions(nonExtensible);
+Object.defineProperty(nonExtensible, 'new', {
+ value: 8675309
+}); // TypeError が発生
+
+// 厳格モードでは、拡張不可能なオブジェクトに
+// 新たなプロパティを追加しようとすると TypeError が発生します
+function fail() {
+ 'use strict';
+ // TypeError が発生
+ nonExtensible.newProperty = 'FAIL';
+}
+fail();
+</pre>
+
+<p>拡張不可能なオブジェクトのプロトタイプは不変になります。</p>
+
+<pre class="brush: js notranslate">var fixed = Object.preventExtensions({});
+// TypeError が発生
+fixed.__proto__ = { oh: 'hai' };</pre>
+
+<h3 id="Non-object_coercion" name="Non-object_coercion">オブジェクト以外の型強制</h3>
+
+<p>ES5 では、このメソッドの引数がオブジェクトではない場合 (プリミティブの場合)、 {{jsxref("TypeError")}} が発生します。 ES2015 以降では、オブジェクトでない引数は、それが拡張不可能な通常のオブジェクトであるかのように扱われ、単にそれを返します。</p>
+
+<pre class="brush: js notranslate">Object.preventExtensions(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.preventExtensions(1);
+// 1 (ES2015 code)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.preventextensions', 'Object.preventExtensions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.preventExtensions")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.isExtensible()")}}</li>
+ <li>{{jsxref("Object.seal()")}}</li>
+ <li>{{jsxref("Object.isSealed()")}}</li>
+ <li>{{jsxref("Object.freeze()")}}</li>
+ <li>{{jsxref("Object.isFrozen()")}}</li>
+ <li>{{jsxref("Reflect.preventExtensions()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/propertyisenumerable/index.html b/files/ja/web/javascript/reference/global_objects/object/propertyisenumerable/index.html
new file mode 100644
index 0000000000..6fe7395adf
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/propertyisenumerable/index.html
@@ -0,0 +1,135 @@
+---
+title: Object.prototype.propertyIsEnumerable()
+slug: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable
+tags:
+ - JavaScript
+ - Method
+ - Object
+ - Prototype
+ - プロトタイプ
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable
+---
+<div>{{JSRef}}</div>
+
+<p> <code><strong>propertyIsEnumerable()</strong></code> メソッドは、指定されたプロパティが列挙可能で、オブジェクト自身のプロパティであることを示す Boolean を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-prototype-propertyisenumerable.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><var>obj</var>.propertyIsEnumerable(<var>prop</var>)</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>prop</code></dt>
+ <dd>調べたいプロパティの名前。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたプロパティが列挙可能であり、かつオブジェクト自体のプロパティであるかどうかを示す {{jsxref("Boolean")}} 。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>すべてのオブジェクトは <code>propertyIsEnumerable</code> メソッドを持っています。このメソッドはあるオブジェクトのプロパティが、プロトタイプチェーンを通じて継承されたプロパティを除いて {{jsxref("Statements/for...in", "for...in")}} ループで列挙可能かどうかを特定することができます。もしオブジェクトが指定されたプロパティを持っていない場合、このメソッドは <code>false</code> を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="A_basic_use_of_propertyIsEnumerable" name="A_basic_use_of_propertyIsEnumerable"><code>propertyIsEnumerable</code> の基本的な使い方</h3>
+
+<p>以下の例はオブジェクトと配列での <code>propertyIsEnumerable</code> の使い方を示しています。</p>
+
+<pre class="brush: js">var o = {};
+var a = [];
+o.prop = 'is enumerable';
+a[0] = 'is enumerable';
+
+o.propertyIsEnumerable('prop'); // true を返す
+a.propertyIsEnumerable(0); // true を返す
+</pre>
+
+<h3 id="User-defined_vs._built-in_objects" name="User-defined_vs._built-in_objects">ユーザー定義オブジェクトと組み込みオブジェクト</h3>
+
+<p>以下の例はユーザー定義プロパティと組み込みプロパティの列挙可能性を実証しています。</p>
+
+<pre class="brush: js">var a = ['is enumerable'];
+
+a.propertyIsEnumerable(0); // true を返す
+a.propertyIsEnumerable('length'); // false を返す
+
+Math.propertyIsEnumerable('random'); // false を返す
+this.propertyIsEnumerable('Math'); // false を返す
+</pre>
+
+<h3 id="Direct_versus_inherited_properties" name="Direct_versus_inherited_properties">直接のプロパティと継承されたプロパティ</h3>
+
+<pre class="brush: js">var a = [];
+a.propertyIsEnumerable('constructor'); // false を返す
+
+function firstConstructor() {
+ this.property = 'is not enumerable';
+}
+
+firstConstructor.prototype.firstMethod = function() {};
+
+function secondConstructor() {
+ this.method = function method() { return 'is enumerable'; };
+}
+
+secondConstructor.prototype = new firstConstructor;
+secondConstructor.prototype.constructor = secondConstructor;
+
+var o = new secondConstructor();
+o.arbitraryProperty = 'is enumerable';
+
+o.propertyIsEnumerable('arbitraryProperty'); // true を返す
+o.propertyIsEnumerable('method'); // true を返す
+o.propertyIsEnumerable('property'); // false を返す
+
+o.property = 'is enumerable';
+
+o.propertyIsEnumerable('property'); // true を返す
+
+// これらはすべて false を返します。これは、 (最後の2つは for-in で
+// 反復処理可能であるにもかかわらず) propertyIsEnumerable が考慮しない
+// プロトタイプであるためです。
+o.propertyIsEnumerable('prototype'); // false を返す (as of JS 1.8.1/FF3.6)
+o.propertyIsEnumerable('constructor'); // false を返す
+o.propertyIsEnumerable('firstMethod'); // false を返す
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.prototype.propertyisenumerable', 'Object.prototype.propertyIsEnumerable')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.propertyIsEnumerable")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">列挙可能性とプロパティの所有権</a></li>
+ <li>{{jsxref("Statements/for...in", "for...in")}}</li>
+ <li>{{jsxref("Object.keys()")}}</li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/proto/index.html b/files/ja/web/javascript/reference/global_objects/object/proto/index.html
new file mode 100644
index 0000000000..ac56d688c8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/proto/index.html
@@ -0,0 +1,131 @@
+---
+title: Object.prototype.__proto__
+slug: Web/JavaScript/Reference/Global_Objects/Object/proto
+tags:
+ - Deprecated
+ - ECMAScript 2015
+ - JavaScript
+ - Object
+ - Property
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/proto
+---
+<div>{{JSRef}}{{Deprecated_header}}
+<div class="blockIndicator warning">
+<p><strong>警告:</strong> オブジェクトの <code>[[Prototype]]</code> を変更することは、最新の JavaScript エンジンがプロパティアクセスを最適化する仕組み上、<strong><em>すべての</em></strong>ブラウザーや JavaScript エンジンにおいて、とても低速な操作となります。プロトタイプの継承関係を変更することによる性能上の影響は微細で広範囲にわたり、単に <code>obj.__proto__ = ...</code> という文の実行時間に留まらず、 <code>[[Prototype]]</code> が変更された<strong><em>いずれかの</em></strong>オブジェクトへのアクセスを持つ<strong><em>あらゆる</em></strong>コードに及ぶ可能性があります。性能を気にしている場合、オブジェクトの <code>[[Prototype]]</code> の変更は避けるべきです。代わりに、 {{JSxRef("Object.create()")}} を使用して意図する <code>[[Prototype]]</code> をもつオブジェクトを新たに生成してください。</p>
+</div>
+
+<div class="blockIndicator warning">
+<p><strong>警告:</strong> <code>Object.prototype.__proto__</code> は現時点でほとんどのブラウザーが対応していますが、そのプロパティの存在と正確な動作は、ウェブブラウザーの互換性を確保するためのレガシー機能として、 ECMAScript 2015 で初めて標準化されました。代わりに {{JSxRef("Object.getPrototypeOf()")}} を使用してください。</p>
+</div>
+</div>
+
+<p>{{JSxRef("Object.prototype")}} の <code>__proto__</code> プロパティは、アクセスされるオブジェクトの内部の <code>[[Prototype]]</code> (オブジェクトまたは {{JSxRef("Global_Objects/null", "null")}} のどちらか) を暴露するアクセサプロパティ (ゲッター関数とセッター関数) です。</p>
+
+<p><code>__proto__</code> の使用は、論争の的になり、推奨されていません。もともと ECMAScript 言語仕様には含まれていませんでしたが、現在のブラウザーでは結局それを実装しています。最近になって、 <code>__proto__</code> プロパティはウェブブラウザー間の互換性を保つために ECMAScript2015 の仕様で標準化されたので、将来的には対応されることになります。これは非推奨扱いで、代わりに {{JSxRef("Object.getPrototypeOf")}}/{{JSxRef("Reflect.getPrototypeOf")}} および {{JSxRef("Object.setPrototypeOf")}}/{{JSxRef("Reflect.setPrototypeOf")}} を推奨しています (とはいえ、オブジェクトの <code>[[Prototype]]</code> の設定は、性能が気になる場合には避けるべき低速の操作ですが)。</p>
+
+<p>また、<code>__proto__</code> プロパティは、生成時に <code>[[Prototype]]</code> オブジェクトを設定するために {{JSxRef("Object.create()")}} の代わりとしてもオブジェクトリテラルの定義で使用されます。参照: <a href="/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクト初期化子</a></p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>__proto__</code> ゲッター関数はオブジェクトの内部の <code>[[Prototype]]</code> の値を外部に公開します。オブジェクトリテラルを使用して生成されたオブジェクトでは、この値は {{JSxRef("Object.prototype")}} です。配列リテラルを使用して生成されたオブジェクトでは、この値は {{JSxRef("Array.prototype")}} です。関数では、この値は {{JSxRef("Function.prototype")}} です。 <code>new fun</code> を使用して生成されたオブジェクトでは、 <code>fun</code> が JavaScript の ({{JSxRef("Array")}}、{{JSxRef("Boolean")}}、{{JSxRef("Date")}}、 {{JSxRef("Number")}}、 {{JSxRef("Object")}}、 {{JSxRef("String")}} などによって提供された内蔵コンストラクター関数のうちの一つである場合は — JavaScript の進化によって追加された新しいコンストラクタを含みます)、この値は常に <code>fun.prototype</code> です。 <code>new fun</code> を使用して生成されたオブジェクトでは、 <code>fun</code> がスクリプトで定義された関数である場合、この値は常に <code>fun.prototype</code> の値です。 (すなわち、コンストラクターがほかのオブジェクトを明示的に返さない場合、または <code>fun.prototype</code> に再代入されていない場合)。</p>
+
+<p><code>__proto__</code> のセッターでオブジェクトの <code>[[Prototype]]</code> を変更することができます。オブジェクトは、 {{JSxRef("Object.isExtensible()")}} に応じて拡張可能である必要があります。拡張可能ではない場合、 {{JSxRef("Global_Objects/TypeError", "TypeError")}} が発生します。与えられた値はオブジェクト、または {{JSxRef("Global_Objects/null", "null")}} である必要があります。他の値が与えられた場合は何もしません。</p>
+
+<p>プロトタイプが継承のためにどのように使用されるかを理解するには、ガイド記事の<a href="/ja/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain">継承とプロトタイプチェーン</a>を参照してください。</p>
+
+<p><code>__proto__</code> プロパティは、ゲッター関数とセッター関数からなる {{JSxRef("Object.prototype")}} 上の簡単なアクセサープロパティです。最終的にの {{JSxRef("Object.prototype")}} を参照する <code>__proto__</code> に対してのプロパティアクセスはこのプロパティを探します。しかし、 {{JSxRef("Object.prototype")}} を参照しないアクセスはこのプロパティを探しません。 {{JSxRef("Object.prototype")}} が参照される前にいくつかの他の <code>__proto__</code> プロパティが見つけられた場合、そのプロパティは、 {{JSxRef("Object.prototype")}} 上で見つけられたプロパティを隠します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using___proto__" name="Using___proto__">__proto__ の使用</h3>
+
+<pre class="brush: js notranslate">var Circle = function () {};
+var shape = {};
+var circle = new Circle();
+
+// Set the object prototype.
+// 非推奨。 参考用です。 実際のコードで使用しないでください。
+shape.__proto__ = circle;
+
+// オブジェクトのプロトタイプを取得します。
+console.log(shape.__proto__ === circle); // true
+
+var shape = function () {};
+var p = {
+  a: function () {
+  console.log('aaa');
+  }
+};
+shape.prototype.__proto__ = p;
+
+var circle = new shape();
+circle.a(); // aaa
+console.log(shape.prototype === circle.__proto__); // true
+
+// or
+var shape = function () {};
+var p = {
+ a: function () {
+ console.log('a');
+ }
+};
+
+var circle = new shape();
+circle.__proto__ = p;
+circle.a(); // a
+console.log(shape.prototype === circle.__proto__); // false
+
+// or
+function test() {};
+test.prototype.myname = function () {
+ console.log('myname');
+};
+
+var a = new test();
+console.log(a.__proto__ === test.prototype); // true
+a.myname(); // myname
+
+
+// or
+var fn = function () {};
+fn.prototype.myname = function () {
+ console.log('myname');
+};
+
+var obj = {
+ __proto__: fn.prototype
+};
+
+obj.myname(); // myname
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-additional-properties-of-the-object.prototype-object', 'Object.prototype.__proto__')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.proto")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Object.prototype.isPrototypeOf()")}}</li>
+ <li>{{JSxRef("Object.getPrototypeOf()")}}</li>
+ <li>{{JSxRef("Object.setPrototypeOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/seal/index.html b/files/ja/web/javascript/reference/global_objects/object/seal/index.html
new file mode 100644
index 0000000000..d08991c8ce
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/seal/index.html
@@ -0,0 +1,136 @@
+---
+title: Object.seal()
+slug: Web/JavaScript/Reference/Global_Objects/Object/seal
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - JavaScript 1.8.5
+ - Method
+ - Object
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/seal
+---
+<p>{{JSRef}}</p>
+
+<p><code><strong>Object.seal()</strong></code> メソッドは、オブジェクトを封印して、新しいオブジェクトを追加することを抑制し、すべての既存のプロパティを設定変更不可にします。現存するプロパティの値は、書き込み可能である限り変更できます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-seal.html")}}</div>
+
+<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.seal(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>封印するオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>封印されたオブジェクトです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>既定では、オブジェクトは{{jsxref("Object.isExtensible()", "拡張可能", "", 1)}} (新しいプロパティを追加できる状態) です。オブジェクトを封印することで、新しいオブジェクトの追加を抑制し、すべての既存のプロパティを設定変更を不可にします。これは、オブジェクトにあるプロパティ一式を固定かつ不変にする効果があります。プロパティを設定変更不可にすることで、データプロパティからアクセサプロパティへの変換やその逆を抑制しますが、データプロパティの値の変更は抑制しません。封印されたオブジェクトでプロパティの削除や追加、あるいはデータプロパティからアクセサプロパティへの変換およびその逆を試みると、暗黙的あるいは {{jsxref("TypeError")}} エラーを発生させて (もっとも一般的には {{jsxref("Strict_mode", "strict mode", "", 1)}} において、ただしこれに限定はされません) 失敗します。</p>
+
+<p>プロトタイプチェインには手をつけず、そのままにします。ただし、 {{jsxref("Object.proto", "__proto__")}} プロパティは同様に封印されます。</p>
+
+<h3 id="Comparison_to_Object.freeze" name="Comparison_to_Object.freeze">Object.freeze() との比較</h3>
+
+<p>{{jsxref("Object.freeze()")}} で凍結されたオブジェクトに存在するプロパティは不変になります。 <code>Object.seal()</code> で封印されたオブジェクトに存在するプロパティを変更することができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Object.seal" name="Using_Object.seal">Object.seal の使用</h3>
+
+<pre class="brush: js notranslate">var obj = {
+ prop: function() {},
+ foo: 'bar'
+};
+
+// 新しいプロパティは追加でき、既存のプロパティは変更や削除ができます。
+obj.foo = 'baz';
+obj.lumpy = 'woof';
+delete obj.prop;
+
+var o = Object.seal(obj);
+
+o === obj; // true
+Object.isSealed(obj); // true
+
+// 封印されたオブジェクトで、プロパティの値の変更は依然としてできます。
+obj.foo = 'quux';
+
+// しかし、データプロパティからアクセサプロパティの変換やその逆はできません。
+Object.defineProperty(obj, 'foo', {
+ get: function() { return 'g'; }
+}); // TypeError が発生
+
+// プロパティの値の変更を除き、あらゆる変更が失敗します。
+obj.quaxxor = 'the friendly duck';
+// 暗黙的にプロパティは追加されません。
+delete obj.foo;
+// 暗黙的にプロパティは削除されません。
+
+// また、 strict モードではこれらの試みに対して TypeErrors が発生します。
+function fail() {
+ 'use strict';
+ delete obj.foo; // TypeError が発生
+ obj.sparky = 'arf'; // TypeError が発生
+}
+fail();
+
+// Object.defineProperty を用いて追加しようとしてもエラーが発生します
+Object.defineProperty(obj, 'ohai', {
+ value: 17
+}); // TypeError が発生
+Object.defineProperty(obj, 'foo', {
+ value: 'eit'
+}); // 既存のプロパティの値を変更
+</pre>
+
+<h3 id="Non-object_coercion" name="Non-object_coercion">非オブジェクトの強制</h3>
+
+<p>ES5 では、このメソッドへの引数がオブジェクトではない場合 (プリミティブである場合)、 {{jsxref("TypeError")}} になります。 ES2015 では、オブジェクトではない引数は封印された通常のオブジェクトと同様に扱われ、単純にそれを返します。</p>
+
+<pre class="brush: js notranslate">Object.seal(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.seal(1);
+// 1 (ES2015 code)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.seal', 'Object.seal')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.seal")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.isSealed()")}}</li>
+ <li>{{jsxref("Object.preventExtensions()")}}</li>
+ <li>{{jsxref("Object.isExtensible()")}}</li>
+ <li>{{jsxref("Object.freeze()")}}</li>
+ <li>{{jsxref("Object.isFrozen()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/setprototypeof/index.html b/files/ja/web/javascript/reference/global_objects/object/setprototypeof/index.html
new file mode 100644
index 0000000000..23c7660fb9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/setprototypeof/index.html
@@ -0,0 +1,213 @@
+---
+title: Object.setPrototypeOf()
+slug: Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Object
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Object.setPrototypeOf()</strong></code> メソッドは、指定されたオブジェクトのプロトタイプ (つまり、内部の <code>[[Prototype]]</code> プロパティ) を、別のオブジェクトまたは {{jsxref("null")}} に設定します。</p>
+
+<div class="warning">
+<p><strong>警告:</strong> オブジェクトの <code>[[Prototype]]</code> を変更すると、 <a href="https://mathiasbynens.be/notes/prototypes">最近の JavaScript エンジンがプロパティへのアクセスを最適化する方法</a>の特質上、すべてのブラウザーや JavaScript エンジンで、操作がとても低速になります。さらに、プロトタイプを変更することの性能への影響は細かく広範囲にわたり、 <code>Object.setPrototypeOf(...)</code> 文に費やされる時間だけではなく、 <code>[[Prototype]]</code> が変更されたすべてのオブジェクトへのアクセスを持つ<strong><em>すべて</em></strong>のコードに影響する可能性があります。</p>
+
+<p>この機能は言語の一部であるため、その機能の実装による負荷は (理念上は) エンジンの開発者によります。エンジンの開発者がこの問題に対処するまでの間、性能が気になる場合は、オブジェクトの <code>[[Prototype]]</code> を変更することは避けるべきです。代わりに、 {{jsxref("Object.create()")}} を使用して必要な <code>[[Prototype]]</code> をもつオブジェクトを生成してください。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.setPrototypeOf(<var>obj</var>, <var>prototype</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd>プロトタイプとして設定されるオブジェクト。</dd>
+ <dt><code><var>prototype</var></code></dt>
+ <dd>オブジェクトの新しいプロトタイプ (オブジェクトまたは {{jsxref("null")}})。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたオブジェクト。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>[[Prototype]]</code> が変更されるオブジェクトが {{jsxref("Object.isExtensible()")}} に応じて拡張不可の場合、 {{jsxref("Global_Objects/TypeError", "TypeError")}} 例外を投げます。<code>prototype</code> 引数がオブジェクトまたは {{jsxref("null")}} ではない場合(つまり、数値、文字列、boolean、 {{jsxref("undefined")}} のいずれか)、何もしません。さもなければ、このメソッドは <code>obj</code> の <code>[[Prototype]]</code> を新しい値に変更します。</p>
+
+<p><code>Object.setPrototypeOf()</code> は、 ECMAScript 2015 仕様書にあります。一般的には、オブジェクトのプロトタイプを設定するための適切な方法と考えられています。もっと物議を醸す{{jsxref("Object.prototype.__proto__")}} プロパティがあります。</p>
+
+<h2 id="Appending_Prototype_Chains" name="Appending_Prototype_Chains">プロトタイプチェーンの追加</h2>
+
+<p><code>Object.getPrototypeOf()</code> と {{jsxref("Object.proto", "Object.prototype.__proto__")}} の組み合わせによってプロトタイプチェーン全体を新しいプロトタイプオブジェクトに追加できます。</p>
+
+<pre class="brush: js notranslate">/**
+*** Object.appendChain(@object, @prototype)
+*
+* Appends the first non-native prototype of a chain to a new prototype.
+* Returns @object (if it was a primitive value it will transformed into an object).
+*
+*** Object.appendChain(@object [, "@arg_name_1", "@arg_name_2", "@arg_name_3", "..."], "@function_body")
+*** Object.appendChain(@object [, "@arg_name_1, @arg_name_2, @arg_name_3, ..."], "@function_body")
+*
+* Appends the first non-native prototype of a chain to the native Function.prototype object, then appends a
+* new Function(["@arg"(s)], "@function_body") to that chain.
+* Returns the function.
+*
+**/
+
+Object.appendChain = function(oChain, oProto) {
+ if (arguments.length &lt; 2) {
+ throw new TypeError('Object.appendChain - 引数が足りません');
+ }
+ if (typeof oProto !== 'object' &amp;&amp; typeof oProto !== 'string') {
+ throw new TypeError('Object.appendChain の第二引数は object か string でなければなりません');
+ }
+
+ var oNewProto = oProto,
+ oReturn = o2nd = oLast = oChain instanceof this ? oChain : new oChain.constructor(oChain);
+
+ for (var o1st = this.getPrototypeOf(o2nd);
+ o1st !== Object.prototype &amp;&amp; o1st !== Function.prototype;
+ o1st = this.getPrototypeOf(o2nd)
+ ) {
+ o2nd = o1st;
+ }
+
+ if (oProto.constructor === String) {
+ oNewProto = Function.prototype;
+ oReturn = Function.apply(null, Array.prototype.slice.call(arguments, 1));
+ this.setPrototypeOf(oReturn, oLast);
+ }
+
+ this.setPrototypeOf(o2nd, oNewProto);
+ return oReturn;
+}
+</pre>
+
+<h3 id="Usage" name="Usage">使い方</h3>
+
+<h4 id="First_example_Appending_a_chain_to_a_prototype" name="First_example_Appending_a_chain_to_a_prototype">最初の例: チェーンをプロトタイプに追加する</h4>
+
+<pre class="brush: js notranslate">function Mammal() {
+ this.isMammal = 'yes';
+}
+
+function MammalSpecies(sMammalSpecies) {
+ this.species = sMammalSpecies;
+}
+
+MammalSpecies.prototype = new Mammal();
+MammalSpecies.prototype.constructor = MammalSpecies;
+
+var oCat = new MammalSpecies('Felis');
+
+console.log(oCat.isMammal); // 'yes'
+
+function Animal() {
+ this.breathing = 'yes';
+}
+
+Object.appendChain(oCat, new Animal());
+
+console.log(oCat.breathing); // 'yes'
+</pre>
+
+<h4 id="Second_example_Transforming_a_primitive_value_into_an_instance_of_its_constructor_and_append_its_chain_to_a_prototype" name="Second_example_Transforming_a_primitive_value_into_an_instance_of_its_constructor_and_append_its_chain_to_a_prototype">二番目の例: そのコンストラクタのインスタンスにプリミティブ値を変換し、プロトタイプにそのチェーンを追加する</h4>
+
+<pre class="brush: js notranslate">function MySymbol() {
+ this.isSymbol = 'yes';
+}
+
+var nPrime = 17;
+
+console.log(typeof nPrime); // 'number'
+
+var oPrime = Object.appendChain(nPrime, new MySymbol());
+
+console.log(oPrime); // '17'
+console.log(oPrime.isSymbol); // 'yes'
+console.log(typeof oPrime); // 'object'
+</pre>
+
+<h4 id="Third_example_Appending_a_chain_to_the_Function.prototype_object_and_appending_a_new_function_to_that_chain" name="Third_example_Appending_a_chain_to_the_Function.prototype_object_and_appending_a_new_function_to_that_chain">三番目の例: チェーンを Function.prototype オブジェクトに追加し、新しい関数をそのチェーンに追加する</h4>
+
+<pre class="brush: js notranslate">function Person(sName) {
+ this.identity = sName;
+}
+
+var george = Object.appendChain(new Person('George'),
+ 'console.log("Hello guys!!");');
+
+console.log(george.identity); // 'George'
+george(); // 'Hello guys!!'
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Object.setPrototypeOf" name="Using_Object.setPrototypeOf">Object.setPrototypeOf の使用</h3>
+
+<pre class="brush: js notranslate">var dict = Object.setPrototypeOf({}, null);
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>Object.setPrototypeOf</code> が利用できない場合、より古い {{jsxref("Object.prototype.__proto__")}} プロパティを使って、簡単に定義することができます。</p>
+
+<pre class="brush: js notranslate">if (!Object.setPrototypeOf) {
+ // Chrome および FireFox で動作しますが、 IE では動作しません
+ Object.prototype.setPrototypeOf = function(obj, proto) {
+ if(obj.__proto__) {
+ obj.__proto__ = proto;
+ return obj;
+ } else {
+ // Object.create(null) のプロトタイプを返したい場合
+ var Fn = function() {
+ for (var key in obj) {
+ Object.defineProperty(this, key, {
+ value: obj[key],
+ });
+ }
+ };
+ Fn.prototype = proto;
+ return new Fn();
+ }
+ }
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.setprototypeof', 'Object.setPrototypeOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.setPrototypeOf")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect.setPrototypeOf()")}}</li>
+ <li>{{jsxref("Object.prototype.isPrototypeOf()")}}</li>
+ <li>{{jsxref("Object.getPrototypeOf()")}}</li>
+ <li>{{jsxref("Object.prototype.__proto__")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/tolocalestring/index.html b/files/ja/web/javascript/reference/global_objects/object/tolocalestring/index.html
new file mode 100644
index 0000000000..413205a593
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/tolocalestring/index.html
@@ -0,0 +1,112 @@
+---
+title: Object.prototype.toLocaleString()
+slug: Web/JavaScript/Reference/Global_Objects/Object/toLocaleString
+tags:
+ - JavaScript
+ - Method
+ - Object
+ - Prototype
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/toLocaleString
+---
+<p>{{JSRef}}</p>
+
+<p><code><strong>toLocaleString()</strong></code> メソッドは、オブジェクトを表す文字列を返します。このメソッドは、ロケール固有の目的のために派生オブジェクトによって上書きするためのものです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-prototype-tolocalestring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>obj</var>.toLocaleString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>オブジェクトを表現する文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Object")}} の <code>toLocaleString</code> は {{jsxref("Object.toString", "toString()")}} を呼び出した結果を返します。</p>
+
+<p>この関数は、すべての人が使うわけではありませんが、オブジェクトに汎用的な <code>toLocaleString</code> メソッドを与えるために提供されています。以下のリストを参照してください。</p>
+
+<h3 id="Objects_overriding_toLocaleString" name="Objects_overriding_toLocaleString">toLocaleString を上書きしているオブジェクト</h3>
+
+<ul>
+ <li>{{jsxref("Array")}}: {{jsxref("Array.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Number")}}: {{jsxref("Number.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date")}}: {{jsxref("Date.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("TypedArray")}}: {{jsxref("TypedArray.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("BigInt")}}: {{jsxref("BigInt.prototype.toLocaleString()")}}</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Array_toLocaleString_override" name="Array_toLocaleString_override">Array における toLocaleString() の上書き</h3>
+
+<p>{{jsxref("Array")}} オブジェクトでは、 {{jsxref("Array.toLocaleString", "toLocaleString()")}} を使用して配列の値を文字列として表示したり、オプションでロケール固有の識別子 (通貨記号など) を付加して表示したりすることができます。</p>
+
+<p>例を示します。</p>
+
+<pre class="brush: js notranslate">const testArray = [4, 7, 10];
+
+let euroPrices = testArray.toLocaleString('fr', { style: 'currency', currency: 'EUR'});
+// "4,00 €,7,00 €,10,00 €"</pre>
+
+<h3 id="Date_における_toLocaleString_の上書き">Date における toLocaleString() の上書き</h3>
+
+<p>{{jsxref("Date")}} オブジェクトでは、 {{jsxref("Date.toLocaleString", "toLocaleString()")}} を使用して、特定のロケールに適した日付表示を出力します。</p>
+
+<p>例を示します。</p>
+
+<pre class="brush: js notranslate">const testDate = new Date(Date.now());
+// "Date Fri May 29 2020 18:04:24 GMT+0100 (British Summer Time)"
+
+let deDate = testDate.toLocaleString('de');
+// "29.5.2020, 18:04:24"
+
+var frDate = testDate.toLocaleString('fr');
+//"29/05/2020 à 18:04:24"</pre>
+
+<h3 id="Number_における_toLocaleString_の上書き">Number における toLocaleString() の上書き</h3>
+
+<p>{{jsxref("Number")}} オブジェクトでは、 {{jsxref("Number.toLocaleString", "toLocaleString()")}} を使用して、特定のロケールに適した数値表示、例えば正しい区切り文字を使って出力します。</p>
+
+<p>例を示します。</p>
+
+<pre class="brush: js notranslate">const testNumber = 2901234564;
+// "2901234564"
+
+let deNumber = testNumber.toLocaleString('de');
+// "2.901.234.564"
+
+let frNumber = testNumber.toLocaleString('fr');
+// "2 901 234 564"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.prototype.tolocalestring', 'Object.prototype.toLocaleString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.toLocaleString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/tosource/index.html b/files/ja/web/javascript/reference/global_objects/object/tosource/index.html
new file mode 100644
index 0000000000..691ea3adda
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/tosource/index.html
@@ -0,0 +1,131 @@
+---
+title: Object.prototype.toSource()
+slug: Web/JavaScript/Reference/Global_Objects/Object/toSource
+tags:
+ - JavaScript
+ - Method
+ - Non-standard
+ - Object
+ - Obsolete
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource
+---
+<div>{{JSRef}} {{obsolete_header}}</div>
+
+<p><strong><code>toSource()</code></strong> メソッドは、オブジェクトのソースコードを表す文字列を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Object.toSource();
+<var>obj</var>.toSource();</pre>
+
+<h3 id="Parameters" name="Parameters">返値</h3>
+
+<p>オブジェクトのソースコードを表す文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>toSource()</code> メソッドは以下の値を返します。</p>
+
+<ul>
+ <li>組み込みの {{jsxref("Object")}} オブジェクトに対しては、 <code>toSource()</code> はソースコードが利用できないことを示す次の文字列を返します。
+
+ <pre class="brush: js notranslate">function Object() {
+ [native code]
+}
+</pre>
+ </li>
+ <li>{{jsxref("Object")}} のインスタンスに対しては、<code>toSource()</code> はソースコードを表す文字列を返します。</li>
+</ul>
+
+<p>デバッグ時に <code>toSource()</code> を呼び出して、オブジェクトの内容を調べることができます。</p>
+
+<h3 id="Overriding_the_toSource_method" name="Overriding_the_toSource_method">toSource() メソッドのオーバーライド</h3>
+
+<p>オブジェクトが <code>toSource()</code> メソッドをオーバーライドしても安全です。例えば次のコードを見てください。</p>
+
+<pre class="brush: js notranslate">function Person(name) {
+ this.name = name;
+}
+
+Person.prototype.toSource = function Person_toSource() {
+ return 'new Person(' + uneval(this.name) + ')';
+};
+
+console.log(new Person('Joe').toSource()); // ---&gt; new Person("Joe")
+</pre>
+
+<h3 id="Built-in_toSource_methods" name="Built-in_toSource_methods">組み込み toSource() メソッド</h3>
+
+<p>コア JavaScript のそれぞれの型は独自の <code>toSource()</code> メソッドを持っています。これらのオブジェクトの例を示します。</p>
+
+<ul>
+ <li>{{jsxref("Array.prototype.toSource()")}} — {{jsxref("Array")}} オブジェクト</li>
+ <li>{{jsxref("Boolean.prototype.toSource()")}} — {{jsxref("Boolean")}} オブジェクト</li>
+ <li>{{jsxref("Date.prototype.toSource()")}} — {{jsxref("Date")}} オブジェクト</li>
+ <li>{{jsxref("Function.prototype.toSource()")}} — {{jsxref("Function")}} オブジェクト</li>
+ <li>{{jsxref("Number.prototype.toSource()")}} — {{jsxref("Number")}} オブジェクト</li>
+ <li>{{jsxref("RegExp.prototype.toSource()")}} — {{jsxref("RegExp")}} オブジェクト</li>
+ <li>{{jsxref("String.prototype.toSource()")}} — {{jsxref("String")}} オブジェクト</li>
+ <li>{{jsxref("Symbol.prototype.toSource()")}} — {{jsxref("Symbol")}} オブジェクト</li>
+ <li><code>Math.toSource()</code> — 文字列 "Math" を返す。</li>
+</ul>
+
+<h3 id="Limitations_on_cyclical_objects" name="Limitations_on_cyclical_objects">循環オブジェクトの正弦</h3>
+
+<p>再帰的にリンクされたリストや双方向に移動可能なツリーなど、自分自身への参照を含むオブジェクトの場合、 <code>toSource()</code> は Firefox 24 のように自己参照を再生成しません。例えば、次のようになります。</p>
+
+<pre class="brush: js notranslate">var obj1 = {};
+var obj2 = { a: obj1 };
+obj1.b = obj2;
+
+console.log('Cyclical: ' + (obj1.b.a == obj1));
+
+var objSource = obj1.toSource(); // returns "({b:{a:{}}})"
+
+obj1 = eval(objSource);
+
+console.log('Cyclical: ' + (obj1.b.a == obj1));
+</pre>
+
+<p>循環構造が採用されていて <code>toSource()</code> が必要な場合、オブジェクトはコンストラクターへの参照を使用するか、無名関数を提供するかのいずれかの方法で、 <code>toSource()</code> へのオーバーライドを提供しなければなりません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="Using_toSource" name="Using_toSource">toSource() の使用</h3>
+
+<p>次のコードは <code>Dog</code> オブジェクト型を定義して <code>theDog</code>、すなわち <code>Dog</code> 型のオブジェクトを生成します。</p>
+
+<pre class="brush: js notranslate">function Dog(name, breed, color, sex) {
+ this.name = name;
+ this.breed = breed;
+ this.color = color;
+ this.sex = sex;
+}
+
+theDog = new Dog('Gabby', 'Lab', 'chocolate', 'female');
+</pre>
+
+<p><code>toSource()</code> メソッドを <code>theDog</code> に対して呼び出すと、そのオブジェクトを定義する JavaScript のソースが表示されます。</p>
+
+<pre class="brush: js notranslate">theDog.toSource();
+// returns ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>標準の一部ではありません。 JavaScript 1.3 で実装されました。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.toSource")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/tostring/index.html b/files/ja/web/javascript/reference/global_objects/object/tostring/index.html
new file mode 100644
index 0000000000..a152802a58
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/tostring/index.html
@@ -0,0 +1,169 @@
+---
+title: Object.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/Object/toString
+tags:
+ - JavaScript
+ - Method
+ - Object
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/toString
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>toString()</strong></code> メソッドは、オブジェクトを表す文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-prototype-tostring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>obj</var>.toString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>オブジェクトを表す文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>すべてのオブジェクトは <code>toString</code> メソッドを持ち、オブジェクトが文字列値として表される場面や、文字列が期待される構文で参照されたときに自動的に呼び出されます。既定で、 <code>toString()</code> メソッドは <code>Object</code> の子孫にあたるあらゆるオブジェクトに継承されています。このメソッドがカスタムオブジェクト中で上書きされていない場合、 <code>toString()</code> は "<code>[object <var>type</var>]</code>" という文字列を返します (<code><var>type</var></code> は そのオブジェクトの型)。以下のコードがこれを例示しています。</p>
+
+<pre class="brush: js notranslate">const o = new Object();
+o.toString(); // [object Object] を返す
+</pre>
+
+<div class="note">
+<p><strong>注:</strong> JavaScript 1.8.5 から、 <code>toString()</code> を {{jsxref("null")}} に対して呼び出した場合には <code>[object <em>Null</em>]</code> を、 {{jsxref("undefined")}} に対して呼び出した場合には <code>[object <em>Undefined</em>]</code> を返すようになり、これは ECMAScript 5<sup>th</sup> Edition とその後のエラッタによって定義されました。</p>
+
+<p><a href="#Using_toString_to_detect_object_class">toString() を使用したオブジェクトクラスの検出</a>を参照してください。</p>
+</div>
+
+<h2 id="Parameters" name="Parameters">引数</h2>
+
+<p>Number と BigInt の <code>toString()</code> は、オプションの引数 <code>radix</code> で基数の値を取り、最小値は2で最大値は36です。</p>
+
+<p><code>radix</code> を使用すると、十進数 (1,2,3,4,5,.........) を他の基数の数字に変換することができます。以下の例では十進数を二進数 (バイナリ) に変換しています。</p>
+
+<pre class="notranslate">let baseTenInt = 10;
+console.log(baseTenInt.toString(2));
+// 期待される結果は "1010"
+</pre>
+
+<p>BigInt についても同じです。</p>
+
+<pre class="brush: js notranslate">let bigNum = BigInt(20);
+console.log(bigNum.toString(2));
+// 期待される結果は "10100"</pre>
+
+<p>よくある基数としては次のものがあります。</p>
+
+<ul>
+ <li>2 は<a href="https://ja.wikipedia.org/wiki/%E4%BA%8C%E9%80%B2%E6%B3%95" rel="noopener">二進数</a>になります。</li>
+ <li>8 は<a href="https://ja.wikipedia.org/wiki/%E5%85%AB%E9%80%B2%E6%B3%95" rel="noopener">八進数</a>になります。</li>
+ <li>10 は <a href="https://ja.wikipedia.org/wiki/%E5%8D%81%E9%80%B2%E6%B3%95" rel="noopener">十真数</a>になります。</li>
+ <li>16 は <a href="https://ja.wikipedia.org/wiki/%E5%8D%81%E5%85%AD%E9%80%B2%E6%B3%95" rel="noopener">十六進数</a>になります。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Overriding_the_default_toString_method" name="Overriding_the_default_toString_method">既定の toString メソッドの上書き</h3>
+
+<p>既定の <code>toString()</code> メソッドに代わって呼び出される関数を作ることができます。 <code>toString()</code> メソッドは引数を取らず、文字列を返す必要があります。 <code>toString()</code> メソッドを作成した場合は好きな文字列を返すことができますが、オブジェクトに関する情報を伝えるのが一番役に立つでしょう。</p>
+
+<p>以下のコードは <code>Dog</code> オブジェクト型を定義し、 <code>Dog</code> 型のオブジェクト <code>theDog</code> を生成しています。</p>
+
+<pre class="brush: js notranslate">function Dog(name, breed, color, sex) {
+ this.name = name;
+ this.breed = breed;
+ this.color = color;
+ this.sex = sex;
+}
+
+theDog = new Dog('Gabby', 'Lab', 'chocolate', 'female');
+</pre>
+
+<p>このカスタムオブジェクト上で <code>toString()</code> メソッドを呼び出した場合、メソッドは {{jsxref("Object")}} から継承された既定値を返します。</p>
+
+<pre class="brush: js notranslate">theDog.toString(); // [object Object] を返す
+</pre>
+
+<p>以下のコードでは、 <code>dogToString()</code> を生成および割り当てし、既定の <code>toString()</code> メソッドを上書きします。この関数はオブジェクトの <code>name</code>, <code>breed</code>, <code>color</code>, <code>sex</code> を "<code>property = value;</code>" の形で含む文字列を生成します。</p>
+
+<pre class="brush: js notranslate">Dog.prototype.toString = function dogToString() {
+ const ret = 'Dog ' + this.name + ' is a ' + this.sex + ' ' + this.color + ' ' + this.breed;
+ return ret;
+}
+</pre>
+
+<p>または、 ES6 の {{jsxref("Template_literals", "テンプレート文字列", "", 1)}}を使用した例です。</p>
+
+<pre class="brush: js notranslate">Dog.prototype.toString = function dogToString() {
+ return `Dog ${this.name} is a ${this.sex} ${this.color} ${this.breed}`;
+}
+</pre>
+
+<p>前者のコードの中で、 <code>theDog</code> が文字列の文脈で使用されるたびに、 JavaScript は自動的に <code>dogToString()</code> 関数を呼び出し、以下の文字列を返します。</p>
+
+<pre class="brush: js notranslate">"Dog Gabby is a female chocolate Lab"
+</pre>
+
+<h3 id="Using_toString_to_detect_object_class" name="Using_toString_to_detect_object_class">toString() を使用したオブジェクトクラスの判別</h3>
+
+<p><code>toString()</code> はすべてのオブジェクトに対し、(既定では) そのクラスを得るために使用することができます。</p>
+
+<p>すべてのオブジェクトで <code>Object.prototype.toString()</code> を使うためには、 {{jsxref("Function.prototype.call()")}} または {{jsxref("Function.prototype.apply()")}} を、第1引数 (<code>thisArg</code>) に調べたいオブジェクトを渡して呼び出す必要があります。</p>
+
+<pre class="brush: js notranslate">const toString = Object.prototype.toString;
+
+toString.call(new Date); // [object Date]
+toString.call(new String); // [object String]
+toString.call(Math); // [object Math]
+
+// Since JavaScript 1.8.5
+toString.call(undefined); // [object Undefined]
+toString.call(null); // [object Null]
+</pre>
+
+<p>このような <code>toString()</code> の使用は信頼できません。オブジェクトは <code>Object.prototype.toString()</code> の動作を {{jsxref("Symbol.toStringTag")}} プロパティを定義することで変更でき、それによって次のように予想外の動作になります。</p>
+
+<pre class="brush: js notranslate">const myDate = new Date();
+Object.prototype.toString.call(myDate); // [object Date]
+
+myDate[Symbol.toStringTag] = 'myDate';
+Object.prototype.toString.call(myDate); // [object myDate]
+
+Date.prototype[Symbol.toStringTag] = 'prototype polluted';
+Object.prototype.toString.call(new Date()); // [object prototype polluted]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.prototype.tostring', 'Object.prototype.toString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.toString")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toSource()")}}</li>
+ <li>{{jsxref("Object.prototype.valueOf()")}}</li>
+ <li>{{jsxref("Number.prototype.toString()")}}</li>
+ <li>{{jsxref("Symbol.toPrimitive")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/valueof/index.html b/files/ja/web/javascript/reference/global_objects/object/valueof/index.html
new file mode 100644
index 0000000000..e35464da62
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/valueof/index.html
@@ -0,0 +1,120 @@
+---
+title: Object.prototype.valueOf()
+slug: Web/JavaScript/Reference/Global_Objects/Object/valueOf
+tags:
+ - JavaScript
+ - Method
+ - Object
+ - Prototype
+ - indexof
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/valueOf
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>valueOf()</code></strong> メソッドは、指定されたオブジェクトのプリミティブな値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-prototype-valueof.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>object</var>.valueOf()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたオブジェクトのプリミティブ値を返します。</p>
+
+<div class="blockIndicator note">
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus">(単項) プラス符号</a>を <code>valueOf</code> の省略形として使用することができる場合があります。例えば、 <code>+new Number()</code> などです。<a href="#Using_unary_plus">単項プラスの使用</a>も参照してください。</p>
+</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>JavaScript は <code>valueOf</code> メソッドを、オブジェクトをプリミティブな値に変換するときに呼び出します。あなたが自分で <code>valueOf</code> メソッドを実行する必要はほとんどなく、プリミティブな値が期待される場面にオブジェクトが出くわしたとき JavaScript が自動的に実行します。</p>
+
+<p>既定で、 <code>valueOf</code> メソッドは <code>Object</code> の子孫にあたるあらゆるオブジェクトに継承されています。全ての組み込みコアオブジェクトは適切な値を返すためにこのメソッドを上書きしています。もしオブジェクトがプリミティブな値を持たない場合、 <code>valueOf</code> はオブジェクト自身を返します。</p>
+
+<p>あなたのコードで組み込みオブジェクトをプリミティブな値にするために <code>valueOf</code> を呼ぶことができます。また、カスタムオブジェクトを作成した時に <code>Object.prototype.valueOf()</code> を上書きしてデフォルトの <code>Object</code> のメソッドの代わりにカスタムメソッドを呼び出すようにすることができます。</p>
+
+<h3 id="Overriding_valueOf_for_custom_objects" name="Overriding_valueOf_for_custom_objects">カスタムオブジェクトでの valueOf の上書き</h3>
+
+<p>既定の <code>valueOf</code> メソッドに代わって呼び出される関数を作ることができます。その関数は引数を取ってはなりません。</p>
+
+<p><code>MyNumberType</code> というオブジェクト型があって、それに <code>valueOf</code> メソッドを作りたいとしましょう。以下のコードはユーザー定義関数をオブジェクトの <code>valueOf</code> メソッドに代入しています。</p>
+
+<pre class="brush: js notranslate">MyNumberType.prototype.valueOf = function() { return customPrimitiveValue; };</pre>
+
+<p>上のコードにより、 <code>MyNumberType</code> 型のオブジェクトがプリミティブな値で表されるべき文脈では常に、 JavaScript は自動的に上のコードで定義された関数を呼び出します。</p>
+
+<p>オブジェクトの <code>valueOf</code> メソッドはたいてい JavaScript によって実行されますが、あなた自身も以下のように実行できます。</p>
+
+<pre class="brush: js notranslate"><var>myNumberType</var>.valueOf()</pre>
+
+<div class="note">
+<p><strong>注:</strong>文字列型の文脈にあるオブジェクトは {{jsxref("Object.toString", "toString()")}} メソッドを通じて変換されますが、これは {{jsxref("String")}} オブジェクトが <code>valueOf</code> を使って文字列型に変換されるのとは違います。すべてのオブジェクトは、 "<code>[object <em>type</em>]</code>" としか出力されないかもしれませんが、文字列変換できます。しかし多くのオブジェクトは数値や真偽値や関数には変換できません。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_valueOf_on_custom_types" name="Using_valueOf_on_custom_types">カスタム型での valueOf の使用</h3>
+
+<pre class="brush: js notranslate">function MyNumberType(n) {
+ this.number = n;
+}
+
+MyNumberType.prototype.valueOf = function() {
+ return this.number;
+};
+
+var myObj = new MyNumberType(4);
+myObj + 3; // 7
+</pre>
+
+<h3 id="Using_unary_plus" name="Using_unary_plus">単項プラスの使用</h3>
+
+<pre class="brush: js notranslate">+"5" // 5 (文字列から数値へ)
++"" // 0 (文字列から数値へ)
++"1 + 2" // NaN (評価不能)
++new Date() // (new Date()).getTime() と同じ
++"foo" // NaN (文字列から数値へ)
++{} // NaN
++[] // 0 (toString() は空の文字列リストを返す)
++[1] // 1
++[1,2] // NaN
++new Set([1]) // NaN
++BigInt(1) // Uncaught TypeError: Cannot convert a BigInt value to a number
++undefined // NaN
++null // 0
++true // 1
++false // 0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.prototype.valueof', 'Object.prototype.valueOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.valueOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toString()")}}</li>
+ <li>{{jsxref("parseInt", "parseInt()")}}</li>
+ <li>{{jsxref("Symbol.toPrimitive")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/object/values/index.html b/files/ja/web/javascript/reference/global_objects/object/values/index.html
new file mode 100644
index 0000000000..d016cb025c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/object/values/index.html
@@ -0,0 +1,98 @@
+---
+title: Object.values()
+slug: Web/JavaScript/Reference/Global_Objects/Object/values
+tags:
+ - JavaScript
+ - Method
+ - Object
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/values
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><code><strong>Object.values()</strong></code> メソッドは、指定されたオブジェクトが持つ列挙可能なプロパティの値を、 {{jsxref("Statements/for...in", "for...in")}} ループで提供される場合と同じ順序で配列にして返します。 (違いは、 <code>for...in</code> ループではプロパティチェーン上のプロパティも同様に列挙するという点だけです。)</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-values.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Object.values(<var>obj</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>obj</var></code></dt>
+ <dd> 返されることになる列挙可能な自身のプロパティの値を持つオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられたオブジェクトが所有する列挙可能なプロパティの値が入った配列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Object.values()</code> は、<code>object</code> に直接存在する列挙可能な値が配列要素の文字列に対応した配列を返します。プロパティの順序はマニュアル操作でオブジェクト内のプロパティに対してループさせた時の順序と同じになります。</p>
+
+<h2 id="Examples" name="Examples">使用例</h2>
+
+<pre class="brush: js">const obj = { foo: 'bar', baz: 42 };
+console.log(Object.values(obj)); // ['bar', 42]
+
+// 配列風オブジェクト
+const arrayLikeObj1 = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.values(arrayLikeObj1 )); // ['a', 'b', 'c']
+
+// ランダムなキー順序を持つ配列風オブジェクト
+// 数値のキーを使用すると、値はキーの番号順に返される
+const arrayLikeObj2 = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.values(arrayLikeObj2 )); // ['b', 'c', 'a']
+
+// 列挙可能でないプロパティ getFoo がある
+const my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
+my_obj.foo = 'bar';
+console.log(Object.values(my_obj)); // ['bar']
+
+// オブジェクトでない引数はオブジェクトへと型強制される
+console.log(Object.values('foo')); // ['f', 'o', 'o']
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>Object.values</code> に対応していない古い環境と互換性を持たせる場合は、 <a href="https://github.com/tc39/proposal-object-values-entries">tc39/proposal-object-values-entries</a> や <a href="https://github.com/es-shims/Object.values">es-shims/Object.values</a> 内にポリフィルがあります。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.values', 'Object.values')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Object.values")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">プロパティの列挙可能性と所有権</a></li>
+ <li>{{jsxref("Object.keys()")}}</li>
+ <li>{{jsxref("Object.entries()")}}</li>
+ <li>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</li>
+ <li>{{jsxref("Object.create()")}}</li>
+ <li>{{jsxref("Object.getOwnPropertyNames()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/parallelarray/index.html b/files/ja/web/javascript/reference/global_objects/parallelarray/index.html
new file mode 100644
index 0000000000..192b09e3f4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/parallelarray/index.html
@@ -0,0 +1,59 @@
+---
+title: ParallelArray
+slug: Web/JavaScript/Reference/Global_Objects/ParallelArray
+tags:
+ - JavaScript
+ - Obsolete
+ - ParallelArray
+translation_of: Archive/Web/ParallelArray
+---
+<div>
+<div>{{jsSidebar("Objects")}}{{obsolete_header}}</div>
+</div>
+
+<div class="note">p&gt;<strong>ノート:</strong> このオブジェクトは Firefox 17 で実装され {{ Gecko(29) }} から削除されました。現在は Nightly チャネルでのみ ParallelJS (PJS) を使用可能です ({{ bug(944074) }})。</div>
+
+<p><strong>ParallelArray</strong> の目標は、ウェブアプリケーション上でデータ並列性を実現することです。ParallelArray 上で利用可能な高階関数は並列的に実行されます(ただし、並列的に実行できない場合は必要に応じて直列実行にフォールバックします)。並列実行性を保証したい場合には、Javascript の機能のうち、<a href="/en-US/docs/ParallelizableJavaScriptSubset" title="/en-US/docs/ParallelizableJavaScriptSubset">Firefox がサポートする並列可能なサブセット</a>のみを利用するようにすることが推奨されています。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">new ParallelArray()
+new ParallelArray([element0, element1, ...])
+new ParallelArray(arrayLength, elementalFunction)</pre>
+
+<h2 id="ParallelArray_インスタンス"><code>ParallelArray</code> インスタンス</h2>
+
+<h3 id="プロパティ">プロパティ</h3>
+
+<dl>
+ <dt>length</dt>
+ <dd><code>ParallelArray</code>の要素の数</dd>
+</dl>
+
+<h3 id="メソッド">メソッド</h3>
+
+<dl>
+ <dt>map</dt>
+ <dt>reduce</dt>
+ <dt>scan</dt>
+ <dt>scatter</dt>
+ <dt>filter</dt>
+ <dt>flatten</dt>
+ <dt>partition</dt>
+ <dt>get</dt>
+</dl>
+
+<h2 id="例">例</h2>
+
+<h3 id="例_並列的に_map_処理を行う">例: 並列的に <code>map</code> 処理を行う</h3>
+
+<pre class="brush: js">var p = new ParallelArray([0, 1, 2, 3, 4]);
+var m = p.map(function (v) {
+ return v + 1;
+});</pre>
+
+<h2 id="参考文献">参考文献</h2>
+
+<ul>
+ <li><a href="http://wiki.ecmascript.org/doku.php?id=strawman:data_parallelism" title="http://wiki.ecmascript.org/doku.php?id=strawman:data_parallelism">Ecmascript ParallelArray strawman</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/parsefloat/index.html b/files/ja/web/javascript/reference/global_objects/parsefloat/index.html
new file mode 100644
index 0000000000..97c257bac7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/parsefloat/index.html
@@ -0,0 +1,112 @@
+---
+title: parseFloat()
+slug: Web/JavaScript/Reference/Global_Objects/parseFloat
+tags:
+ - JavaScript
+ - Method
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/parseFloat
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p><span class="seoSummary"><code><strong>parseFloat()</strong></code> 関数は、引数を (必要に応じてまず文字列に変換してから) 解釈し、浮動小数点値を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-parsefloat.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">parseFloat(<var>string</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>string</var></code></dt>
+ <dd>解釈する値。この引数が文字列でない場合、抽象操作 <code><a href="https://tc39.es/ecma262/#sec-tostring">ToString</a></code> を用いて文字列に変換されます。この引数では先頭の{{glossary("whitespace", "ホワイトスペース")}}は無視されます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された <code><var>string</var></code> を解釈した浮動小数点値です。</p>
+
+<p>または、最初のホワイトスペース以外の文字が数値に変換できなかった場合は {{jsxref("NaN")}} です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>parseFloat</code> は最上位関数であり、どのオブジェクトのメソッドでもありません。</p>
+
+<ul>
+ <li><code>parseFloat</code> が正の符号 (<code>+</code>)、負の符号 (<code>-</code> U+002D HYPHEN-MINUS)、数値 (<code>0</code>–<code>9</code>)、小数点 (<code>.</code>)、指数記号 (<code>e</code> または <code>E</code>) 以外の文字に遭遇したら、その文字の前までの値を返し、無効な文字とそれ以降の文字を無視します。</li>
+ <li><em>2番目</em>の小数点に遭遇した場合も、解析を停止します (その位置より前までの文字は解析されます)。</li>
+ <li>引数にある前後の空白は無視されます。</li>
+ <li>引数の最初の文字が数値に変換できない場合 (上記のいずれでもない場合), <code>parseFloat</code> は {{jsxref("NaN")}} を返します。</li>
+ <li><code>parseFloat</code> は {{jsxref("Infinity")}} を解析し、返すことができます。</li>
+ <li><code>parseFloat</code> は {{jsxref("BigInt")}} の構文を {{jsxref("Number", "Numbers")}} に変換し、精度は下がります。これは最後の <code>n</code> の文字が破棄されるからです。</li>
+</ul>
+
+<p>より厳密な構文解析には {{jsxref("Number", "Number(value)")}} を検討してください。これは、引数のどこかに無効な文字があると {{jsxref("NaN")}} に変換します。</p>
+
+<p><code>parseFloat</code> は {{jsxref("Object.toString", "toString")}} または {{jsxref("Object.valueOf", "valueOf")}} メソッドが定義されているオブジェクトを解析することもできます。返値は <code>parseFloat</code> がこれらのメソッドの返値で呼び出された場合と同じです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="parseFloat_returning_a_number" name="parseFloat_returning_a_number">数値を返す <code>parseFloat</code></h3>
+
+<p>以下の例はすべて <code>3.14</code> を返します。</p>
+
+<pre class="brush: js notranslate">parseFloat(3.14);
+parseFloat('3.14');
+parseFloat(' 3.14 ');
+parseFloat('314e-2');
+parseFloat('0.0314E+2');
+parseFloat('3.14some non-digit characters');
+parseFloat({ toString: function() { return "3.14" } });
+</pre>
+
+<h3 id="parseFloat_returning_NaN" name="parseFloat_returning_NaN"><code>NaN</code> を返す <code>parseFloat</code></h3>
+
+<p>以下の例は <code>NaN</code> を返します。</p>
+
+<pre class="brush: js notranslate">parseFloat('FF2');
+</pre>
+
+<h3 id="parseFloat_and_BigInt" name="parseFloat_and_BigInt"><code>parseFloat</code> と <code>BigInt</code></h3>
+
+<p>以下の例はどちらも <code>900719925474099300</code> を返します。 float として表現できないほど整数が大きいので、精度が失われます。</p>
+
+<pre class="brush: js notranslate">parseFloat(900719925474099267n);
+parseFloat('900719925474099267n');
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-parsefloat-string', 'parseFloat')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.parseFloat")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("parseInt", "parseInt()")}}</li>
+ <li>{{jsxref("Number.parseFloat()")}}</li>
+ <li>{{jsxref("Number.parseInt()")}}</li>
+ <li>{{jsxref("Number.toFixed()")}}</li>
+ <li>{{jsxref("isNaN", "isNaN()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/parseint/index.html b/files/ja/web/javascript/reference/global_objects/parseint/index.html
new file mode 100644
index 0000000000..345b37af38
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/parseint/index.html
@@ -0,0 +1,226 @@
+---
+title: parseInt()
+slug: Web/JavaScript/Reference/Global_Objects/parseInt
+tags:
+ - JavaScript
+ - Method
+ - Reference
+ - parseInt
+translation_of: Web/JavaScript/Reference/Global_Objects/parseInt
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p><code><strong>parseInt()</strong></code> は、文字列の引数を解析し、指定された<a href="https://ja.wikipedia.org/wiki/%E5%9F%BA%E6%95%B0">基数</a> (数学的記数法の底) の整数値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-parseint.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">parseInt(<var>string</var> [, <var>radix</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>string</var></code></dt>
+ <dd>解析する値。この引数が文字列でない場合、抽象操作 <code><a href="https://tc39.es/ecma262/#sec-tostring">ToString</a></code> を用いて文字列に変換されます。この引数では先頭の{{glossary("whitespace", "ホワイトスペース")}}は無視されます。</dd>
+ <dt><code><var>radix</var></code><var> {{optional_inline}}</var></dt>
+ <dd><code>2</code> から <code>36</code> までの整数で、<code><var>string</var></code> の<em>基数</em> (数学的記数法の底) を表します。これは既定値が <code>10</code> では<strong><em>ない</em></strong>ので注意してください。</dd>
+ <dd class="blockIndicator warning"><a href="#Description">下記の解説</a>では、<code><var>radix</var></code> が提供されなかった場合に何が起こるかをもっと詳細に説明しています。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された <code><var>string</var></code> を解析した整数値です。</p>
+
+<p>また、下記の場合は {{jsxref("NaN")}} が返されます。</p>
+
+<ul>
+ <li><code><var>radix</var></code> が <code>2</code> よりも小さいか <code>36</code> よりも大きい、または r</li>
+ <li>最初のホワイトスペース以外の文字が数値に変換できない。</li>
+</ul>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>parseInt</code> 関数は第1引数を文字列に変換し、解析したうえで、整数または <code>NaN</code> を返します。</p>
+
+<p>返値は <code>NaN</code> でない場合は、第1引数を指定された <code><var>radix</var></code> で数値として解釈した整数値になります。(例えば、<code><var>radix</var></code> が <code>10</code> であれば 10進数からの変換で、<code>8</code> であれば 8進数からの変換で、<code>16</code> であれば 16進数からの変換、などです。)</p>
+
+<p><code>10</code> 以上の基数については、<code>9</code> より大きい数字はアルファベットで示されます。たとえば、16進数(基数 <code>16</code>) では <code>A</code> から <code>F</code> が用いられます。</p>
+
+<p><code>parseInt</code> 関数は指定された <code>radix</code> における数字ではない文字に出会うと、それ以降の文字を無視し、その時点で解析された整数値を返します。<code>parseInt</code> は数値を整数に切り捨てます。前後に空白があっても構いません。</p>
+
+<p>数値によっては <code>e</code> の文字を文字列表現の中で使用しますので (例えば <strong><code>6.022e23</code></strong> は 6.022 × 10<sup>23</sup> を表します)、<code>parseInt</code> を使用して数値を切り捨てると、とても大きな数字やとても小さな数字を使用する際に予期しない結果を生み出すことがあります。<code>parseInt</code> を {{jsxref("Math.floor()")}} の代用として使うべきでは<em>ありません</em>。</p>
+
+<p><code>parseInt</code> は 2 つの符号を正確に理解します。<code>+</code> は正の符号で、<code>-</code> は負の符号です (ECMAScript 1 より)。これは解析の最初の段階で、ホワイトスペースを除去した後に行われます。符号が見つからなかった場合は、アルゴリズムは次の段階に移行します。そうでなければ、符号を取り除いて残りの文字列の数値の解析を実行します。</p>
+
+<p><code><var>radix</var></code> が <code>undefined</code>, <code>0</code>, または指定されなかった場合、JavaScript 以下のように仮定します。</p>
+
+<ol>
+ <li>入力した <code>string</code> が "<code>0x</code>" または "<code>0X</code>" (ゼロに続いて小文字または大文字の X) で始まった場合は、<code><var>radix</var></code> は <code>16</code> と仮定され、残りの文字列が 16進数として解釈されます。</li>
+ <li>入力した <code>string</code> が "<code>0</code>" (ゼロ) で始まった場合は、<code><var>radix</var></code> は <code>8</code> (8進数) または <code>10</code> (10進数) と仮定されます。厳密にどちらの基数が選択されるかは実装に依存します。ECMAScript 5 では <code>10</code> (10進数) を使用する<em>べき</em>だと明示していますが、まだすべてのブラウザーが対応している訳ではありません。したがって、<strong><code>parseInt</code>関数を使うときは <code><var>radix</var></code> を常に指定してください</strong>。</li>
+ <li>入力した <code>string</code> がその他の値で始まるときは、基数は <code>10</code> (10進数) となります。</li>
+</ol>
+
+<p>初めの文字が数値に変換できないときは、<code>parseInt</code> は <code>NaN</code> を返します。</p>
+
+<p>数値演算の目的では、<code>NaN</code> は基数がいくつであっても数値にはなりません。{{jsxref("isNaN")}} 関数を使うと、<code>parseInt</code> の結果が <code>NaN</code> であるかどうか確かめられます。数値演算で <code>NaN</code> が与えられると、演算結果も <code>NaN</code> になります。</p>
+
+<p>数値を特定の基数で文字列リテラルに変換したいときは、<code><var>thatNumber</var>.toString(<var>radix</var>)</code> を使用してください。</p>
+
+<div class="blockIndicator warning">
+<p><strong>{{jsxref("BigInt")}} の警告:</strong> <code>parseInt</code> は {{jsxref("BigInt")}} を {{jsxref("Number")}} へ変換するので、その処理中に精度が落ちます。これは後に付く数値ではない値が、"<code>n</code>" を含めて、切り落とされるからです。</p>
+</div>
+
+
+
+<h3 id="Octal_interpretations_with_no_radix" name="Octal_interpretations_with_no_radix">基数を指定しない 8進数の解釈</h3>
+
+<p>ECMAScript 3 で非推奨となり、ECMAScript 5 で廃止されたものの、多くの実装が <code>0</code> で始まる数字の文字列を 8進数として解釈します。以下の式は 8進数とされることもあれば、10進数で扱われることもあります。<strong>つねに <code><var>radix</var></code> を指定すれば、信頼できない動作を防ぐことができます</strong>。</p>
+
+<pre class="brush: js notranslate">parseInt('0e0') // 0
+parseInt('08') // '8' は 8進数では用いられないため、0。
+</pre>
+
+<p>ECMAScript 5 仕様書において <code>parseInt</code> 関数は、<code>0</code> の文字で始まる文字列を 8進数として扱うことをもはや実装に認めなくなりました。</p>
+
+<p>ECMAScript 5 では次のように宣言しています。</p>
+
+<blockquote>
+<p><code>parseInt</code>関数は、文字列引数の内容を指定された基数によって解釈した整数値を生成します。文字列の先頭のホワイトスペースは無視されます。基数が <code>undefined</code> または <code>0</code> である場合は <code>10</code> と仮定されますが、数値が <code>0x</code> または <code>0X</code> の 2文字で始まる場合は例外で、この場合は基数が <code>16</code> と仮定されます。</p>
+</blockquote>
+
+<p>これは、ECMAScript 3 が 8進数の解釈を<em>非推奨</em> (ただし許容) としていたのとは異なります。</p>
+
+<p>2013年現在、多くの実装はまだこの仕様に対応していません。そして、古いブラウザーの対応が必要なので、<strong>つねに基数を指定してください</strong>。</p>
+
+<h3 id="A_stricter_parse_function" name="A_stricter_parse_function">より厳密な解析関数</h3>
+
+<p>場合によっては、値の整数への解析により厳密な方法を採るのも有効でしょう。</p>
+
+<p>正規表現が役立ちます。</p>
+
+<pre class="brush: js notranslate">function filterInt(value) {
+ if (/^[-+]?(\d+|Infinity)$/.test(value)) {
+ return Number(value)
+ } else {
+ return NaN
+ }
+}
+
+console.log(filterInt('421')) // 421
+console.log(filterInt('-421')) // -421
+console.log(filterInt('+421')) // 421
+console.log(filterInt('Infinity')) // Infinity
+console.log(filterInt('421e+0')) // NaN
+console.log(filterInt('421hop')) // NaN
+console.log(filterInt('hop1.61803398875')) // NaN
+console.log(filterInt('1.61803398875')) // NaN
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_parseInt" name="Using_parseInt">parseInt の使用</h3>
+
+<p>以下の例はいずれも <code>15</code> を返します。</p>
+
+<pre class="brush: js notranslate">parseInt('0xF', 16)
+parseInt('F', 16)
+parseInt('17', 8)
+parseInt(021, 8)
+parseInt('015', 10) // ただし `parseInt(015, 10)` は 13 を返す
+parseInt(15.99, 10)
+parseInt('15,123', 10)
+parseInt('FXX123', 16)
+parseInt('1111', 2)
+parseInt('15 * 3', 10)
+parseInt('15e2', 10)
+parseInt('15px', 10)
+parseInt('12', 13)
+</pre>
+
+<p>以下の例はいずれも <code>NaN</code> を返します。</p>
+
+<pre class="brush: js notranslate">parseInt('Hello', 8) // まったく数字ではない
+parseInt('546', 2) // 2進数では 0 または 1 以外の数字は無効
+</pre>
+
+<p>以下の例はいずれも <code>-15</code> を返します。</p>
+
+<pre class="brush: js notranslate">parseInt('-F', 16)
+parseInt('-0F', 16)
+parseInt('-0XF', 16)
+parseInt(-15.1, 10)
+parseInt('-17', 8)
+parseInt('-15', 10)
+parseInt('-1111', 2)
+parseInt('-15e1', 10)
+parseInt('-12', 13)
+</pre>
+
+<p>以下の例はいずれも <code>4</code> を返します。</p>
+
+<pre class="brush: js notranslate">parseInt(4.7, 10)
+parseInt(4.7 * 1e22, 10) // 非常に大きな数によって 4 になる
+parseInt(0.00000000000434, 10) // 非常に小さな数によって 4 になる
+</pre>
+
+<p>以下の例は 1e+21(基数を含む) より大きいか、1e-7(基数を含む) より小さい場合は <code>1</code> を返します。(基数 10 を使用している場合)。</p>
+
+<pre class="brush: js notranslate">parseInt(0.0000001,10);
+parseInt(0.000000123,10);
+parseInt(1e-7,10);
+parseInt(1000000000000000000000,10);
+parseInt(123000000000000000000000,10);
+parseInt(1e+21,10);
+</pre>
+
+
+<p>以下の例は <code>224</code> を返します。</p>
+
+<pre class="brush: js notranslate">parseInt('0e0', 16)
+</pre>
+
+<p>{{jsxref("BigInt")}} の値は精度が落ちます。</p>
+
+<pre class="brush: js notranslate">parseInt('900719925474099267n')
+// 900719925474099300</pre>
+
+<p><code>parseInt</code> は<a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Numeric_separators">数字の区切り文字</a>は機能しません。</p>
+
+<pre class="brush: js notranslate">parseInt('123_456')
+// 123
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-parseint-string-radix', 'parseInt')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.parseInt")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Global_Objects/parseFloat", "parseFloat()")}}</li>
+ <li>{{jsxref("Number.parseFloat()")}}</li>
+ <li>{{jsxref("Number.parseInt()")}}</li>
+ <li>{{jsxref("Global_Objects/isNaN", "isNaN()")}}</li>
+ <li>{{jsxref("Number.toString()")}}</li>
+ <li>{{jsxref("Object.valueOf")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/promise/all/index.html b/files/ja/web/javascript/reference/global_objects/promise/all/index.html
new file mode 100644
index 0000000000..8a3c00e020
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/promise/all/index.html
@@ -0,0 +1,236 @@
+---
+title: Promise.all()
+slug: Web/JavaScript/Reference/Global_Objects/Promise/all
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Promise
+ - all
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Promise/all
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Promise.all(<var>iterable</var>)</code></strong> メソッドは単一の {{jsxref("Promise")}} を返し、これは引数 <var>iterable</var> の中のすべての Promise が解決されるか、引数 <var>iterable</var> の中に Promise がない場合に解決されます。最初に拒否された Promise の拒否理由をもって拒否されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/promise-all.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Promise.all(<var>iterable</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><var>iterable</var></dt>
+ <dd>{{jsxref("Array")}} や {{jsxref("String")}} のような<ruby><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">反復処理可能</a><rp> (</rp><rt>iterable</rt><rp>) </rp></ruby>なオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<ul>
+ <li>渡した <var>iterable</var> が空の場合、<strong>解決済み</strong>の {{jsxref("Promise")}}。</li>
+ <li>渡した <var>iterable</var> に Promise がない場合、<strong>非同期に解決した</strong> {{jsxref("Promise")}}。ただし、 Google Chrome 58 ではこの場合。<strong>すでに解決した</strong> Promise を返す。</li>
+ <li>その他の場合は<strong>待ち状態</strong>の {{jsxref("Promise")}} 。この返却される promise は次に、 <var>iterable</var> として与えられたすべての Promise が解決するか、すべての Promise が拒否されると<strong>非同期に</strong> (スタックが空になるとすぐに) 解決/拒否されます。以下の「Promise.all の非同期性・同期性」の例を見てください。返値は、実行完了の順とは関係なく、 Promise が渡された順に並びます。</li>
+</ul>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドは複数の Promise の結果を集約するのに便利です。</p>
+
+<p>完成:<br>
+ 空の <var>iterable</var> が渡された場合、このメソッドはすでに解決した Promise を (同期的に) 返します。<br>
+ 渡された Promise のすべてが満たされるか、 Promise が渡されていない場合、 <code>Promise.all</code> によって返される Promise が非同期的に完成されます。<br>
+ すべての場合で、返された Promise は、引数として渡された <var>iterable</var> の<strong>すべての</strong>値 (Promise ではない値も) を含んだ配列で完成されます。</p>
+
+<p>拒否:<br>
+ 渡された Promise のいずれかが拒否されたら、 <code>Promise.all</code> は非同期的に、その他の Promise が完了しているかどうかに関係なく、その拒否した Promise の値で拒否されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Promise.all" name="Using_Promise.all"><code>Promise.all</code> の使用</h3>
+
+<p><code>Promise.all</code>はすべての完成 (または最初の拒否) を待ちます。</p>
+
+<pre class="brush: js">var p1 = Promise.resolve(3);
+var p2 = 1337;
+var p3 = new Promise((resolve, reject) =&gt; {
+ setTimeout(() =&gt; {
+ resolve("foo");
+ }, 100);
+});
+
+Promise.all([p1, p2, p3]).then(values =&gt; {
+ console.log(values); // [3, 1337, "foo"]
+});</pre>
+
+<p><var>iterable</var> に Promise ではない値が含まれる場合は無視されますが、 (Promise が成功する場合) 返される Promise 配列の値にはカウントされます。</p>
+
+<pre class="brush: js">// this will be counted as if the iterable passed is empty, so it gets fulfilled
+var p = Promise.all([1,2,3]);
+// this will be counted as if the iterable passed contains only the resolved promise with value "444", so it gets fulfilled
+var p2 = Promise.all([1,2,3, Promise.resolve(444)]);
+// this will be counted as if the iterable passed contains only the rejected promise with value "555", so it gets rejected
+var p3 = Promise.all([1,2,3, Promise.reject(555)]);
+
+// using setTimeout we can execute code after the stack is empty
+setTimeout(function() {
+ console.log(p);
+ console.log(p2);
+ console.log(p3);
+});
+
+// logs
+// Promise { &lt;state&gt;: "fulfilled", &lt;value&gt;: Array[3] }
+// Promise { &lt;state&gt;: "fulfilled", &lt;value&gt;: Array[4] }
+// Promise { &lt;state&gt;: "rejected", &lt;reason&gt;: 555 }</pre>
+
+<h3 id="Promise.all_の非同期性・同期性"><code>Promise.all</code> の非同期性・同期性</h3>
+
+<p>以下の例では <code>Promise.all</code> の非同期性 (または渡されたiterable が空の場合、同期性) を実演します。</p>
+
+<pre class="brush: js">// we are passing as argument an array of promises that are already resolved,
+// to trigger Promise.all as soon as possible
+var resolvedPromisesArray = [Promise.resolve(33), Promise.resolve(44)];
+
+var p = Promise.all(resolvedPromisesArray);
+// immediately logging the value of p
+console.log(p);
+
+// using setTimeout we can execute code after the stack is empty
+setTimeout(function() {
+ console.log('the stack is now empty');
+ console.log(p);
+});
+
+// logs, in order:
+// Promise { &lt;state&gt;: "pending" }
+// the stack is now empty
+// Promise { &lt;state&gt;: "fulfilled", &lt;value&gt;: Array[2] }
+</pre>
+
+<p><code>Promise.all</code> が拒否されたときも同じことが起きます.。</p>
+
+<pre class="brush: js">var mixedPromisesArray = [Promise.resolve(33), Promise.reject(44)];
+var p = Promise.all(mixedPromisesArray);
+console.log(p);
+setTimeout(function() {
+ console.log('the stack is now empty');
+ console.log(p);
+});
+
+// logs
+// Promise { &lt;state&gt;: "pending" }
+// the stack is now empty
+// Promise { &lt;state&gt;: "rejected", &lt;reason&gt;: 44 }
+</pre>
+
+<p>しかし、<code>Promise.all</code> は渡された <var>iterable</var> が空の<strong>場合だけ</strong>同期的に解決します。</p>
+
+<pre class="brush: js">var p = Promise.all([]); // will be immediately resolved
+var p2 = Promise.all([1337, "hi"]); // non-promise values will be ignored, but the evaluation will be done asynchronously
+console.log(p);
+console.log(p2)
+setTimeout(function() {
+ console.log('the stack is now empty');
+ console.log(p2);
+});
+
+// logs
+// Promise { &lt;state&gt;: "fulfilled", &lt;value&gt;: Array[0] }
+// Promise { &lt;state&gt;: "pending" }
+// the stack is now empty
+// Promise { &lt;state&gt;: "fulfilled", &lt;value&gt;: Array[2] }
+</pre>
+
+<h3 id="Promise.all_fail-fast_behaviour" name="Promise.all_fail-fast_behaviour"><code>Promise.all</code>のフェイルファストの挙動</h3>
+
+<p><code>Promise.all</code> は要素のひとつでも拒否されると拒否します。例えば、タイムアウト後に4つの Promise が解決しても、1つの Promise が直ちに拒否された場合、 <code>Promise.all</code> は直ちに拒否します。</p>
+
+<pre class="brush: js">var p1 = new Promise((resolve, reject) =&gt; {
+ setTimeout(() =&gt; resolve('one'), 1000);
+});
+var p2 = new Promise((resolve, reject) =&gt; {
+ setTimeout(() =&gt; resolve('two'), 2000);
+});
+var p3 = new Promise((resolve, reject) =&gt; {
+ setTimeout(() =&gt; resolve('three'), 3000);
+});
+var p4 = new Promise((resolve, reject) =&gt; {
+ setTimeout(() =&gt; resolve('four'), 4000);
+});
+var p5 = new Promise((resolve, reject) =&gt; {
+ reject(new Error('reject'));
+});
+
+
+// Using .catch:
+Promise.all([p1, p2, p3, p4, p5])
+.then(values =&gt; {
+ console.log(values);
+})
+.catch(error =&gt; {
+ console.log(error.message)
+});
+
+//From console:
+//"reject"
+
+</pre>
+
+<p>この動作は失敗する可能性を制御することで変更することができます。</p>
+
+<pre class="brush: js">var p1 = new Promise((resolve, reject) =&gt; {
+ setTimeout(() =&gt; resolve('p1_delayed_resolvement'), 1000);
+});
+
+var p2 = new Promise((resolve, reject) =&gt; {
+ reject(new Error('p2_immediate_rejection'));
+});
+
+Promise.all([
+ p1.catch(error =&gt; { return error }),
+ p2.catch(error =&gt; { return error }),
+]).then(values =&gt; {
+  console.log(values[0]) // "p1_delayed_resolvement"
+  console.log(values[1]) // "Error: p2_immediate_rejection"
+})
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状態</th>
+ <th scope="col">備考</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-promise.all', 'Promise.all')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>ECMA 標準としての初回定義</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-promise.all', 'Promise.all')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの対応</h2>
+
+<p class="hidden">互換性データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> に対してプルリクエストを書いてください。</p>
+
+<p>{{Compat("javascript.builtins.Promise.all")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Promise")}}</li>
+ <li>{{jsxref("Promise.race()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/promise/allsettled/index.html b/files/ja/web/javascript/reference/global_objects/promise/allsettled/index.html
new file mode 100644
index 0000000000..83891f3857
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/promise/allsettled/index.html
@@ -0,0 +1,100 @@
+---
+title: Promise.allSettled()
+slug: Web/JavaScript/Reference/Global_Objects/Promise/allSettled
+tags:
+ - JavaScript
+ - Method
+ - Promise
+ - Reference
+ - allSettled
+ - asynchronous
+ - プロミス
+ - メソッド
+ - 非同期
+translation_of: Web/JavaScript/Reference/Global_Objects/Promise/allSettled
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Promise.allSettled()</strong></code> メソッドは、与えられたすべてのプロミスが満足したか拒否された後に、それぞれのプロミスの結果を記述した配列オブジェクトで解決されるプロミスを返します。</p>
+
+<p>一般的には、複数の非同期タスクがあり、お互いに依存せずに正常に完了する場合や、各プロミスの結果を常に知りたい場合に使用されます。</p>
+
+<p>これと比較して、 {{jsxref("Promise.all()")}} で返されるプロミスは、タスクがお互いに依存している場合や、タスクのいずれかが拒否されたときにすぐに拒否したい場合にはより適切かもしれません。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/promise-allsettled.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>Promise</var>.allSettled(<var>iterable</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>iterable</var></code></dt>
+ <dd>{{jsxref("Array")}} などの<a href="/ja/docs/Web/JavaScript/Guide/iterable">反復可能</a>オブジェクトで、それぞれの要素が <code>Promise</code> であるものです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><strong>待ち状態</strong>の {{jsxref("Promise")}} で、指定されたプロミスの集合に含まれるすべてのプロミスが、正常に解決されるか拒否されるかのどちらかで完了すると、<strong>非同期に</strong>解決されます。その際、返されたプロミスのハンドラーには、元のプロミスの集合に含まれるの各プロミスの結果を含む配列が入力として渡されます。</p>
+
+<p>ただし、空の反復可能オブジェクトが引数として渡された<strong>場合に限り</strong>、 <code>Promise.allSettled()</code> は空の配列として<strong>解決済みの</strong> <code>Promise</code> オブジェクトを返します。</p>
+
+<p>出力されるそれぞれのオブジェクトには、 <code>status</code> の文字列が存在します。 status が <code>fulfilled</code> であれば、 <code>value</code> が存在します。 status が <code>rejected</code> であれば、 <code>reason</code> が存在します。 value (または reason) はそれぞれのプロミスがどの値で解決 (または拒否) されたかを反映します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Promise.allSettled" name="Using_Promise.allSettled">Promise.allSettled の使用</h3>
+
+<pre class="brush: js notranslate">Promise.allSettled([
+ Promise.resolve(33),
+ new Promise(resolve =&gt; setTimeout(() =&gt; resolve(66), 0)),
+ 99,
+ Promise.reject(new Error('an error'))
+])
+.then(values =&gt; console.log(values));
+
+// [
+// {status: "fulfilled", value: 33},
+// {status: "fulfilled", value: 66},
+// {status: "fulfilled", value: 99},
+// {status: "rejected", reason: Error: an error}
+// ]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-promise.allsettled', 'Promise.allSettled')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">互換性データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> に対してプルリクエストを書いてください。</div>
+
+<p>{{Compat("javascript.builtins.Promise.allSettled")}}</p>
+
+<h3 id="Implementation_Progress" name="Implementation_Progress">実装の進捗状況</h3>
+
+<p>以下の表は、クロスブラウザーの安定性にまだ達していないこの機能の日々の実装状況を示しています。このデータは、 JavaScript の標準テストスイートである <a href="https://github.com/tc39/test262">Test262</a> で関連する機能テストをナイトリービルド、または各ブラウザの JavaScript エンジンの最新リリースで実行することで生成されます。</p>
+
+<div>{{EmbedTest262ReportResultsTable("Promise.allSettled")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Archive/Add-ons/Techniques/Promises">プロミス</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Using_promises">プロミスの使用</a></li>
+ <li><a href="/ja/docs/Learn/JavaScript/Asynchronous/Promises">プロミスを使った行儀のよい非同期のプログラミング</a></li>
+ <li>{{jsxref("Promise")}}</li>
+ <li>{{jsxref("Promise.all()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/promise/any/index.html b/files/ja/web/javascript/reference/global_objects/promise/any/index.html
new file mode 100644
index 0000000000..bc5e1c5514
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/promise/any/index.html
@@ -0,0 +1,154 @@
+---
+title: Promise.any()
+slug: Web/JavaScript/Reference/Global_Objects/Promise/any
+tags:
+ - Experimental
+ - JavaScript
+ - Method
+ - NeedsCompatTable
+ - Promise
+ - Reference
+ - プロミス
+ - メソッド
+ - 実験的
+translation_of: Web/JavaScript/Reference/Global_Objects/Promise/any
+---
+<div>{{JSRef}}</div>
+
+<p><code>Promise.any()</code> は {{JSxRef("Promise")}} オブジェクトの反復可能オブジェクトを受け取り、反復可能オブジェクトの中にあるプロミスの一つが満足するとすぐに、そのプロミスの値で解決される単一のプロミスを返します。反復可能オブジェクトの中に満足可能なプロミスがない場合 (与えられたプロミスがすべて拒否された場合)、返されたプロミスは {{JSxRef("AggregateError")}} という、個々のエラーをグループ化した {{JSxRef("Error")}} の新しいサブクラスで拒否されます。本質的には、このメソッドは {{JSxRef("Promise.all()")}} の反対です。</p>
+
+<div class="blockIndicator warning">
+<p><strong>警告!</strong> <code>Promise.any()</code> メソッドは実験的であり、すべてのブラウザーが対応しているわけではありません。現在は <a href="https://github.com/tc39/proposal-promise-any" rel="external">TC39 Candidate stage (Stage 4)</a> にあります。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="notranslate">Promise.any(<var>iterable</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>iterable</var></code></dt>
+ <dd><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">反復可能</a>オブジェクト、例えば {{JSxRef("Array")}} です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<ul>
+ <li>渡された <var>iterable</var> が空の場合は、<strong>解決済みの</strong> {{JSxRef("Promise")}}。</li>
+ <li>渡された <var>iterable</var> がプロミスを含んでいない場合は、<strong>非同期に解決される</strong> {{JSxRef("Promise")}}。</li>
+ <li>それ以外の場合は<strong>待ち状態の</strong> {{JSxRef("Promise")}}。ここで返されたプロミスは、与えられた反復可能オブジェクト内のいずれかのプロミスが満足したとき、またはすべてのプロミスが拒否されたときに、非同期的に (スタックが空になるとすぐに) 解決または拒否されます。</li>
+</ul>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドは、最初に満足するプロミスを返すのに便利です。1つのプロミスが満足した後に短絡するので、1つのプロミスが見つかったら他のプロミスが満足するのを待つことはありません。 {{JSxRef("Promise.all()")}} が満足した値の<em>配列</em>を返すのとは異なり、 (少なくとも1つのプロミスが満足したと仮定すると) 満足した値は 1 つしか得られません。これは、1つのプロミスが満足する必要があるが、どちらのプロミスが満足するかは関係ないときに有益な場合があります。また {{JSxRef("Promise.race()")}} が最初に<em>完了した</em>値 (満足または拒否のいずれか) を返すのとは異なり、このメソッドは最初に<em>満足した</em>値を返します。このメソッドは、最初のプロミスが満足するまでは、すべての拒否されたプロミスを無視します。</p>
+
+<h3 id="Fulfilment" name="Fulfilment">満足</h3>
+
+<p>渡されたプロミスのうちのいずれかが満足した場合、返却されるプロミスは他のプロミスが満足または拒否されているかどうかにかかわらず、満足したプロミスの値で非同期に満足します。</p>
+
+<ul>
+ <li>空の <var>iterable</var> が渡された場合は、このメソッドはすでに解決済みのプロミスを (同期的に) 返します。</li>
+ <li>渡されたプロミスのいずれかが満足するか、プロミスがない場合は、 <code>Promise.any</code> で返されるプロミスは非同期で満足します。</li>
+</ul>
+
+<h3 id="Rejection" name="Rejection">拒否</h3>
+
+<p>渡されたすべてのプロミスが拒否された場合、 <code>Promise.any</code> は {{JSxRef("AggregateError")}} オブジェクトで非同期に拒否され、これは{{JSxRef("Error")}} を継承しており、拒否された値の配列を持つ <code>errors</code> プロパティを含みます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="First_to_fulfil" name="First_to_fulfil">最初に満足するもの</h3>
+
+<p><code>Promise.any()</code> は、先に拒否されたプロミスがあったとしても、最初に満足したプロミスで解決されます。これは {{jsxref("Promise.race()")}} が最初に決定したプロミスで解決または拒否されるのとは対照的です。</p>
+
+<pre class="brush: js notranslate">const pErr = new Promise((resolve, reject) =&gt; {
+ reject("Always fails");
+});
+
+const pSlow = new Promise((resolve, reject) =&gt; {
+ setTimeout(resolve, 500, "Done eventually");
+});
+
+const pFast = new Promise((resolve, reject) =&gt; {
+ setTimeout(resolve, 100, "Done quick");
+});
+
+Promise.any([pErr, pSlow, pFast]).then((value) =&gt; {
+ console.log(value);
+ // pFast fulfils first
+})
+// 期待される出力: "Done quick"
+</pre>
+
+<h3 id="Rejections_with_AggregateError" name="Rejections_with_AggregateError">AggregateError での拒否</h3>
+
+<p><code>Promise.any()</code> は満足したプロミスがないと {{jsxref("AggregateError")}} で拒否されます。</p>
+
+<pre class="brush: js notranslate">const pErr = new Promise((resolve, reject) =&gt; {
+ reject('Always fails');
+});
+
+Promise.any([pErr]).catch((err) =&gt; {
+ console.log(err);
+})
+// 期待される出力: "AggregateError: No Promise in Promise.any was resolved"
+</pre>
+
+<h3 id="Displaying_the_first_image_loaded" name="Displaying_the_first_image_loaded">最初に読み込まれた画像の表示</h3>
+
+<p>この例では、画像を読み込んで blob を返す関数があります。 <code>Promise.any()</code> を使用して二つの画像を読み込み、先に利用可能になった方 (つまり、プロミスが解決された方) を表示します。</p>
+
+<pre class="brush: js notranslate">function fetchAndDecode(url) {
+ return fetch(url).then(response =&gt; {
+ if(!response.ok) {
+ throw new Error(`HTTP error! status: ${response.status}`);
+ } else {
+ return response.blob();
+ }
+ })
+}
+
+let coffee = fetchAndDecode('coffee.jpg');
+let tea = fetchAndDecode('tea.jpg');
+
+Promise.any([coffee, tea]).then(value =&gt; {
+ let objectURL = URL.createObjectURL(value);
+ let image = document.createElement('img');
+ image.src = objectURL;
+ document.body.appendChild(image);
+})
+.catch(e =&gt; {
+ console.log(e.message);
+});</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Promise.any')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Promise.any")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Promise")}}</li>
+ <li>{{JSxRef("Promise.allSettled()")}}</li>
+ <li>{{JSxRef("Promise.all()")}}</li>
+ <li>{{JSxRef("Promise.race()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/promise/catch/index.html b/files/ja/web/javascript/reference/global_objects/promise/catch/index.html
new file mode 100644
index 0000000000..08ef14d5a5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/promise/catch/index.html
@@ -0,0 +1,190 @@
+---
+title: Promise.prototype.catch()
+slug: Web/JavaScript/Reference/Global_Objects/Promise/catch
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Promise
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Promise/catch
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>catch()</strong></code> メソッドは <code>Promise</code> を返しますが、拒絶された場合のみ扱います。 {{jsxref("Promise.then", "Promise.prototype.then(undefined, onRejected)")}} の呼び出しと同じ動作をします (実際、 <code>obj.catch(onRejected)</code> の呼び出しは内部的に <code>obj.then(undefined, onRejected)</code> を呼び出しています)。つまり、返値を <code>undefined</code> にフォールバックしたい場合でも、 <code>onRejected</code> 関数を提供する必要があります。 - 例えば、 <code>obj.catch(() =&gt; {})</code> のようにします。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/promise-catch.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>p</var>.catch(<var>onRejected</var>);
+
+p.catch(function(<var>reason</var>) {
+ // rejection
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>onRejected</var></code></dt>
+ <dd><code>Promise</code> が失敗した時に呼び出される {{jsxref("Function")}} です。この関数は一つの引数を持ちます。
+ <dl>
+ <dt><code><var>reason</var></code></dt>
+ <dd>拒絶された理由です。</dd>
+ </dl>
+ <code>catch()</code> で返される Promise は、 <code><var>onRejected</var></code> がエラーを発生させた場合、または返される Promise それ自体が拒絶された場合は、拒絶となります。それ以外の場合は、解決となります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>内部的には、呼び出されたオブジェクトの <code>Promise.prototype.then</code> を呼び出し、引数に <code>undefined</code> と、受け取った <code><var>onRejected</var></code> ハンドラーを渡します。返値はこの呼び出しの値であり、すなわち {{jsxref("Promise")}} です。</p>
+
+<div class="warning">
+<p>なお、以下の例は <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Error">Error</a> のインスタンスを投げます。これは文字列を投げる場合と比較して、良い習慣と見なされています。そうでなければ、キャッチを実行する部分で引数が string か error かをチェックする必要があり、スタックトレースのような価値のある情報を失う可能性があります。</p>
+</div>
+
+<p><strong>内部呼び出しの例</strong></p>
+
+<pre class="brush: js notranslate">// overriding original Promise.prototype.then/catch just to add some logs
+(function(Promise){
+ var originalThen = Promise.prototype.then;
+ var originalCatch = Promise.prototype.catch;
+
+ Promise.prototype.then = function(){
+ console.log('&gt; &gt; &gt; &gt; &gt; &gt; called .then on %o with arguments: %o', this, arguments);
+ return originalThen.apply(this, arguments);
+ };
+ Promise.prototype.catch = function(){
+ console.error('&gt; &gt; &gt; &gt; &gt; &gt; called .catch on %o with arguments: %o', this, arguments);
+ return originalCatch.apply(this, arguments);
+ };
+
+})(this.Promise);
+
+
+
+// calling catch on an already resolved promise
+Promise.resolve().catch(function XXX(){});
+
+// logs:
+// &gt; &gt; &gt; &gt; &gt; &gt; called .catch on Promise{} with arguments: Arguments{1} [0: function XXX()]
+// &gt; &gt; &gt; &gt; &gt; &gt; called .then on Promise{} with arguments: Arguments{2} [0: undefined, 1: function XXX()]
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>catch</code> メソッドは複合したプロミスの複合のエラー処理に使用されます。これは {{jsxref("Promise")}} を返しますので、姉妹メソッドである {{jsxref("Promise.then", "then()")}} と同様の方法で<a href="/en-US/docs/Web/JavaScript/Guide/Using_promises#Chaining_after_a_catch">チェーン可能</a>です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_and_chaining_the_catch_method" name="Using_and_chaining_the_catch_method">catch メソッドの使用とチェーン化</h3>
+
+<pre class="brush: js notranslate">var p1 = new Promise(function(resolve, reject) {
+ resolve('Success');
+});
+
+p1.then(function(value) {
+ console.log(value); // "Success!"
+ throw new Error('oh, no!');
+}).catch(function(e) {
+ console.error(e.message); // "oh, no!"
+}).then(function(){
+ console.log('after a catch the chain is restored');
+}, function () {
+ console.log('Not fired due to the catch');
+});
+
+// 以下は、上記と同様に動作します
+p1.then(function(value) {
+ console.log(value); // "Success!"
+ return Promise.reject('oh, no!');
+}).catch(function(e) {
+ console.error(e); // "oh, no!"
+}).then(function(){
+ console.log('after a catch the chain is restored');
+}, function () {
+ console.log('Not fired due to the catch');
+});
+</pre>
+
+<h3 id="Gotchas_when_throwing_errors" name="Gotchas_when_throwing_errors">エラーを投げたことを知る</h3>
+
+<pre class="brush: js notranslate">// Throwing an error will call the catch method most of the time
+var p1 = new Promise(function(resolve, reject) {
+ throw new Error('Uh-oh!');
+});
+
+p1.catch(function(e) {
+ console.error(e); // "Uh-oh!"
+});
+
+// Errors thrown inside asynchronous functions will act like uncaught errors
+var p2 = new Promise(function(resolve, reject) {
+ setTimeout(function() {
+ throw new Error('Uncaught Exception!');
+ }, 1000);
+});
+
+p2.catch(function(e) {
+ console.error(e); // This is never called
+});
+
+// Errors thrown after resolve is called will be silenced
+var p3 = new Promise(function(resolve, reject) {
+ resolve();
+ throw new Error('Silenced Exception!');
+});
+
+p3.catch(function(e) {
+ console.error(e); // This is never called
+});</pre>
+
+<h3 id="If_it_is_resolved" name="If_it_is_resolved">解決される場合</h3>
+
+<pre class="brush: js notranslate">//Create a promise which would not call onReject
+var p1 = Promise.resolve("calling next");
+
+var p2 = p1.catch(function (reason) {
+ //This is never called
+ console.error("catch p1!");
+ console.error(reason);
+});
+
+p2.then(function (value) {
+ console.log("next promise's onFulfilled"); /* next promise's onFulfilled */
+ console.log(value); /* calling next */
+}, function (reason) {
+ console.log("next promise's onRejected");
+ console.log(reason);
+});</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-promise.prototype.catch', 'Promise.prototype.catch')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">互換性データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> に対してプルリクエストを書いてください。</div>
+
+<p>{{Compat("javascript.builtins.Promise.catch")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Promise")}}</li>
+ <li>{{jsxref("Promise.prototype.then()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/promise/finally/index.html b/files/ja/web/javascript/reference/global_objects/promise/finally/index.html
new file mode 100644
index 0000000000..65fb7abeba
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/promise/finally/index.html
@@ -0,0 +1,109 @@
+---
+title: Promise.prototype.finally()
+slug: Web/JavaScript/Reference/Global_Objects/Promise/finally
+tags:
+ - JavaScript
+ - Method
+ - Promises
+ - Prototype
+ - Reference
+ - finally
+translation_of: Web/JavaScript/Reference/Global_Objects/Promise/finally
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>finally()</code></strong> メソッドは {{jsxref("Promise")}} を返します。プロミスが確立したら、満足か拒否かにかかわらず、指定されたコールバック関数が実行されます。これにより、プロミスが成功裏に実行されたか否かに関わりなく、 <code>Promise</code> が処理された後に実行されなければならないコードを提供できます。</p>
+
+<p>これによって、プロミスの {{jsxref("Promise.then", "then()")}} ハンドラーと {{jsxref("Promise.catch", "catch()")}} ハンドラーでコードが重複することを避けることができます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>p</var>.finally(<var>onFinally</var>);
+
+<var>p</var>.finally(function() {
+ // 確立 (満足または拒否)
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>onFinally</var></code></dt>
+ <dd><code>Promise</code> が確立したら呼び出される {{jsxref("Function")}}。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>finally</code> ハンドラーに指定した <code>onFinally</code> が設定した {{jsxref("Promise")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>プロミスが確立した後、結果に関わらず何らかの処理や後始末を行いたいなら、<code>finally()</code> メソッドは役立ちます。</p>
+
+<p><code>finally()</code> メソッドは <code>.then(onFinally, onFinally)</code> の呼び出しとよく似ていますが、いくつかの点が異なります。</p>
+
+<ul>
+ <li>関数をインラインで作成する場合、関数を 2 度宣言するか、変数を作成するかのどちらかで、一度に渡すことができます。</li>
+ <li>プロミスが満足したか拒否されたかを知る術がないため、<code>finally</code> コールバックは一切引数を受け取りません。このユースケースは、拒否された理由や履行された値などを提供する必要がなく、それらを<em>気にしない</em>ときに適しています。
+ <ul>
+ <li><code>Promise.resolve(2).then(() =&gt; {}, () =&gt; {})</code> (<code>undefined</code> で解決される) と異なり、<code>Promise.resolve(2).finally(() =&gt; {})</code> は <code>2</code> で解決される。</li>
+ <li>同様に、<code>Promise.reject(3).then(() =&gt; {}, () =&gt; {})</code> (<code>undefined</code> で解決される) と異なり、<code>Promise.reject(3).finally(() =&gt; {})</code> は <code>3</code> で拒否される。</li>
+ </ul>
+ </li>
+</ul>
+
+<div class="note">
+<p><strong>補足:</strong> <code>finally</code> コールバック内で <code>throw</code> が行われた場合 (または、拒否されたプロミスを返した場合)、 <code>throw</code> を呼び出すときに指定された拒否理由と共に新しいプロミスが拒否されます。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_finally" name="Using_finally">finally の使用</h3>
+
+<pre class="brush: js notranslate">let isLoading = true;
+
+fetch(myRequest).then(function(response) {
+ var contentType = response.headers.get("content-type");
+ if(contentType &amp;&amp; contentType.includes("application/json")) {
+ return response.json();
+ }
+ throw new TypeError("Oops, we haven't got JSON!");
+ })
+ .then(function(json) { /* process your JSON further */ })
+ .catch(function(error) { console.error(error); /* this line can also throw, e.g. when console = {} */ })
+ .finally(function() { isLoading = false; });
+
+</pre>
+
+<div class="hidden">
+<p>Please do not add polyfills on MDN pages. For more details, refer to: <a href="https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500">https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500</a></p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-promise.prototype.finally', 'Promise.prototype.finally')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">互換性データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> に対してプルリクエストを書いてください。</div>
+
+<p>{{Compat("javascript.builtins.Promise.finally")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Promise")}}</li>
+ <li>{{jsxref("Promise.prototype.then()")}}</li>
+ <li>{{jsxref("Promise.prototype.catch()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/promise/index.html b/files/ja/web/javascript/reference/global_objects/promise/index.html
new file mode 100644
index 0000000000..6a41d6a21d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/promise/index.html
@@ -0,0 +1,367 @@
+---
+title: Promise
+slug: Web/JavaScript/Reference/Global_Objects/Promise
+tags:
+ - Class
+ - ECMAScript 2015
+ - JavaScript
+ - Promise
+ - Reference
+ - クラス
+ - プロミス
+translation_of: Web/JavaScript/Reference/Global_Objects/Promise
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Promise</code></strong> オブジェクトは非同期処理の最終的な完了処理 (もしくは失敗) およびその結果の値を表現します。</p>
+
+<p>プロミスの挙動と使用法について学ぶには、最初に <a href="/ja/docs/Web/JavaScript/Guide/Using_promises">Promise の使用</a>をお読みください。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>Promise</strong></code> インターフェイスは作成時点では分からなくてもよい値へのプロキシです。 Promise を用いることで、非同期アクションの成功や失敗に対するハンドラーを関連付けることができます。これにより、非同期メソッドは、最終的な値を返すのではなく、未来のある時点で値を持つ Promise を返すことで、同期メソッドと同じように値を返すことができるようになります。</p>
+
+<p><code>Promise</code> の状態は以下のいずれかとなります。</p>
+
+<ul>
+ <li><ruby>待機<rp> (</rp><rt><em>pending</em></rt></ruby>: 初期状態。成功も失敗もしていません。</li>
+ <li><ruby>満足<rp> (</rp><rt><em>fulfilled</em></rt><rp>)</rp></ruby>: 処理が成功して完了したことを意味します。</li>
+ <li><ruby>拒絶<rp> (</rp><rt><em>rejected</em></rt><rp>)</rp></ruby>: 処理が失敗したことを意味します。</li>
+</ul>
+
+<p>待機状態のプロミスは、何らかの値を持つ満足 (<em>fulfilled</em>) 状態、もしくは何らかの理由 (エラー) を持つ拒絶 (<em>rejected</em>) 状態のいずれかに変わります。そのどちらとなっても、<code>then</code> メソッドによって関連付けられたハンドラーが呼び出されます。 (対応するハンドラーが割り当てられたとき、既にプロミスが成功または失敗していても、そのハンドラーは呼ばれます。よって、非同期処理とその関連付けられたハンドラーとの競合は発生しません。)</p>
+
+<p><code>{{JSxRef("Promise.then", "Promise.prototype.then()")}}</code> メソッドと <code>{{JSxRef("Promise.catch", "Promise.prototype.catch()")}}</code> メソッドもまた Promise を返すので、これらをチェーン (連鎖) させることができます。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15911/promises.png" style="height: 297px; width: 801px;"></p>
+
+<div class="blockIndicator note">
+<p><strong>混乱を避けるために:</strong> Scheme に代表されるいくつかの言語では、遅延評価や計算を延期する機構を持っており、これらも "Promise" と呼ばれます。 JavaScript における Promise は、すでに起きつつある処理を表します。そしてこの処理はコールバックを使うことでチェーンさせることができます。式を遅延評価する方法を探しているのであれば、引数なしの<a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a>を考えてください。 <code>f = () =&gt; <em>expression</em></code> のように実現でき、遅延評価される式が作成され、 <code>f()</code> を呼ぶことでその式を評価できます。</p>
+</div>
+
+<div class="blockIndicator note">
+<p><strong>注</strong>: Promise は fulfilled か failed のどちらかになった場合は、 pending ではなく settled と呼ばれます。また解決 (<em>resolved</em>) という用語も目にされたことがあると思います。解決とは、Promise が解決または他の promise の状態にマッチするために" locked in "したことを意味します。<a href="https://github.com/domenic/promises-unwrapping/blob/master/docs/states-and-fates.md">States and fates</a> では、 Promise の技術についてより詳細に述べられています。</p>
+</div>
+
+<h3 id="Chained_Promises" name="Chained_Promises">連鎖したプロミス</h3>
+
+<p><code>promise.then()</code>, <code>promise.catch()</code>, <code>promise.finally()</code> の各メソッドは、決定したプロミスにさらなるアクションを関連付けるために使用されます。これらのメソッドはまた、新しく生成されたプロミスオブジェクトを返します。例えば、このようになります。</p>
+
+<dl>
+ <dd>
+ <pre class="brush: js notranslate">const myPromise =
+ (new Promise(myExecutorFunc))
+ .then(handleFulfilledA,handleRejectedA)
+ .then(handleFulfilledB,handleRejectedB)
+ .then(handleFulfilledC,handleRejectedC);
+
+// または、おそらく次の方がよい ...
+
+const myPromise =
+ (new Promise(myExecutorFunc))
+ .then(handleFulfilledA)
+ .then(handleFulfilledB)
+ .then(handleFulfilledC)
+ .catch(handleRejectedAny);</pre>
+ </dd>
+</dl>
+
+<p>拒絶されたプロミスの処理が早すぎると、プロミスの連鎖のさらに下の方に影響を及ぼします。エラーはすぐに処理しなければならないので、選択の余地がないこともあります。 (結果を処理するためのテクニックについては、下記の例の <code>throw -999</code> を参照してください。) 一方で、すぐに必要がない場合は、最後の .catch() 文までエラー処理をしない方がシンプルです。</p>
+
+<p>これら2つの関数のシグネチャはシンプルで、任意の型の引数を1つだけ受け取ることができます。これらの関数を書くのはプログラマーです。これらの関数の終了条件は、チェーン内の次のプロミスの「解決」状態を決定します。 <code>throw</code> 以外の終了条件は "解決" の状態を生み出し、一方、 <code>throw</code> で終了すると "拒否" の状態を生み出します。</p>
+
+<pre class="brush: js notranslate">handleFulfilled(value) { /*...*/; return nextValue; }
+handleRejection(reason) { /*...*/; throw nextReason; }
+handleRejection(reason) { /*...*/; return nextValue; }</pre>
+
+<p>返される <code>nextValue</code> は、別のプロミスオブジェクトにすることもでき、この場合はプロミスは動的にチェーンに挿入されます。</p>
+
+<p><code>.then()</code> が適切な関数欠いている場合、処理は単純にチェーンの次のリンクへと続きます。したがってチェーンは、すべての <code>handleRejection</code> を最後の <code>.catch()</code> まで、安全に省略することができます。 同様に、<code>.catch()</code> は、実際には <code>handleFulfilled</code> 用のスロットのないただの <code>.then()</code> です。</p>
+
+<p>プロミスのチェーンはロシアの人形のように入れ子にすることができますが、スタックの最上位のように取り出します。チェーンの最初のプロミスは最も深いところに入れ子になり、最初に取り出されます。</p>
+
+<pre class="notranslate">(promise D, (promise C, (promise B, (promise A) ) ) )</pre>
+
+<p><code>nextValue</code> がプロミスである場合、その効果は動的な置換です。 <code>return</code> によってプロミスが取り出されますが、 <code>nextValue</code> のプロミスはその場所に押し込まれます。上に示した入れ子では、"promise B" に関連付けられた <code>.then()</code> が "promise X" の <code>nextValue</code> を返すとします。 結果としての入れ子は以下のようになります。</p>
+
+<pre class="notranslate">(promise D, (promise C, (promise X) ) )</pre>
+
+<p>プロミスは複数の入れ子に参加することができます。以下のコードでは、 <code>promiseA</code> が「確定」状態に移行すると、 <code>.then()</code> の両方のインスタンスが呼び出されます。</p>
+
+<pre class="brush: js notranslate">const promiseA = new Promise(myExecutorFunc);
+const promiseB = promiseA.then(handleFulfilled1, handleRejected1);
+const promiseC = promiseA.then(handleFulfilled2, handleRejected2);
+</pre>
+
+<p>既に「解決済み」のプロミスにアクションを割り当てることができます。その場合、アクションは (適切であれば) 最初の非同期の機会に実行されます。プロミスは非同期であることが保証されていることに注意してください。したがって、既に「解決済み」のプロミスに対するアクションは、スタックがクリアされ、クロックティックが経過した後にのみ実行されます。この効果は <code>setTimeout(action,10)</code> とよく似ています</p>
+
+<pre class="brush: js notranslate">const promiseA = new Promise( (resolutionFunc,rejectionFunc) =&gt; {
+ resolutionFunc(777);
+});
+// この時点で、 "promiseA" はすでに解決されています。
+promiseA.then( (val) =&gt; console.log("asynchronous logging has val:",val) );
+console.log("immediate logging");
+
+// 以下の順序で出力が行われます。
+// immediate logging
+// asynchronous logging has val: 777
+</pre>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Promise/Promise", "Promise()")}}</dt>
+ <dd>新しい <code>Promise</code> オブジェクトを生成します。このコンストラクターは主にまだプロミスに対応していない関数をラップするために使われます。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{JSxRef("Promise.all", "Promise.all(iterable)")}}</dt>
+ <dd>すべてのプロミスが解決されるか、拒否されるかするまで待ちます。</dd>
+ <dd>返却されたプロミスが解決された場合、解決されたプロミスが、複数のプロミスが含まれる iterable で定義された通りの順番で入った集合配列の値によって解決されます。</dd>
+ <dd>拒否された場合は、 iterable の中で拒否された最初のプロミスの理由によって拒否されます。</dd>
+ <dt>{{JSxRef("Promise.allSettled", "Promise.allSettled(iterable)")}}</dt>
+ <dd>すべての Promise が完了する (それぞれが解決するか、拒否される) まで待ちます。</dd>
+ <dd>Promise を返し、これはすべての与えられた Promise が解決または拒否された後で、それぞれの Promise の結果を記述するオブジェクトの配列で解決されます。</dd>
+ <dt>{{JSxRef("Promise.any", "Promise.any(iterable)")}}</dt>
+ <dd>Promise オブジェクトの反復可能オブジェクトを取り、反復可能オブジェクトの中のプロミスのうちの一つが満足され次第、そのプロミスから受け取った値で解決する単一のプロミスを返します。</dd>
+ <dt>{{JSxRef("Promise.race", "Promise.race(iterable)")}}</dt>
+ <dd>Promise のうちの1つが解決または拒否されるまで待ちます。</dd>
+ <dd>返された Promise が解決された場合、 iterable の中で最初に解決された Promise の値によって解決されます。</dd>
+ <dd>拒否された場合、最初に拒否された Promise の理由によって拒否されます。</dd>
+ <dt>{{JSxRef("Promise.reject", "Promise.reject(reason)")}}</dt>
+ <dd>与えられた理由で拒否された新しい <code>Promise</code> オブジェクトを返します。</dd>
+ <dt>{{JSxRef("Promise.resolve", "Promise.resolve(value)")}}</dt>
+ <dd>与えられた値で解決された新しい <code>Promise</code> オブジェクトを返します。もし値が thenable (つまり <code>then</code> メソッドを持っているオブジェクト) ならば、返される Promise はその thenable をたどり、その結果を採用します。そうでなければ、返される Promise は与えられた値で解決されます。</dd>
+ <dd>一般に、ある値がプロミスかどうかがわからない場合は、{{JSxRef("Promise.resolve", "Promise.resolve(value)")}} を使って Promise にして扱います。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Promise.prototype.catch()")}}</dt>
+ <dd>プロミスに失敗ハンドラーコールバックを付加します。呼ばれるとコールバックの返値、または、オリジナルのプロミスが成功しているなら、その成功値によって完了している新しいプロミスを返します。</dd>
+ <dt>{{jsxref("Promise.prototype.then()")}}</dt>
+ <dd>プロミスに成功ハンドラーと失敗ハンドラーを付加します。呼ばれたハンドラーの戻り値によって解決している新しいプロミスを返します。または、プロミスが扱われなかった場合 (つまり <code>onFulfilled</code> や <code>onRejected</code> が関数でない場合) には、元の完了した値に解決しているプロミスを返します。</dd>
+ <dt>{{jsxref("Promise.prototype.finally()")}}</dt>
+ <dd>プロミスにハンドラーを付加し、元のプロミスが解決されたときに解決される新しいプロミスを返します。このハンドラーは、成功か失敗かに関わらず、元のプロミスが完了したときに呼ばれます。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_Example" name="Basic_Example">基本的な使用例</h3>
+
+<pre class="brush: js; notranslate">let myFirstPromise = new Promise((resolve, reject) =&gt; {
+ // We call resolve(...) when what we were doing asynchronously was successful, and reject(...) when it failed.
+ // In this example, we use setTimeout(...) to simulate async code.
+ // In reality, you will probably be using something like XHR or an HTML5 API.
+ setTimeout( function() {
+ resolve("Success!") // Yay! Everything went well!
+ }, 250)
+})
+
+myFirstPromise.then((successMessage) =&gt; {
+ // successMessage is whatever we passed in the resolve(...) function above.
+ // It doesn't have to be a string, but if it is only a succeed message, it probably will be.
+ console.log("Yay! " + successMessage)
+});
+
+</pre>
+
+<h3 id="Example_with_diverse_situations" name="Example_with_diverse_situations">多様な状況に対応した例</h3>
+
+<p>この例では、プロミス機能を使用するための多様なテクニックと、発生する可能性のある多様な状況を示しています。これを理解するには、まずコードブロックの一番下までスクロールして、プロミスの連鎖を調べてください。最初のプロミスが提供されると、プロミスの連鎖が続きます。このチェーンは <code>.then()</code> の呼び出しで構成され、通常は (必ずしもそうとは限りませんが) 最後に単一の <code>.catch()</code> があり、オプションで <code>.finally()</code> が続きます。この例では、プロミスチェーンはカスタムで書かれた <code>new Promise()</code> コンストラクターによって開始されますが、実際には、プロミスチェーンは通常、プロミスを返す API 関数 (他の誰かが書いたもの) から開始されます。</p>
+
+<p>関数 <code>tetheredGetNumber()</code> の例では、非同期呼び出しを設定している間、またはコールバック内で、またはその両方で <code>reject()</code> を使用してプロミスを生成することを示しています。 関数 <code>promiseGetWord()</code> は、API 関数がどのように自己完結型の方法でプロミスを生成して返すかを示しています。</p>
+
+<p>関数 <code>troubleWithGetNumber()</code> は <code>throw()</code> で終わることに注意してください。これは、 ES6 のプロミスチェーンでは、エラーが発生した後で、 "throw()" がなく、エラーが "fixed" であるようにみえても、すべての <code>.then()</code> のプロミスを通過するため、強制的に行われています。これは面倒なので、 <code>.then()</code> プロミスのチェーン全体で <code>rejectionFunc</code> を省略して、最終的な <code>catch()</code> で単一の <code>rejectionFunc</code> を使用するのが一般的です。 別の方法としては、特別な値を投げるという方法があります (この場合は"-999" ですが、カスタムのエラー種別の方が適切です)。</p>
+
+<p>このコードは NodeJS で実行できます。実際にエラーが発生しているのを見ることで理解度が高まります。より多くのエラーを強制的に発生させるには、 <code>threshold</code> の値を変更します。</p>
+
+<pre class="brush: js notranslate">"use strict";
+
+// To experiment with error handling, "threshold" values cause errors randomly
+const THRESHOLD_A = 8; // can use zero 0 to guarantee error
+
+function tetheredGetNumber(resolve, reject) {
+ try {
+ setTimeout(
+ function() {
+ const randomInt = Date.now();
+ const value = randomInt % 10;
+ try {
+ if(value &gt;= THRESHOLD_A) {
+ throw new Error(`Too large: ${value}`);
+ }
+ } catch(msg) {
+ reject(`Error in callback ${msg}`);
+ }
+ resolve(value);
+ return;
+ }, 500);
+ // To experiment with error at set-up, uncomment the following 'throw'.
+ // throw new Error("Bad setup");
+ } catch(err) {
+ reject(`Error during setup: ${err}`);
+ }
+ return;
+}
+
+function determineParity(value) {
+ const isOdd = value % 2 ? true : false ;
+ const parityInfo = { theNumber: value, isOdd: isOdd };
+ return parityInfo;
+}
+
+function troubleWithGetNumber(reason) {
+ console.error(`Trouble getting number: ${reason}`);
+ throw -999; // must "throw" something, to maintain error state down the chain
+}
+
+function promiseGetWord(parityInfo) {
+ // The "tetheredGetWord()" function gets "parityInfo" as closure variable.
+ var tetheredGetWord = function(resolve,reject) {
+ const theNumber = parityInfo.theNumber;
+ const threshold_B = THRESHOLD_A - 1;
+ if(theNumber &gt;= threshold_B) {
+ reject(`Still too large: ${theNumber}`);
+ } else {
+ parityInfo.wordEvenOdd = parityInfo.isOdd ? 'odd' : 'even';
+ resolve(parityInfo);
+ }
+ return;
+ }
+ return new Promise(tetheredGetWord);
+}
+
+(new Promise(tetheredGetNumber))
+ .then(determineParity,troubleWithGetNumber)
+ .then(promiseGetWord)
+ .then((info) =&gt; {
+ console.log("Got: ",info.theNumber," , ", info.wordEvenOdd);
+ return info;
+ })
+ .catch((reason) =&gt; {
+ if(reason === -999) {
+ console.error("Had previously handled error");
+ }
+ else {
+ console.error(`Trouble with promiseGetWord(): ${reason}`);
+ }
+ })
+ .finally((info) =&gt; console.log("All done"));
+
+</pre>
+
+<h3 id="Advanced_Example" name="Advanced_Example">応用例</h3>
+
+<div class="hidden">
+<pre class="brush: html notranslate">&lt;button id="btn"&gt;Make a promise!&lt;/button&gt;
+&lt;div id="log"&gt;&lt;/div&gt;
+</pre>
+</div>
+
+<p>以下の例は <code>Promise</code> の仕組みを示したものです。 <code>testPromise()</code> メソッドは {{HTMLElement("button")}} をクリックする度に呼び出されます。<code>testPromise()</code> メソッドは、 {{domxref("window.setTimeout()")}} を用いて、1秒から 3秒のランダムな時間の後、メソッドがこれまでに呼ばれた回数で成功する Promise を作成します。 <code>Promise()</code> コンストラクターは Promise を作成するために使用されます。</p>
+
+<p>プロミスが満足したことは、 {{JSxRef("Promise.prototype.then()","p1.then()")}} で設定されたコールバックによって記録されます。この記録から、メソッドの同期処理部分が、 Promise による非同期処理からどのように分離されているかがわかります。</p>
+
+<pre class="brush: js; notranslate">'use strict';
+var promiseCount = 0;
+
+function testPromise() {
+ let thisPromiseCount = ++promiseCount;
+
+ let log = document.getElementById('log');
+ log.insertAdjacentHTML('beforeend', thisPromiseCount +
+ ') 開始 (&lt;small&gt;同期処理開始&lt;/small&gt;)&lt;br/&gt;');
+
+ // 新しい Promise を作成: 1~3秒後に結果を返すことを約束します
+ let p1 = new Promise(
+ // executor 関数は Promise の成功または失敗に応じて呼ばれます
+ //
+ (resolve, reject) =&gt; {
+ log.insertAdjacentHTML('beforeend', thisPromiseCount +
+ ') Promise 開始 (&lt;small&gt;非同期処理開始&lt;/small&gt;)&lt;br/&gt;');
+ // 非同期を作成するための一例です
+ window.setTimeout(
+ function() {
+ // 約束を果たしました!
+ resolve(thisPromiseCount);
+ }, Math.random() * 2000 + 1000);
+ }
+ );
+
+ // Promise が成功した時に何をするかを定めます then() で成功した時
+ // catch() で失敗した時
+ p1.then(
+ // メッセージと値を記録します
+ function(val) {
+ log.insertAdjacentHTML('beforeend', val +
+ ') Promise 成功 (&lt;small&gt;非同期処理終了&lt;/small&gt;)&lt;br/&gt;');
+ }).catch(
+ // 失敗した理由を記録します
+ (reason) =&gt; {
+ console.log('Handle rejected promise ('+reason+') here.');
+ });
+
+ log.insertAdjacentHTML('beforeend', thisPromiseCount +
+ ') Promise は作成されました (&lt;small&gt;同期処理終了&lt;/small&gt;)&lt;br/&gt;');
+}</pre>
+
+<div class="hidden">
+<pre class="brush: js; notranslate">if ("Promise" in window) {
+ let btn = document.getElementById("btn");
+ btn.addEventListener("click",testPromise);
+} else {
+ log = document.getElementById('log');
+ log.innerHTML = "Live example not available as your browser doesn't support the &lt;code&gt;Promise&lt;code&gt; interface.";
+}
+</pre>
+</div>
+
+<p>この例はボタンをクリックすると実行されます。 (ブラウザーが <code>Promise</code> に対応している必要があります。)</p>
+
+<p>短い時間の間に何度かボタンをクリックすると、それぞれの promise が次々と成功するのがわかります。</p>
+
+<p>{{EmbedLiveSample("Advanced_Example", "500", "200")}}</p>
+
+<h3 id="Loading_an_image_with_XHR" name="Loading_an_image_with_XHR">XHR による画像の読み込み</h3>
+
+<p><code>Promise</code> と {{domxref("XMLHttpRequest")}} で画像を読み込む別の例は、 MDN GitHub <a href="https://github.com/mdn/js-examples/tree/master/promises-test">js-examples</a> リポジトリにあり、<a href="https://mdn.github.io/js-examples/promises-test/">動作を確認する</a>ことができます。それぞれの行のコメントで Promise と XHR の構造がよくわかるはずです。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-promise-objects', 'Promise')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">互換性データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> に対してプルリクエストを書いてください。</div>
+
+<p>{{Compat("javascript.builtins.Promise")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Using_promises">プロミスの使用</a></li>
+ <li><a href="http://promisesaplus.com/">Promises/A+ specification</a></li>
+ <li><a href="https://medium.com/@ramsunvtech/promises-of-promise-part-1-53f769245a53">Venkatraman.R - JS Promise (Part 1, Basics)</a></li>
+ <li><a href="https://medium.com/@ramsunvtech/js-promise-part-2-q-js-when-js-and-rsvp-js-af596232525c#.dzlqh6ski">Venkatraman.R - JS Promise (Part 2 - Using Q.js, When.js and RSVP.js)</a></li>
+ <li><a href="https://tech.io/playgrounds/11107/tools-for-promises-unittesting/introduction">Venkatraman.R - Tools for Promises Unit Testing</a></li>
+ <li><a href="http://www.html5rocks.com/en/tutorials/es6/promises/">Jake Archibald: JavaScript Promises: There and Back Again</a></li>
+ <li><a href="http://de.slideshare.net/domenicdenicola/callbacks-promises-and-coroutines-oh-my-the-evolution-of-asynchronicity-in-javascript">Domenic Denicola: Callbacks, Promises, and Coroutines – Asynchronous Programming Patterns in JavaScript</a></li>
+ <li><a href="http://www.mattgreer.org/articles/promises-in-wicked-detail/">Matt Greer: JavaScript Promises ... In Wicked Detail</a></li>
+ <li><a href="https://www.promisejs.org/">Forbes Lindesay: promisejs.org</a></li>
+ <li><a href="https://github.com/anonyco/SPromiseMeSpeedJS/blob/master/README.md">Speed-polyfill to polyfill both promise availability and promise performance.</a></li>
+ <li><a href="https://github.com/jakearchibald/es6-promise/">Promise polyfill</a></li>
+ <li><a href="https://www.udacity.com/course/javascript-promises--ud898">Udacity: JavaScript Promises</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/promise/promise/index.html b/files/ja/web/javascript/reference/global_objects/promise/promise/index.html
new file mode 100644
index 0000000000..816285a046
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/promise/promise/index.html
@@ -0,0 +1,109 @@
+---
+title: Promise() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Promise/Promise
+tags:
+ - Constructor
+ - JavaScript
+ - Promise
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Promise/Promise
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Promise</code></strong> コンストラクターは、主にまだプロミスに対応していない関数をラップするために使用します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/promise-constructor.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Promise(<var>executor</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>executor</var></code></dt>
+ <dd>新しい <code>Promise</code> オブジェクトを構築する過程でコンストラクターによって呼び出される {{jsxref("function")}} です。 <code><var>executor</var></code> は結果をプロミスに結びつけるカスタムコードです。プログラマーが <code><var>executor</var></code> を書きます。この関数の形式は次のようなものであると期待されます。</dd>
+ <dt>
+ <pre class="brush: js notranslate">function(<var>resolutionFunc</var>, <var>rejectionFunc</var>){
+  // 通常、いくつかの非同期操作。
+}
+</pre>
+ </dt>
+ <dd>コンストラクターが新しい <code>Promise</code> オブジェクトを生成するとき、 <code><var>resolutionFunc</var></code> と <code><var>rejectionFunc</var></code> の一対の関数も生成します。これらは <code>Promise</code> オブジェクトに「結束」されます。従って、 <code><var>executor</var></code> の中のコードが何らかの操作を実行し、その操作の結果を (値が別の Promise オブジェクトでない場合) 「満足」または「拒否」として、それぞれ <code><var>resolutionFunc</var></code> または <code><var>rejectionFunc</var></code> のどちらかを呼び出すことで反映する機会を持っています。</dd>
+ <dd><code><var>executor</var></code> は意味のある返値を持ちません。これは <code><var>resolutionFunc</var></code> または <code><var>rejectionFunc</var></code> を使用することの副作用を介して通信します。この副作用とは、 <code>Promise</code> が「解決済み」になることです。</dd>
+ <dd>通常は、次のように動作します。 <code><var>executor</var></code> の内部の走査は非同期であり、コールバックを提供します。コールバックは <code><var>executor</var></code> のコード内で定義されます。コールバックは、 <code><var>resolutionFunc</var></code> を呼び出すことで終了します。 <code><var>resolutionFunc</var></code> の呼び出しには、引数 <code>value</code> が含まれます。 <code>value</code> は、結束された <code>Promise</code> オブジェクトに渡されます。 <code>Promise</code> オブジェクトは (非同期的に) それに関連付けられた任意の <code>.then()</code> を呼び出します。 <code>.then()</code> によって受け取った <code>value</code> は、 <code>handleFulfilled</code> の呼び出しに入力引数として渡されます (「連鎖したプロミス」の節を参照)。</dd>
+ <dd>また、 <code><var>executor</var></code> はエラー時に <code><var>rejectionFunc</var></code> を呼び出す <code>try{} catch()</code> ブロックを含む可能性があります。</dd>
+ <dd>これらの2つの関数の呼び出し形式は単純で、あらゆる型の引数を1つだけ取ります。もちろん、これらの関数の実際の名前は好きにしてよく、すなわち、 <code><var>executor</var></code> の引数として名づけます。どちらの関数も必要な時に呼び出すために使用します。</dd>
+</dl>
+
+<dl>
+ <dd>
+ <pre class="brush: js notranslate">resolutionFunc(value) // 満足したときに呼び出される
+rejectionFunc(reason) // <em>拒否されたとき</em>に呼び出される</pre>
+
+ <p>返される <code>value</code> は、プロミスをチェーンに動的に挿入するために、別なプロミスオブジェクトにすることができます。</p>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>new</code> を通じて呼び出された場合、 <code>Promise</code> コンストラクターはプロミスオブジェクトを返します。このプロミスオブジェクトは、 <code><var>resolutionFunc</var></code> 関数または <code><var>rejectionFunc</var></code> 関数が呼び出されると「解決」になります。なお、 <code><var>resolutionFunc</var></code> または <code><var>rejectionFunc</var></code> を別な Promise オブジェクトを引数にして呼び出すと、これが「解決」であると言えますが、「満足」であるとは言えません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_a_new_Promise" name="Creating_a_new_Promise">新しい Promise の作成</h3>
+
+<p><code>Promise</code> オブジェクトは <code>new</code> キーワードとコンストラクターで作成されます。コンストラクターは executor 関数と呼ばれる引数を取ります。 executor 関数は 2 つの関数を引数として取ります。1 つめの関数 (<code>resolve)</code> は非同期タスクが成功して完了した場合に呼び出され、タスクの結果を値として返します。2 つめの関数 (<code>reject</code>) はタスクが失敗した場合に呼び出され、失敗した理由 (典型的には error オブジェクト) を返します。</p>
+
+<pre class="brush: js; notranslate">const myFirstPromise = new Promise((resolve, reject) =&gt; {
+ // do something asynchronous which eventually calls either:
+ //
+ // resolve(someValue) // fulfilled
+ // or
+ // reject("failure reason") // rejected
+});
+</pre>
+
+<h3 id="Making_functions_return_a_Promise" name="Making_functions_return_a_Promise">Promise を返す関数の作成</h3>
+
+<p>関数に Promise 機能を提供するには、次のように単に Promise を返すようにします。</p>
+
+<pre class="brush: js; notranslate">function myAsyncFunction(url) {
+ return new Promise((resolve, reject) =&gt; {
+ const xhr = new XMLHttpRequest()
+ xhr.open("GET", url)
+ xhr.onload = () =&gt; resolve(xhr.responseText)
+ xhr.onerror = () =&gt; reject(xhr.statusText)
+ xhr.send()
+ });
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-promise-constructor', 'Promise コンストラクター')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">互換性データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> に対してプルリクエストを書いてください。</div>
+
+<p>{{Compat("javascript.builtins.Promise.Promise")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Using_promises">Promise の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/promise/race/index.html b/files/ja/web/javascript/reference/global_objects/promise/race/index.html
new file mode 100644
index 0000000000..1ca06d96da
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/promise/race/index.html
@@ -0,0 +1,182 @@
+---
+title: Promise.race()
+slug: Web/JavaScript/Reference/Global_Objects/Promise/race
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Promise
+ - Reference
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Promise/race
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Promise.race()</strong></code> メソッドは、反復可能オブジェクトの中の Promise のうちの1つが解決または拒否するとすぐに、その Promise の値または理由で解決または拒否する Promise を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/promise-race.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Promise.race(<var>iterable</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>iterable</code></dt>
+ <dd>{{jsxref("Array")}} のような反復可能なオブジェクト。 <a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">iterable</a> を確認してください。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><strong>待ち状態の</strong> {{jsxref("Promise")}} で、反復可能オブジェクトの中で最初に解決または拒否した Promise の値を<strong>非同期に</strong>産出します。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>race</code> 関数は、引数として渡された反復可能オブジェクトの中にある複数の Promise の中で解決する最初の Promise と同じ方法で解決される (同じ値を取る) Promise を返します。</p>
+
+<p>渡された反復可能オブジェクトが空の場合、返される Promise はずっと待ち状態のままです。</p>
+
+<p>反復可能オブジェクトに1つ以上の Promise 以外の値やすでに解決済みの Promise が含まれていた場合、 <code>Promise.race</code> は反復可能オブジェクトの中で見つけたこれらの値の内の最初の一つで解決します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Asynchronicity_of_Promise.race" name="Asynchronicity_of_Promise.race">Promise.race の非同期性</h3>
+
+<p>以下の例は、 <code>Promise.race</code> の非同期性を示しています。</p>
+
+<pre class="brush: js notranslate">// we are passing as argument an array of promises that are already resolved,
+// to trigger Promise.race as soon as possible
+var resolvedPromisesArray = [Promise.resolve(33), Promise.resolve(44)];
+
+var p = Promise.race(resolvedPromisesArray);
+// immediately logging the value of p
+console.log(p);
+
+// using setTimeout we can execute code after the stack is empty
+setTimeout(function(){
+ console.log('the stack is now empty');
+ console.log(p);
+});
+
+// logs, in order:
+// Promise { &lt;state&gt;: "pending" }
+// the stack is now empty
+// Promise { &lt;state&gt;: "fulfilled", &lt;value&gt;: 33 }</pre>
+
+<p>空の反復可能オブジェクトを渡すと、無限に解決しない Promise が返されます。</p>
+
+<pre class="brush: js notranslate">var foreverPendingPromise = Promise.race([]);
+console.log(foreverPendingPromise);
+setTimeout(function(){
+ console.log('the stack is now empty');
+ console.log(foreverPendingPromise);
+});
+
+// logs, in order:
+// Promise { &lt;state&gt;: "pending" }
+// the stack is now empty
+// Promise { &lt;state&gt;: "pending" }
+</pre>
+
+<p>反復可能オブジェクトの中に1つ以上の Promise 以外の値や、すでに解決した Promise が含まれていると、 <code>Promise.race</code> は配列の中で見つかった最初のこれらの値で解決します。</p>
+
+<pre class="brush: js notranslate">var foreverPendingPromise = Promise.race([]);
+var alreadyFulfilledProm = Promise.resolve(100);
+
+var arr = [foreverPendingPromise, alreadyFulfilledProm, "non-Promise value"];
+var arr2 = [foreverPendingPromise, "non-Promise value", Promise.resolve(100)];
+var p = Promise.race(arr);
+var p2 = Promise.race(arr2);
+
+console.log(p);
+console.log(p2);
+setTimeout(function(){
+ console.log('the stack is now empty');
+ console.log(p);
+ console.log(p2);
+});
+
+// logs, in order:
+// Promise { &lt;state&gt;: "pending" }
+// Promise { &lt;state&gt;: "pending" }
+// the stack is now empty
+// Promise { &lt;state&gt;: "fulfilled", &lt;value&gt;: 100 }
+// Promise { &lt;state&gt;: "fulfilled", &lt;value&gt;: "non-Promise value" }
+</pre>
+
+<h3 id="Promise.race_の使用_–_setTimeout_を使用した例">Promise.race の使用 – setTimeout を使用した例</h3>
+
+<pre class="brush: js notranslate">var p1 = new Promise(function(resolve, reject) {
+ setTimeout(() =&gt; resolve('one'), 500);
+});
+var p2 = new Promise(function(resolve, reject) {
+ setTimeout(() =&gt; resolve('two'), 100);
+});
+
+Promise.race([p1, p2])
+.then(function(value) {
+ console.log(value); // "two"
+ // Both fulfill, but p2 is faster
+});
+
+var p3 = new Promise(function(resolve, reject) {
+ setTimeout(() =&gt; resolve('three'), 100);
+});
+var p4 = new Promise(function(resolve, reject) {
+ setTimeout(() =&gt; reject(new Error('four')), 500);
+});
+
+Promise.race([p3, p4])
+.then(function(value) {
+ console.log(value); // "three"
+ // p3 is faster, so it fulfills
+}, function(reason) {
+ // Not called
+});
+
+var p5 = new Promise(function(resolve, reject) {
+ setTimeout(() =&gt; resolve('five'), 500);
+});
+var p6 = new Promise(function(resolve, reject) {
+ setTimeout(() =&gt; reject(new Error('six')), 100);
+});
+
+Promise.race([p5, p6])
+.then(function(value) {
+ // Not called
+}, function(error) {
+ console.log(error.message); // "six"
+ // p6 is faster, so it rejects
+});
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-promise.race', 'Promise.race')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">互換性データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> に対してプルリクエストを書いてください。</div>
+
+<p>{{Compat("javascript.builtins.Promise.race")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Promise")}}</li>
+ <li>{{jsxref("Promise.all()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/promise/reject/index.html b/files/ja/web/javascript/reference/global_objects/promise/reject/index.html
new file mode 100644
index 0000000000..f59d0bea93
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/promise/reject/index.html
@@ -0,0 +1,74 @@
+---
+title: Promise.reject()
+slug: Web/JavaScript/Reference/Global_Objects/Promise/reject
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Promise
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Promise/reject
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Promise.reject()</code></strong> メソッドは、引数で与えられた理由でリジェクトされた <code>Promise</code> オブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/promise-reject.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Promise.reject(<var>reason</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>reason</var></code></dt>
+ <dd>この<code>Promise</code>オブジェクトのリジェクトされた理由</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた理由で拒否された {{jsxref("Promise")}} 。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>静的な <code>Promise.reject</code> 関数は拒否された <code>Promise</code> を返します。デバッグのためにキャッチするエラーを選別したい場合は、 <code>reason</code> を <code>instanceof</code> {{jsxref("Error")}} にかけると良いでしょう。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_static_Promise.reject_method" name="Using_the_static_Promise.reject_method">静的な Promise.reject() メソッドの使用</h3>
+
+<pre class="brush: js notranslate">Promise.reject(new Error('fail')).then(function() {
+ // ここは呼ばれません。
+}, function(error) {
+ console.error(error); // Stacktrace
+});</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-promise.reject', 'Promise.reject')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">互換性データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> に対してプルリクエストを書いてください。</div>
+
+<p>{{Compat("javascript.builtins.Promise.reject")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Promise")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/promise/resolve/index.html b/files/ja/web/javascript/reference/global_objects/promise/resolve/index.html
new file mode 100644
index 0000000000..4584bdf8be
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/promise/resolve/index.html
@@ -0,0 +1,139 @@
+---
+title: Promise.resolve()
+slug: Web/JavaScript/Reference/Global_Objects/Promise/resolve
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Promise
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Promise/resolve
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Promise.resolve()</code></strong> メソッドは、与えられた値で解決した {{jsxref("Promise")}} オブジェクトを返します。その値がプロミスであった場合は、そのプロミスが返されます。その値が thenable (すなわち {{jsxref("Promise.then", "\"then\" メソッド")}} を持っている場合) であれば、返されるプロミスは thenable を「追跡」し、その最終的な状態を採用します。それ以外の場合は、引数で満足したプロミスが返されます。この関数は複数階層のプロミス風オブジェクト (例えば、何かで解決するプロミスで解決するプロミス) を単一の階層に平坦化します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Promise.resolve(<var>value</var>);
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>この <code>Promise</code> で解決する際の引数。解決するための <code>Promise</code> または thenable にすることもできます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた値で解決された {{jsxref("Promise")}}、または value がプロミスオブジェクトであった場合、値として渡されたプロミスです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>静的な <code>Promise.resolve</code> 関数は、解決する <code>Promise</code> を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_static_Promise.resolve_method" name="Using_the_static_Promise.resolve_method">静的な Promise.resolve メソッドの使用</h3>
+
+<pre class="brush: js notranslate">Promise.resolve('Success').then(function(value) {
+ console.log(value); // "Success"
+}, function(value) {
+ // not called
+});
+</pre>
+
+<h3 id="Resolving_an_array" name="Resolving_an_array">配列で解決</h3>
+
+<pre class="brush: js notranslate">var p = Promise.resolve([1,2,3]);
+p.then(function(v) {
+ console.log(v[0]); // 1
+});
+</pre>
+
+<h3 id="Resolving_another_Promise" name="Resolving_another_Promise">別の Promise で解決</h3>
+
+<pre class="brush: js notranslate">var original = Promise.resolve(33);
+var cast = Promise.resolve(original);
+cast.then(function(value) {
+  console.log('value: ' + value);
+});
+console.log('original === cast ? ' + (original === cast));
+
+// ログの順番:
+// original === cast ? true
+// value: 33
+</pre>
+
+<p>ログの順番が反転するのは、 <code>then</code> ハンドラーが非同期に呼び出されるために発生します。 <code>then</code> がどのように動作するのかは<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise/then#Return_value">こちら</a>を参照してください。</p>
+
+<h3 id="Resolving_thenables_and_throwing_Errors" name="Resolving_thenables_and_throwing_Errors">thenables で解決してエラーを発生させる</h3>
+
+<pre class="brush: js notranslate">// Resolving a thenable object
+var p1 = Promise.resolve({
+ then: function(onFulfill, onReject) { onFulfill('fulfilled!'); }
+});
+console.log(p1 instanceof Promise) // true, object casted to a Promise
+
+p1.then(function(v) {
+ console.log(v); // "fulfilled!"
+ }, function(e) {
+ // not called
+});
+
+// Thenable throws before callback
+// Promise rejects
+var thenable = { then: function(resolve) {
+ throw new TypeError('Throwing');
+ resolve('Resolving');
+}};
+
+var p2 = Promise.resolve(thenable);
+p2.then(function(v) {
+ // not called
+}, function(e) {
+ console.error(e); // TypeError: Throwing
+});
+
+// Thenable throws after callback
+// Promise resolves
+var thenable = { then: function(resolve) {
+ resolve('Resolving');
+ throw new TypeError('Throwing');
+}};
+
+var p3 = Promise.resolve(thenable);
+p3.then(function(v) {
+ console.log(v); // "Resolving"
+}, function(e) {
+ // not called
+});
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-promise.resolve', 'Promise.resolve')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">互換性データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> に対してプルリクエストを書いてください。</div>
+
+<p>{{Compat("javascript.builtins.Promise.resolve")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Promise")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/promise/then/index.html b/files/ja/web/javascript/reference/global_objects/promise/then/index.html
new file mode 100644
index 0000000000..323e7e874f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/promise/then/index.html
@@ -0,0 +1,300 @@
+---
+title: Promise.prototype.then()
+slug: Web/JavaScript/Reference/Global_Objects/Promise/then
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Promise
+ - Prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/Promise/then
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>then()</strong></code> メソッドは {{jsxref("Promise")}} を返します。最大2つの引数、 <code>Promise</code> が成功した場合と失敗した場合のコールバック関数を取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/promise-then.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<div class="note">
+<p>片方または両方の引数が省略されたり、関数ではないものが渡されたりした場合、 <code>then</code> にはハンドラーが不足しますが、エラーは発生しません。 <code>Promise</code> が状態 (<code>fulfillment</code> (完了) または <code>rejection</code> (拒否)) を受け入れるに当たって <code>then</code> が呼び出された際に、 <code>then</code> がハンドラーを持たない場合は、 <code>then</code> が呼び出された元の <code>Promise</code> の最後の状態を受け入れた、追加のハンドラーのない新しい <code>Promise</code> が生成されます。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>p.then(onFulfilled[, onRejected])</var>;
+
+p.then(value =&gt; {
+ // fulfillment
+}, reason =&gt; {
+ // rejection
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>onFulfilled</code> {{optional_inline}}</dt>
+ <dd><code>Promise</code> が成功したときに呼び出される {{jsxref("Function")}} です。この関数は1つの引数、 <code>fulfillment value</code> を持ちます。これが関数ではない場合は、内部的に "Identity" 関数 (受け取った引数を返す関数) に置き換えられます。</dd>
+ <dt><code>onRejected</code> {{optional_inline}}</dt>
+ <dd><code>Promise</code> が拒絶されたときに呼び出される {{jsxref("Function")}} です。この関数は1つの引数、 <code>rejection reason</code> を持ちます。これが関数ではない場合は、内部的に "Thrower" 関数 (引数として受け取ったエラーを投げる関数) に置き換えられます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Promise")}} が完了するか拒否されると、それぞれのハンドラー関数 (<code>onFulfilled</code> または <code>onRejected</code>) が<strong>非同期に</strong>呼び出されます (現在のスレッドループにスケジュールされます)。ハンドラー関数のこの動作は特定の一連の規則に従います。もしハンドラー関数が・・・</p>
+
+<ul>
+ <li>値を返した場合、 <code>then</code> によって返される Promise は返値をその値として解決します。</li>
+ <li>何も返さなかった場合、 <code>then</code> によって返される Promise は <code>undefined</code> の値で解決します。</li>
+ <li>エラーを投げた場合、 <code>then</code> によって返される Promise は、その値としてエラーを投げて拒絶されます。</li>
+ <li>すでに解決している Promise を返した場合、 <code>then</code> によって返される Promise は、その Promise の値をその値として返します。</li>
+ <li>すでに拒絶された Promise を返した場合、 <code>then</code> によって返される Promise は、その Promise の値をその値として拒絶されます。</li>
+ <li>他の <strong>pending</strong> 状態の Promise オブジェクトを返した場合、 <code>then</code> によって返された Promise の解決/拒絶は、ハンドラーによって返された Promise の解決/拒絶結果に依存します。また、 <code>then</code> によって返された Promise の解決値は、ハンドラーによって返された Promise の解決値と同じになります。</li>
+</ul>
+
+<p>以下は、 <code>then</code> メソッドの非同期性を示す例です。</p>
+
+<pre class="brush: js notranslate">// using a resolved promise, the 'then' block will be triggered instantly,
+// but its handlers will be triggered asynchronously as demonstrated by the console.logs
+const resolvedProm = Promise.resolve(33);
+
+let thenProm = resolvedProm.then(value =&gt; {
+ console.log("this gets called after the end of the main stack. the value received and returned is: " + value);
+ return value;
+});
+// instantly logging the value of thenProm
+console.log(thenProm);
+
+// using setTimeout we can postpone the execution of a function to the moment the stack is empty
+setTimeout(() =&gt; {
+ console.log(thenProm);
+});
+
+
+// logs, in order:
+// Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
+// "this gets called after the end of the main stack. the value received and returned is: 33"
+// Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: 33}</pre>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>then</code> メソッドや {{jsxref("Promise.prototype.catch()")}} メソッドは <code>Promise</code> を返すので、<a href="/ja/docs/Web/JavaScript/Guide/Using_promises#Chaining">チェーン可能</a>です。 — これは <em>composition</em> と呼ばれる操作です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_then_method" name="Using_the_then_method"><code>then</code> メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var p1 = new Promise((resolve, reject) =&gt; {
+ resolve('Success!');
+ // or
+ // reject(new Error("Error!"));
+});
+
+p1.then(value =&gt; {
+ console.log(value); // Success!
+}, reason =&gt; {
+ console.error(reason); // Error!
+} );
+</pre>
+
+<h3 id="Chaining" name="Chaining">チェーン</h3>
+
+<p><code>then</code> メソッドは <code>Promise</code> を返すので、メソッドチェーンができます。</p>
+
+<p>関数が <code>then</code> にハンドラーとして渡されると <code>Promise</code> を返します。同じ <code>Promise</code> がメソッドチェーンの次の <code>then</code> に現れます。次のスニペットは、非同期実行をシミュレートする、 <code>setTimeout()</code> 関数付きのコードです。</p>
+
+<pre class="brush: js notranslate">Promise.resolve('foo')
+ // 1. Receive "foo", concatenate "bar" to it, and resolve that to the next then
+ .then(function(string) {
+ return new Promise(function(resolve, reject) {
+ setTimeout(function() {
+ string += 'bar';
+ resolve(string);
+ }, 1);
+ });
+ })
+ // 2. receive "foobar", register a callback function to work on that string
+ // and print it to the console, but not before returning the unworked on
+ // string to the next then
+ .then(function(string) {
+ setTimeout(function() {
+ string += 'baz';
+ console.log(string); // foobarbaz
+ }, 1)
+ return string;
+ })
+ // 3. print helpful messages about how the code in this section will be run
+ // before the string is actually processed by the mocked asynchronous code in the
+ // previous then block.
+ .then(function(string) {
+ console.log("Last Then: oops... didn't bother to instantiate and return " +
+ "a promise in the prior then so the sequence may be a bit " +
+ "surprising");
+
+ // Note that `string` will not have the 'baz' bit of it at this point. This
+ // is because we mocked that to happen asynchronously with a setTimeout function
+ console.log(string); // foobar
+ });
+
+// logs, in order:
+// Last Then: oops... didn't bother to instantiate and return a promise in the prior then so the sequence may be a bit surprising
+// foobar
+// foobarbaz</pre>
+
+<p><code>then()</code> の引数として渡された関数(ハンドラ)が値を返した場合は、 <code>Promise.resolve (&lt;ハンドラーが呼ばれて返された値&gt;) </code>によって、返値を自動的に <code>Promise</code> でラップします。</p>
+
+<pre class="brush: js notranslate">var p2 = new Promise(function(resolve, reject) {
+ resolve(1);
+});
+
+p2.then(function(value) {
+ console.log(value); // 1
+ return value + 1;
+}).then(function(value) {
+ console.log(value + ' - A synchronous value works'); // 2 - A synchronous value works
+});
+
+p2.then(function(value) {
+ console.log(value); // 1
+});
+</pre>
+
+<p><code>then</code> の引数として渡した関数が拒絶された Promise が返した場合や、例外 (エラー) が発生した場合は、拒絶された Promise を返します。</p>
+
+<pre class="brush: js notranslate">Promise.resolve()
+ .then(() =&gt; {
+ // Makes .then() return a rejected promise
+ throw new Error('Oh no!');
+ })
+ .then(() =&gt; {
+ console.log('Not called.');
+ }, error =&gt; {
+ console.error('onRejected function called: ' + error.message);
+ });</pre>
+
+<p>その他の場合はすべて、<ruby>解決中<rp> (</rp><rt>resolving</rt><rp>) </rp></ruby>の Promise が返されます。次の例では、チェーン上の以前の Promise が拒絶されていても、最初の <code>then()</code> は解決中の Promise に含まれた <code>42</code> を返します。</p>
+
+<pre class="brush: js notranslate">Promise.reject()
+ .then(() =&gt; 99, () =&gt; 42) // onRejected returns 42 which is wrapped in a resolving Promise
+ .then(solution =&gt; console.log('Resolved with ' + solution)); // Resolved with 42</pre>
+
+<p>多くの場合、 <code>catch</code> を使って失敗状態の Promise を補足する方が、 <code>then</code> の 2 つのハンドラーを使って処理するよりも現実的です。下記の例を見てください。</p>
+
+<pre class="brush: js notranslate">Promise.resolve()
+ .then(() =&gt; {
+ // Makes .then() return a rejected promise
+ throw new Error('Oh no!');
+ })
+ .catch(error =&gt; {
+ console.error('onRejected function called: ' + error.message);
+ })
+ .then(() =&gt; {
+ console.log("I am always called even if the prior then's promise rejects");
+ });</pre>
+
+<p>Promise ベースの API を持った関数同士であれば、別の関数上に他の関数を実装することでチェーンを使うこともできます。</p>
+
+<pre class="brush: js notranslate">function fetch_current_data() {
+ // The <a href="/en-US/docs/Web/API/GlobalFetch/fetch">fetch</a>() API returns a Promise. This function
+ // exposes a similar API, except the fulfillment
+ // value of this function's Promise has had more
+ // work done on it.
+ return fetch('current-data.json').then(response =&gt; {
+ if (response.headers.get('content-type') != 'application/json') {
+ throw new TypeError();
+ }
+ var j = response.json();
+ // maybe do something with j
+ return j; // fulfillment value given to user of
+ // fetch_current_data().then()
+ });
+}
+</pre>
+
+<p><code>onFulfilled</code> がプロミスを返した場合、 <code>then</code> の返値はプロミスによって解決/拒否されます。</p>
+
+<pre class="brush: js notranslate">function resolveLater(resolve, reject) {
+ setTimeout(function() {
+ resolve(10);
+ }, 1000);
+}
+function rejectLater(resolve, reject) {
+ setTimeout(function() {
+ reject(new Error('Error'));
+ }, 1000);
+}
+
+var p1 = Promise.resolve('foo');
+var p2 = p1.then(function() {
+ // Return promise here, that will be resolved to 10 after 1 second
+ return new Promise(resolveLater);
+});
+p2.then(function(v) {
+ console.log('resolved', v); // "resolved", 10
+}, function(e) {
+ // not called
+ console.error('rejected', e);
+});
+
+var p3 = p1.then(function() {
+ // Return promise here, that will be rejected with 'Error' after 1 second
+ return new Promise(rejectLater);
+});
+p3.then(function(v) {
+ // not called
+ console.log('resolved', v);
+}, function(e) {
+ console.error('rejected', e); // "rejected", 'Error'
+});
+</pre>
+
+<h3 id="window.setImmediate_style_promise-based_polyfill" name="window.setImmediate_style_promise-based_polyfill">window.setImmediate 形式のプロミスベースの代替処理</h3>
+
+<p>{{jsxref("Function.prototype.bind()")}} を使用して、 <code>Reflect.apply</code> ({{jsxref("Reflect.apply()")}}) メソッドは (キャンセルできない) {{domxref("window.setImmediate")}} 形式の関数を作成することができます。</p>
+
+<pre class="brush: js notranslate">const nextTick = (() =&gt; {
+ const noop = () =&gt; {}; // literally
+ const nextTickPromise = () =&gt; Promise.resolve().then(noop);
+
+ const rfab = Reflect.apply.bind; // (thisArg, fn, thisArg, [...args])
+ const nextTick = (fn, ...args) =&gt; (
+ fn !== undefined
+ ? Promise.resolve(args).then(rfab(null, fn, null))
+ : nextTickPromise(),
+ undefined
+ );
+ nextTick.ntp = nextTickPromise;
+
+ return nextTick;
+})();
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-promise.prototype.then', 'Promise.prototype.then')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">互換性データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> に対してプルリクエストを書いてください。</div>
+
+<p>{{Compat("javascript.builtins.Promise.then")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Promise")}}</li>
+ <li>{{jsxref("Promise.prototype.catch()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/index.html b/files/ja/web/javascript/reference/global_objects/proxy/index.html
new file mode 100644
index 0000000000..b05f74ff59
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/index.html
@@ -0,0 +1,453 @@
+---
+title: Proxy
+slug: Web/JavaScript/Reference/Global_Objects/Proxy
+tags:
+ - Class
+ - ECMAScript 2015
+ - JavaScript
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy
+---
+<div>{{JSRef}}</div>
+
+<p><code>Proxy</code> オブジェクトにより別なオブジェクトのプロキシを作成することができ、そのオブジェクトの基本的な操作を傍受したり再定義したりすることができます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Proxy</code> は二つの引数で作成されます。</p>
+
+<ul>
+ <li><code>target</code>: プロキシを設定する元のオブジェクトです。</li>
+ <li><code>handler</code>: どの操作を傍受するか、また傍受された操作をどのように再定義するかを定義するオブジェクトです。</li>
+</ul>
+
+<p>例えばこのコードでは、二つのプロパティだけを持つシンプルなターゲットと、プロパティを持たないよりシンプルなハンドラーを定義しています。</p>
+
+<pre class="brush: js notranslate">const target = {
+ message1: "hello",
+ message2: "everyone"
+};
+
+const handler1 = {};
+
+const proxy1 = new Proxy(target, handler1);
+</pre>
+
+<p>ハンドラーは空なので、このプロキシは元のターゲットと同様に動作します。</p>
+
+<pre class="brush: js notranslate">console.log(proxy1.message1); // hello
+console.log(proxy1.message2); // everyone
+</pre>
+
+<p>プロキシをカスタマイズするには、ハンドラーオブジェクトに関数を定義します。</p>
+
+<pre class="brush: js notranslate">const target = {
+ message1: "hello",
+ message2: "everyone"
+};
+
+const handler2 = {
+ get: function(target, prop, receiver) {
+ return "world";
+ }
+};
+
+const proxy2 = new Proxy(target, handler2);</pre>
+
+<p>ここで {{jsxref("Global_Objects/Proxy/handler/get", "get()")}} ハンドラーを実装し、ターゲットのプロパティへのアクセスを傍受します。</p>
+
+<p>ハンドラー関数は<em>トラップ</em>と呼ばれることがありますが、これはおそらくターゲットオブジェクトへの呼び出しをトラップするからでしょう。上記の <code>handler2</code> のとても単純なトラップは、すべてのプロパティアクセサーを再定義します。</p>
+
+<pre class="brush: js notranslate">console.log(proxy2.message1); // world
+console.log(proxy2.message2); // world</pre>
+
+<p>{{jsxref("Reflect")}} クラスの助けを借りて、いくつかのアクセサーに元の動作を与えたり、ほかのアクセサーを再定義したりすることができます。</p>
+
+<pre class="brush: js notranslate">const target = {
+ message1: "hello",
+ message2: "everyone"
+};
+
+const handler3 = {
+ get: function (target, prop, receiver) {
+ if (prop === "message2") {
+ return "world";
+ }
+ return Reflect.get(...arguments);
+ },
+};
+
+const proxy3 = new Proxy(target, handler3);
+
+console.log(proxy3.message1); // hello
+console.log(proxy3.message2); // world</pre>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Proxy/Proxy", "Proxy()")}}</dt>
+ <dd>新しい <code>Proxy</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Proxy.revocable()")}}</dt>
+ <dd>取り消し可能な <code>Proxy</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_example" name="Basic_example">基本的な例</h3>
+
+<p>この例では、与えられたプロパティ名がオブジェクトに存在しない場合、既定値である <code>37</code> を返します。ここでは {{jsxref("Global_Objects/Proxy/handler/get", "get")}} ハンドラーを使用しています。</p>
+
+<pre class="brush: js notranslate">const handler = {
+ get: function(obj, prop) {
+ return prop in obj ?
+ obj[prop] :
+ 37;
+ }
+};
+
+const p = new Proxy({}, handler);
+p.a = 1;
+p.b = undefined;
+
+console.log(p.a, p.b);
+// 1, undefined
+
+console.log('c' in p, p.c);
+// false, 37
+</pre>
+
+<h3 id="No-op_forwarding_proxy" name="No-op_forwarding_proxy">何もしない転送プロキシ</h3>
+
+<p>この例では、プロキシが、それに対して適用されるすべての操作を転送する先に、ネイティブの JavaScript オブジェクトを使っています。</p>
+
+<pre class="brush: js notranslate">const target = {};
+const p = new Proxy(target, {});
+
+p.a = 37;
+// 操作はプロキシへ転送されます
+
+console.log(target.a);
+// 37 が出力されます。
+// 操作は正しく転送されました
+</pre>
+
+<p>上記のコードは JavaScript オブジェクトでは動作しますが、 DOM 要素などのネイティブのブラウザーオブジェクトでは動作しないことに注意してください。</p>
+
+<h3 id="Validation" name="Validation">検証</h3>
+
+<p><code>Proxy</code> を使うと、オブジェクトに渡された値を簡単に検証できます。この例では {{jsxref("Global_Objects/Proxy/handler/set", "set")}} ハンドラーを使用しています。</p>
+
+<pre class="brush: js notranslate">let validator = {
+ set: function(obj, prop, value) {
+ if (prop === 'age') {
+ if (!Number.isInteger(value)) {
+ throw new TypeError('年齢が整数ではありません');
+ }
+ if (value &gt; 200) {
+ throw new RangeError('年齢が不正なようです');
+ }
+ }
+
+ // 値を保存する既定の挙動
+ obj[prop] = value;
+
+ // 値の保存が成功したことを返します。
+ return true;
+ }
+};
+
+let person = new Proxy({}, validator);
+
+person.age = 100;
+console.log(person.age); // 100
+person.age = 'young'; // 例外が発生する
+person.age = 300; // 例外が発生する
+</pre>
+
+<h3 id="Extending_constructor" name="Extending_constructor">コンストラクターを拡張する</h3>
+
+<p>関数の Proxy で、コンストラクターを新たなコンストラクターへ簡単に拡張できます。この例では {{jsxref("Global_Objects/Proxy/handler/construct", "construct")}} および {{jsxref("Global_Objects/Proxy/handler/apply", "apply")}} ハンドラーを使用しています。</p>
+
+<pre class="brush: js notranslate">function extend(sup, base) {
+ var descriptor = Object.getOwnPropertyDescriptor(
+ base.prototype, 'constructor'
+ );
+ base.prototype = Object.create(sup.prototype);
+ var handler = {
+ construct: function(target, args) {
+ var obj = Object.create(base.prototype);
+ this.apply(target, obj, args);
+ return obj;
+ },
+ apply: function(target, that, args) {
+ sup.apply(that, args);
+ base.apply(that, args);
+ }
+ };
+ var proxy = new Proxy(base, handler);
+ descriptor.value = proxy;
+ Object.defineProperty(base.prototype, 'constructor', descriptor);
+ return proxy;
+}
+
+var Person = function(name) {
+ this.name = name;
+};
+
+var Boy = extend(Person, function(name, age) {
+ this.age = age;
+});
+
+Boy.prototype.gender = 'M';
+
+var Peter = new Boy('Peter', 13);
+
+console.log(Peter.gender); // "M"
+console.log(Peter.name); // "Peter"
+console.log(Peter.age); // 13</pre>
+
+<h3 id="Manipulating_DOM_nodes" name="Manipulating_DOM_nodes">DOM ノードの操作</h3>
+
+<p>2 つの異なる要素の属性やクラス名を切り替えたい場合があります。それを実現する方法を紹介しましょう。</p>
+
+<pre class="brush: js notranslate">let view = new Proxy({
+ selected: null
+},
+{
+ set: function(obj, prop, newval) {
+ let oldval = obj[prop];
+
+ if (prop === 'selected') {
+ if (oldval) {
+ oldval.setAttribute('aria-selected', 'false');
+ }
+ if (newval) {
+ newval.setAttribute('aria-selected', 'true');
+ }
+ }
+
+ // 値を保存する既定の挙動
+ obj[prop] = newval;
+
+ // 値の保存が成功したことを返します。
+ return true;
+ }
+});
+
+let i1 = view.selected = document.getElementById('item-1'); // ここではエラーが発生し、 i1 は null になります
+console.log(i1.getAttribute('aria-selected'));
+// 'true'
+
+let i2 = view.selected = document.getElementById('item-2');
+console.log(i1.getAttribute('aria-selected'));
+// 'false'
+
+console.log(i2.getAttribute('aria-selected'));
+// 'true'
+Note: even if selected: !null, then giving oldval.setAttribute is not a function
+</pre>
+
+<h3 id="Value_correction_and_an_extra_property" name="Value_correction_and_an_extra_property">値補正と追加プロパティ</h3>
+
+<p>この <code>products</code> プロキシオブジェクトは、渡された値を評価し、必要であれば配列に変換します。また、 <code>latestBrowser</code> という追加プロパティをゲッターとセッターの両方でサポートしています。</p>
+
+<pre class="brush: js notranslate">let products = new Proxy({
+ browsers: ['Internet Explorer', 'Netscape']
+},
+{
+ get: function(obj, prop) {
+ // 追加プロパティ
+ if (prop === 'latestBrowser') {
+ return obj.browsers[obj.browsers.length - 1];
+ }
+
+ // 値を返す既定の挙動
+ return obj[prop];
+ },
+ set: function(obj, prop, value) {
+ // 追加プロパティ
+ if (prop === 'latestBrowser') {
+ obj.browsers.push(value);
+ return;
+ }
+
+ // 値が配列でなければ変換
+ if (typeof value === 'string') {
+ value = [value];
+ }
+
+ // 値を保存する既定の挙動
+ obj[prop] = value;
+
+ // 値の保存が成功したことを返します。
+ return true;
+ }
+});
+
+console.log(products.browsers);
+// ['Internet Explorer', 'Netscape']
+
+products.browsers = 'Firefox';
+// (間違えて) 文字列を渡す
+
+console.log(products.browsers);
+// ['Firefox'] &lt;- 問題ありません、値は配列になっています
+
+products.latestBrowser = 'Chrome';
+
+console.log(products.browsers);
+// ['Firefox', 'Chrome']
+
+console.log(products.latestBrowser);
+// 'Chrome'</pre>
+
+<h3 id="Finding_an_array_item_object_by_its_property" name="Finding_an_array_item_object_by_its_property">配列要素のオブジェクトをそのプロパティから検索</h3>
+
+<p>このプロキシは配列をいくつかの実用機能で拡張しています。見ての通り、 {{jsxref("Object.defineProperties", "Object.defineProperties")}} を使わなくても柔軟にプロパティを「定義」できます。この例は、テーブルの列をそのセルから検索するようなコードに応用できます。その場合、ターゲットは {{domxref("HTMLTableElement.rows", "table.rows")}} となります。</p>
+
+<pre class="brush: js notranslate">let products = new Proxy([
+ { name: 'Firefox', type: 'browser' },
+ { name: 'SeaMonkey', type: 'browser' },
+ { name: 'Thunderbird', type: 'mailer' }
+],
+{
+ get: function(obj, prop) {
+ // 値を返す既定の挙動、prop は通常整数値
+ if (prop in obj) {
+ return obj[prop];
+ }
+
+ // 製品の数を取得、products.length のエイリアス
+ if (prop === 'number') {
+ return obj.length;
+ }
+
+ let result, types = {};
+
+ for (let product of obj) {
+ if (product.name === prop) {
+ result = product;
+ }
+ if (types[product.type]) {
+ types[product.type].push(product);
+ } else {
+ types[product.type] = [product];
+ }
+ }
+
+ // 製品を名前で取得
+ if (result) {
+ return result;
+ }
+
+ // 製品を種類で取得
+ if (prop in types) {
+ return types[prop];
+ }
+
+ // 製品の種類を取得
+ if (prop === 'types') {
+ return Object.keys(types);
+ }
+
+ return undefined;
+ }
+});
+
+console.log(products[0]); // { name: 'Firefox', type: 'browser' }
+console.log(products['Firefox']); // { name: 'Firefox', type: 'browser' }
+console.log(products['Chrome']); // undefined
+console.log(products.browser); // [{ name: 'Firefox', type: 'browser' }, { name: 'SeaMonkey', type: 'browser' }]
+console.log(products.types); // ['browser', 'mailer']
+console.log(products.number); // 3
+</pre>
+
+<h3 id="A_complete_traps_list_example" name="A_complete_traps_list_example">完全な <code>traps</code> リストの例</h3>
+
+<p>教育用に <code>traps</code> リストの完全なサンプルを作成するため、そのような操作が特に適している<em>非ネイティブ</em>オブジェクトを Proxy 化します。<a href="/ja/docs/DOM/document.cookie#A_little_framework.3A_a_complete_cookies_reader.2Fwriter_with_full_unicode_support"><code>document.cookie</code> のページにある "リトルフレームワーク"</a> で生成される <code>docCookies</code> グローバルオブジェクトです。</p>
+
+<pre class="brush: js notranslate">/*
+ var docCookies = ... get the "docCookies" object here:
+ https://developer.mozilla.org/ja/docs/DOM/document.cookie#A_little_framework.3A_a_complete_cookies_reader.2Fwriter_with_full_unicode_support
+*/
+
+var docCookies = new Proxy(docCookies, {
+ get: function (oTarget, sKey) {
+ return oTarget[sKey] || oTarget.getItem(sKey) || undefined;
+ },
+ set: function (oTarget, sKey, vValue) {
+ if (sKey in oTarget) { return false; }
+ return oTarget.setItem(sKey, vValue);
+ },
+ deleteProperty: function (oTarget, sKey) {
+ if (sKey in oTarget) { return false; }
+ return oTarget.removeItem(sKey);
+ },
+ enumerate: function (oTarget, sKey) {
+ return oTarget.keys();
+ },
+ ownKeys: function (oTarget, sKey) {
+ return oTarget.keys();
+ },
+ has: function (oTarget, sKey) {
+ return sKey in oTarget || oTarget.hasItem(sKey);
+ },
+ defineProperty: function (oTarget, sKey, oDesc) {
+ if (oDesc &amp;&amp; 'value' in oDesc) { oTarget.setItem(sKey, oDesc.value); }
+ return oTarget;
+ },
+ getOwnPropertyDescriptor: function (oTarget, sKey) {
+ var vValue = oTarget.getItem(sKey);
+ return vValue ? {
+ value: vValue,
+ writable: true,
+ enumerable: true,
+ configurable: false
+ } : undefined;
+ },
+});
+
+/* Cookies test */
+
+console.log(docCookies.my_cookie1 = 'First value');
+console.log(docCookies.getItem('my_cookie1'));
+
+docCookies.setItem('my_cookie1', 'Changed value');
+console.log(docCookies.my_cookie1);</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-objects', 'Proxy')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy", 2)}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a class="external" href="https://www.youtube.com/watch?v=sClk6aB_CPk">"Proxies are awesome" Brendan Eich の JSConf でのプレゼンテーション</a> (<a class="external" href="http://www.slideshare.net/BrendanEich/metaprog-5303821">スライド</a>)</li>
+ <li><a class="external" href="http://wiki.ecmascript.org/doku.php?id=harmony:proxies">ECMAScript Harmony の Proxy 提案ページ</a> と <a class="external" href="http://wiki.ecmascript.org/doku.php?id=harmony:proxies_semantics">ECMAScript Harmony の Proxy 動作ページ</a></li>
+ <li><a class="external" href="http://web.archive.org/web/20171007221059/http://soft.vub.ac.be/~tvcutsem/proxies/">プロキシチュートリアル</a></li>
+ <li><a href="/ja/docs/JavaScript/Old_Proxy_API">旧 Proxy API ページ</a></li>
+ <li>{{jsxref("Object.watch()")}} は非標準の機能ですが、 Gecko が長期間サポートしてきました。</li>
+ <li><a class="external" href="https://github.com/indiejs/structures">Observable data structures using Proxy</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/apply/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/apply/index.html
new file mode 100644
index 0000000000..247cca3d2f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/apply/index.html
@@ -0,0 +1,112 @@
+---
+title: handler.apply()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.apply()</code></strong> メソッドは関数呼び出しに対するトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-apply.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>p</var> = new Proxy(<var>target</var>, {
+ apply: function(<var>target</var>, <var>thisArg</var>, <var>argumentsList</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数が <code>apply()</code> メソッドに渡されます。 <code>this</code> はハンドラーにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクト</dd>
+ <dt><code><var>thisArg</var></code></dt>
+ <dd>この呼び出しに対する <code>this</code> 引数</dd>
+ <dt><code><var>argumentsList</var></code></dt>
+ <dd>この呼び出しに対する引数リスト</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>apply()</code> メソッドはどんな値でも返すことができます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.apply()</strong></code> メソッドは関数呼び出しに対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li><code><var>proxy</var>(...<var>args</var>)</code></li>
+ <li>{{jsxref("Function.prototype.apply()")}} and {{jsxref("Function.prototype.call()")}}</li>
+ <li>{{jsxref("Reflect.apply()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<p><code>target</code> は呼び出し可能、つまり関数でなければなりません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Trapping_a_function_call" name="Trapping_a_function_call">関数呼び出しのトラップ</h3>
+
+<p>次のコードでは、関数呼び出しをトラップします。</p>
+
+<pre class="brush: js notranslate">const p = new Proxy(function() {}, {
+ apply: function(target, thisArg, argumentsList) {
+ console.log('called: ' + argumentsList.join(', '));
+ return argumentsList[0] + argumentsList[1] + argumentsList[2];
+ }
+});
+
+console.log(p(1, 2, 3)); // "called: 1, 2, 3"
+ // 6
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist', '[[Call]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.apply")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Function.prototype.apply()")}}</li>
+ <li>{{jsxref("Function.prototype.call()")}}</li>
+ <li>{{jsxref("Reflect.apply()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/construct/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/construct/index.html
new file mode 100644
index 0000000000..ba66eb5ad3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/construct/index.html
@@ -0,0 +1,134 @@
+---
+title: handler.construct()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/construct
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/construct
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.construct()</code></strong> メソッドは {{jsxref("Operators/new", "new")}} 演算子のトラップです。結果として得られるプロキシオブジェクトに対して新しい操作を有効にするためには、プロキシを初期化するために使われるターゲット自身が <code>[[Construct]]</code> 内部メソッドを持っていなければなりません(つまり、 <code>new target</code> が有効でなければなりません)。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-construct.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: js notranslate">const <var>p</var> = new Proxy(<var>target</var>, {
+ construct: function(<var>target</var>, <var>argumentsList</var>, <var>newTarget</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数が <code>construct()</code> メソッドに渡されます。 <code>this</code> はハンドラーにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクト</dd>
+ <dt><code><var>argumentsList</var></code></dt>
+ <dd>コンストラクタに対する引数のリスト</dd>
+ <dt><code><var>newTarget</var></code></dt>
+ <dd>上記の <code><var>p</var></code> に呼び出された元のコンストラクターです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>construct</code> メソッドはオブジェクトを返す必要があります。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.construct()</strong></code> メソッドは {{jsxref("Operators/new", "new")}} 操作に対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li><code>new proxy(...args)</code></li>
+ <li>{{jsxref("Reflect.construct()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li>結果が <code>Object</code> でならなければならない。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Trapping_the_new_operator" name="Trapping_the_new_operator">new 演算子のトラップ</h3>
+
+<p>次のコードでは {{jsxref("Operators/new", "new")}} 操作をトラップします。</p>
+
+<pre class="brush: js notranslate">const p = new Proxy(function() {}, {
+ construct: function(target, argumentsList, newTarget) {
+ console.log('called: ' + argumentsList.join(', '));
+ return { value: argumentsList[0] * 10 };
+ }
+});
+
+console.log(new p(1).value); // "called: 1"
+ // 10
+</pre>
+
+<p>次のコードでは不変条件に違反します。</p>
+
+<pre class="brush: js example-bad notranslate">const p = new Proxy(function() {}, {
+ construct: function(target, argumentsList, newTarget) {
+ return 1;
+ }
+});
+
+new p(); // TypeError is thrown
+</pre>
+
+<p>次のコードはプロキシを正しく初期化していません。プロキシの <code><var>target</var></code> の初期化は、それ自身が {{jsxref("Operators/new", "new")}} 演算子に有効なコンストラクターでなければなりません。</p>
+
+<pre class="brush: js example-bad notranslate">const p = new Proxy({}, {
+ construct: function(target, argumentsList, newTarget) {
+ return {};
+ }
+});
+
+new p(); // TypeError is thrown, "p" is not a constructor
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget', '[[Construct]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.construct")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Operators/new", "new")}} operator.</li>
+ <li>{{jsxref("Reflect.construct()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/defineproperty/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/defineproperty/index.html
new file mode 100644
index 0000000000..14e9344db1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/defineproperty/index.html
@@ -0,0 +1,140 @@
+---
+title: handler.defineProperty()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/defineProperty
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/defineProperty
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.defineProperty()</code></strong> は {{jsxref("Object.defineProperty()")}} に対するトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-defineproperty.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>p</var> = new Proxy(<var>target</var>, {
+ defineProperty: function(<var>target</var>, <var>property</var>, <var>descriptor</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数が <code>defineProperty()</code> メソッドに渡されます。 <code>this</code> はハンドラにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクトです。</dd>
+ <dt><code><var>property</var></code></dt>
+ <dd>説明を受け取るプロパティの名前または {{jsxref("Symbol")}} です。</dd>
+ <dt><code><var>descriptor</var></code></dt>
+ <dd>定義や変更されるプロパティに対するディスクリプターです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>defineProperty()</code> メソッドはプロパティが正しく定義されたかどうかを表す {{jsxref("Boolean")}} を返す必要があります。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.defineProperty()</strong></code> メソッドは {{jsxref("Object.defineProperty()")}} に対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Reflect.defineProperty()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li>ターゲットオブジェクトが拡張不可の場合、プロパティは追加できません。</li>
+ <li>ターゲットオブジェクトの設定不可の独自のプロパティとして存在しない場合、プロパティは設定不可とみなされ、追加や変更ができません。</li>
+ <li>ターゲットオブジェクトの対応する設定可能なプロパティが存在する場合、プロパティは設定不可にすることができません。</li>
+ <li>対応するターゲットオブジェクトのプロパティが存在する場合、<code>Object.defineProperty(target, prop, descriptor)</code> は例外をスローしません。</li>
+ <li>strict モードでは、<code>defineProperty</code> ハンドラから <code>false</code> が返ってきた場合、{{jsxref("TypeError")}} 例外をスローします。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Trapping_of_defineProperty" name="Trapping_of_defineProperty">defineProperty のトラップ</h3>
+
+<p>次のコードは {{jsxref("Object.defineProperty()")}} をトラップします。</p>
+
+<pre class="brush: js notranslate">const p = new Proxy({}, {
+ defineProperty: function(target, prop, descriptor) {
+ console.log('called: ' + prop);
+ return true;
+ }
+});
+
+const desc = { configurable: true, enumerable: true, value: 10 };
+Object.defineProperty(p, 'a', desc); // "called: a"
+</pre>
+
+<p>{{jsxref("Object.defineProperty()")}} または {{jsxref("Reflect.defineProperty()")}} を呼び出した時、 <code>defineProperty()</code> トラップに渡されるディスクリプターには制約があります。下記のプロパティのみが使用可能で、標準ではないプロパティは無視されます。</p>
+
+<ul>
+ <li><code>enumerable</code></li>
+ <li><code>configurable</code></li>
+ <li><code>writable</code></li>
+ <li><code>value</code></li>
+ <li><code>get</code></li>
+ <li><code>set</code></li>
+</ul>
+
+<pre class="brush: js notranslate">const p = new Proxy({}, {
+ defineProperty(target, prop, descriptor) {
+ console.log(descriptor);
+ return Reflect.defineProperty(target, prop, descriptor);
+ }
+});
+
+Object.defineProperty(p, 'name', {
+ value: 'proxy',
+ type: 'custom'
+}); // { value: 'proxy' }
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-defineownproperty-p-desc', '[[DefineOwnProperty]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.defineProperty")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li>{{jsxref("Reflect.defineProperty()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/deleteproperty/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/deleteproperty/index.html
new file mode 100644
index 0000000000..0d036364e5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/deleteproperty/index.html
@@ -0,0 +1,126 @@
+---
+title: handler.deleteProperty()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/deleteProperty
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/deleteProperty
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.deleteProperty()</code></strong> メソッドは、 {{jsxref("Operators/delete", "delete")}} 演算子のトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-deleteproperty.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const p = new Proxy(<var>target</var>, {
+ deleteProperty: function(<var>target</var>, <var>property</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数が <code>deleteProperty</code> メソッドに渡されます。 <code>this</code> はハンドラにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクト</dd>
+ <dt><code><var>property</var></code></dt>
+ <dd>削除するプロパティの名前</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>deleteProperty</code> メソッドはプロパティが正しく削除されたかどうか示す {{jsxref("Boolean")}} 値を返さなければなりません。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.deleteProperty()</strong></code> メソッドは{{jsxref("Operators/delete", "delete")}}操作に対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li>プロパティの削除: <code>delete proxy[foo]</code> と <code>delete proxy.foo</code></li>
+ <li>{{jsxref("Reflect.deleteProperty()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li>ターゲットオブジェクトの非設定独自プロパティとして存在する場合、プロパティは削除されません。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Trap_for_getting_a_property_value" name="Trap_for_getting_a_property_value">プロパティ値の取得のトラップ</h3>
+
+<p>次のコードは {{jsxref("Operators/delete", "delete")}} 操作をトラップします。</p>
+
+<pre class="brush: js notranslate">const p = new Proxy({}, {
+ deleteProperty: function(target, prop) {
+ if (prop in target){
+ delete target[prop]
+ console.log('property removed: ' + prop)
+ return true
+ }
+ else {
+ console.log('property not found: ' + prop)
+ return false
+ }
+ }
+})
+
+let result
+
+p.a = 10
+console.log('a' in p) // true
+
+result = delete p.a // "property removed: a"
+console.log(result) // true
+console.log('a' in p) // false
+
+result = delete p.a // "property not found: a"
+console.log(result) // false
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-delete-p', '[[Delete]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.deleteProperty")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Operators/delete", "delete")}} operator</li>
+ <li>{{jsxref("Reflect.deleteProperty()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/get/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/get/index.html
new file mode 100644
index 0000000000..8220917e83
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/get/index.html
@@ -0,0 +1,132 @@
+---
+title: handler.get()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.get()</code></strong> はプロパティの値を取得することに対するトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-get.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>p</var> = new Proxy(<var>target</var>, {
+ get: function(<var>target</var>, <var>property</var>, <var>receiver</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数が <code>get()</code> メソッドに渡されます。 <code>this</code> はハンドラーにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクト</dd>
+ <dt><code><var>property</var></code></dt>
+ <dd>取得するプロパティの名称</dd>
+ <dt><code><var>receiver</var></code></dt>
+ <dd>proxy、または proxy から継承するオブジェクトのどちらか</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>get()</code> メソッドはどんな値でも返すことができます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.get()</strong></code> メソッドはプロパティ値を取得することに対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li>プロパティアクセス: <code><var>proxy</var>[<var>foo</var>]</code> と <code><var>proxy</var>.<var>bar</var></code></li>
+ <li>継承したプロパティアクセス: <code>Object.create(<var>proxy</var>)[<var>foo</var>]</code></li>
+ <li>{{jsxref("Reflect.get()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li>ターゲットオブジェクトプロパティが書き込み不可で非設定なデータプロパティなら、プロパティに対して報告される値は対応するターゲットオブジェクトプロパティと同じでなければなりません。</li>
+ <li>対応するターゲットオブジェクトプロパティが[[Get]]属性として未定義で非設定なアクセスプロパティなら、プロパティに対して報告される値は未定義でなければなりません。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Trap_for_getting_a_property_value" name="Trap_for_getting_a_property_value">プロパティ値の取得のトラップ</h3>
+
+<p>次のコードではプロパティ値の取得をトラップします。</p>
+
+<pre class="brush: js notranslate">const p = new Proxy({}, {
+ get: function(target, property, receiver) {
+ console.log('called: ' + property);
+ return 10;
+ }
+});
+
+console.log(p.a); // "called: a"
+ // 10
+</pre>
+
+<p>次のコードでは不変条件に違反します。</p>
+
+<pre class="brush: js notranslate">const obj = {};
+Object.defineProperty(obj, 'a', {
+ configurable: false,
+ enumerable: false,
+ value: 10,
+ writable: false
+});
+
+const p = new Proxy(obj, {
+ get: function(target, property) {
+ return 20;
+ }
+});
+
+p.a; // TypeError is thrown
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver', '[[Get]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.get")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Reflect.get()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html
new file mode 100644
index 0000000000..2c37a5c7a9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html
@@ -0,0 +1,128 @@
+---
+title: handler.getOwnPropertyDescriptor()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.getOwnPropertyDescriptor()</code></strong> は {{jsxref("Object.getOwnPropertyDescriptor()")}} に対するトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-getownpropertydescriptor.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: js notranslate">const <var>p</var> = new Proxy(<var>target</var>, {
+ getOwnPropertyDescriptor: function(<var>target</var>, <var>prop</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数は <code>getOwnPropertyDescriptor()</code> メソッドに渡されます。 <code>this</code> はハンドラーにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクトです。</dd>
+ <dt><code><var>prop</var></code></dt>
+ <dd>ディスクリプタを取得されるプロパティ名です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>getOwnPropertyDescriptor</code> メソッドはオブジェクト、または <code>undefined</code> を返さなければなりません。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.getOwnPropertyDescriptor()</strong></code> メソッドは {{jsxref("Object.getOwnPropertyDescriptor()")}} に対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li>{{jsxref("Object.getOwnPropertyDescriptor()")}}</li>
+ <li>{{jsxref("Reflect.getOwnPropertyDescriptor()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li><code>getOwnPropertyDescriptor()</code> はオブジェクトか、または <code>undefined</code> を返さなければなりません。</li>
+ <li>プロパティがターゲットオブジェクトの設定不可な独自のプロパティとして存在する場合、存在しないとして報告されてはいけません。</li>
+ <li>プロパティがターゲットオブジェクトの独自のプロパティとして存在し、そのターゲットオブジェクトが拡張不可の場合、存在しないとして報告されてはいけません。</li>
+ <li>プロパティがターゲットオブジェクトの独自のプロパティとして存在せず、そのターゲットオブジェクトが拡張不可の場合、存在するとして報告されてはいけません。</li>
+ <li>プロパティがターゲットオブジェクトの独自のプロパティとして存在しないか、ターゲットオブジェクトの設定可能な独自のプロパティとして存在している場合、設定不可であるとして報告されてはいけません。</li>
+ <li><code>Object.getOwnPropertyDescriptor(<var>target</var>)</code> の結果を <code>Object.defineProperty()</code> に使用した時に、ターゲットオブジェクトに適用でき、例外をスローしません。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Trapping_of_getOwnPropertyDescriptor" name="Trapping_of_getOwnPropertyDescriptor">getOwnPropertyDescriptor のトラップ</h3>
+
+<p>次のコードでは {{jsxref("Object.getOwnPropertyDescriptor()")}} をトラップします。</p>
+
+<pre class="brush: js notranslate">const p = new Proxy({ a: 20}, {
+ getOwnPropertyDescriptor: function(target, prop) {
+ console.log('called: ' + prop);
+ return { configurable: true, enumerable: true, value: 10 };
+ }
+});
+
+console.log(Object.getOwnPropertyDescriptor(p, 'a').value); // "called: a"
+ // 10
+</pre>
+
+<p>次のコードでは不変条件に違反します。</p>
+
+<pre class="brush: js example-bad notranslate">const obj = { a: 10 };
+Object.preventExtensions(obj);
+const p = new Proxy(obj, {
+ getOwnPropertyDescriptor: function(target, prop) {
+ return undefined;
+ }
+});
+
+Object.getOwnPropertyDescriptor(p, 'a'); // TypeError is thrown
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p', '[[GetOwnProperty]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.getOwnPropertyDescriptor")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Object.getOwnPropertyDescriptor()")}}</li>
+ <li>{{jsxref("Reflect.getOwnPropertyDescriptor()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/getprototypeof/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/getprototypeof/index.html
new file mode 100644
index 0000000000..f8d640060e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/getprototypeof/index.html
@@ -0,0 +1,148 @@
+---
+title: handler.getPrototypeOf()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getPrototypeOf
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getPrototypeOf
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.getPrototypeOf()</code></strong> メソッドは <code>[[GetPrototypeOf]]</code> 内部メソッドに対するトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-getprototypeof.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>p</var> = new Proxy(<var>obj</var>, {
+ getPrototypeOf(<var>target</var>) {
+ ...
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数は <code>getPrototypeOf()</code> メソッドに渡されます。<code>this</code> はハンドラにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>getPrototypeOf()</code> メソッドはオブジェクト、または <code>null</code> を返さなければなりません。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li>{{jsxref("Object.getPrototypeOf()")}}</li>
+ <li>{{jsxref("Reflect.getPrototypeOf()")}}</li>
+ <li>{{jsxref("Object/proto", "__proto__")}}</li>
+ <li>{{jsxref("Object.prototype.isPrototypeOf()")}}</li>
+ <li>{{jsxref("Operators/instanceof", "instanceof")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li><code>getPrototypeOf</code> メソッドはオブジェクト、または <code>null</code> を返さなければなりません。</li>
+ <li><code>target</code>が拡張不可の場合、 <code>Object.getPrototypeOf(<var>proxy</var>)</code> メソッドは <code>Object.getPrototypeOf(<var>target</var>)</code> と同じ値を返さなければなりません。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_usage" name="Basic_usage">基本的な使い方</h3>
+
+<pre class="brush: js notranslate">const obj = {};
+const proto = {};
+const handler = {
+ getPrototypeOf(target) {
+ console.log(target === obj); // true
+ console.log(this === handler); // true
+ return proto;
+ }
+};
+
+const p = new Proxy(obj, handler);
+console.log(Object.getPrototypeOf(p) === proto); // true
+</pre>
+
+<h3 id="Five_ways_to_trigger_the_getPrototypeOf_trap" name="Five ways to trigger the getPrototypeOf trap">getPrototypeOf トラップが発生する5つの方法</h3>
+
+<pre class="brush: js notranslate">const obj = {};
+const p = new Proxy(obj, {
+ getPrototypeOf(target) {
+ return Array.prototype;
+ }
+});
+console.log(
+ Object.getPrototypeOf(p) === Array.prototype, // true
+ Reflect.getPrototypeOf(p) === Array.prototype, // true
+ p.__proto__ === Array.prototype, // true
+ Array.prototype.isPrototypeOf(p), // true
+ p instanceof Array // true
+);
+</pre>
+
+<h3 id="Two_kinds_of_exceptions" name="Two_kinds_of_exceptions">2種類の例外</h3>
+
+<pre class="brush: js example-bad notranslate">const obj = {};
+const p = new Proxy(obj, {
+ getPrototypeOf(target) {
+ return 'foo';
+ }
+});
+Object.getPrototypeOf(p); // TypeError: "foo" is not an object or null
+
+const obj = Object.preventExtensions({});
+const p = new Proxy(obj, {
+ getPrototypeOf(target) {
+ return {};
+ }
+});
+Object.getPrototypeOf(p); // TypeError: expected same prototype value
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-getprototypeof', '[[GetPrototypeOf]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.getPrototypeOf")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Object.getPrototypeOf()")}}</li>
+ <li>{{jsxref("Reflect.getPrototypeOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/has/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/has/index.html
new file mode 100644
index 0000000000..1686bb5ba4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/has/index.html
@@ -0,0 +1,127 @@
+---
+title: handler.has()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/has
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/has
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.has()</code></strong> は {{jsxref("Operators/in", "in")}} 演算子に対するトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-has.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>p</var> = new Proxy(<var>target</var>, {
+ has: function(<var>target</var>, <var>prop</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数は <code>has()</code> メソッドに渡されます。 <code>this</code> はハンドラーにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクトです。</dd>
+ <dt><code>prop</code></dt>
+ <dd>存在を確認するプロパティ名です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>has</code> メソッドは真偽値を返さなければなりません。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.has()</strong></code> メソッドは {{jsxref("Operators/in", "in")}} 演算子に対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li>プロパティクエリ: <code><var>foo</var> in <var>proxy</var></code></li>
+ <li>継承したプロパティクエリ: <code>foo in Object.create(<var>proxy</var>)</code></li>
+ <li><code>with</code> チェック: <code>with(<var>proxy</var>) { (<var>foo</var>); }</code></li>
+ <li>{{jsxref("Reflect.has()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li>プロパティがターゲットオブジェクトの設定不可の独自プロパティとして存在する場合、存在しないとして報告されてはいけません。</li>
+ <li>プロパティがターゲットオブジェクトの独自プロパティとして存在し、そのターゲットオブジェクトが拡張不可の場合、存在しないとして報告されてはいけません。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Trapping_the_in_operator" name="Trapping_the_in_operator">in 演算子のトラップ</h3>
+
+<p>次のコードでは {{jsxref("Operators/in", "in")}} 演算子をトラップします。</p>
+
+<pre class="brush: js notranslate">const p = new Proxy({}, {
+ has: function(target, prop) {
+ console.log('called: ' + prop);
+ return true;
+ }
+});
+
+console.log('a' in p); // "called: a"
+ // true
+</pre>
+
+<p>次のコードでは不変条件に違反します。</p>
+
+<pre class="brush: js example-bad notranslate">const obj = { a: 10 };
+Object.preventExtensions(obj);
+
+const p = new Proxy(obj, {
+ has: function(target, prop) {
+ return false;
+ }
+});
+
+'a' in p; // TypeError is thrown
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-hasproperty-p', '[[HasProperty]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.has")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Operators/in", "in")}} 演算子</li>
+ <li>{{jsxref("Reflect.has()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/index.html
new file mode 100644
index 0000000000..ddf04c253d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/index.html
@@ -0,0 +1,124 @@
+---
+title: Proxy() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy
+tags:
+ - Constructor
+ - JavaScript
+ - Proxy
+ - Reference
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Proxy()</strong></code> コンストラクターは {{jsxref("Proxy")}} オブジェクトを生成するために使用します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">new Proxy(<var>target</var>, <var>handler</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd><code>Proxy</code> でラップするターゲットのオブジェクトです。あらゆる種類のオブジェクト、例えばネイティブ配列や関数、別のプロキシなどがなることができます。</dd>
+ <dt><code><var>handler</var></code></dt>
+ <dd>関数をプロパティとして持つオブジェクトで、その関数で、 Proxy <code><var>p</var></code> に対して操作が行われた場合の挙動を定義します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Proxy()</code> コンストラクターを使用すると、新しい <code>Proxy</code> オブジェクトを生成することができます。このコンストラクターは2つの必須の引数を取ります。</p>
+
+<ul>
+ <li><code>target</code> はプロキシを作成するオブジェクトです。</li>
+ <li><code>handler</code> はプロキシのカスタム動作を定義するオブジェクトです。</li>
+</ul>
+
+<p>handler を空にすると、ほとんどすべての点でターゲットとまったく同じように振る舞うプロキシを作成します。 <code>handler</code> オブジェクト上で関数群のいずれかを定義することで、プロキシの動作の特定の側面をカスタマイズすることができます。例えば、 <code>get()</code> を定義することで、 ターゲットの<a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">プロパティアクセサー</a>のカスタマイズされたバージョンを提供することができます。</p>
+
+<h3 id="Handler_functions" name="Handler_functions">ハンドラー関数</h3>
+
+<p>この節では、定義することができるすべてのハンドラー関数を列挙します。ハンドラー関数は、対象オブジェクトの呼び出しをトラップするので、<em>トラップ</em>と呼ばれることがあります。</p>
+
+<dl>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/apply", "handler.apply()")}}</dt>
+ <dd>関数呼び出しのトラップです。。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/construct", "handler.construct()")}}</dt>
+ <dd>{{JSxRef("Operators/new", "new")}} 演算子のトラップです。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/defineProperty", "handler.defineProperty()")}}</dt>
+ <dd>{{JSxRef("Object.defineProperty")}} のトラップです。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/deleteProperty", "handler.deleteProperty()")}}</dt>
+ <dd>{{JSxRef("Operators/delete", "delete")}} 演算子のトラップです。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/get", "handler.get()")}}</dt>
+ <dd>プロパティ値の取得のトラップです。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor", "handler.getOwnPropertyDescriptor()")}}</dt>
+ <dd>{{JSxRef("Object.getOwnPropertyDescriptor")}} のトラップです。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/getPrototypeOf", "handler.getPrototypeOf()")}}</dt>
+ <dd>{{JSxRef("Object.getPrototypeOf")}} のトラップです。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/has", "handler.has()")}}</dt>
+ <dd>{{JSxRef("Operators/in", "in")}} 演算子のトラップです。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/isExtensible", "handler.isExtensible()")}}</dt>
+ <dd>{{JSxRef("Object.isExtensible")}} のトラップです。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/ownKeys", "handler.ownKeys()")}}</dt>
+ <dd>{{JSxRef("Object.getOwnPropertyNames")}} と {{JSxRef("Object.getOwnPropertySymbols")}} のトラップです。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/preventExtensions", "handler.preventExtensions()")}}</dt>
+ <dd>{{JSxRef("Object.preventExtensions")}} のトラップです。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/set", "handler.set()")}}</dt>
+ <dd>プロパティ値の設定のトラップです。</dd>
+ <dt>{{JSxRef("Global_Objects/Proxy/Proxy/setPrototypeOf", "handler.setPrototypeOf()")}}</dt>
+ <dd>{{JSxRef("Object.setPrototypeOf")}} のトラップです。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Selectively_proxy_property_accessors" name="Selectively_proxy_property_accessors">選択的にプロパティアクセサーのプロキシを行う</h3>
+
+<p>この例では、ターゲットは <code>notProxied</code> と <code>proxied</code> の2つのプロパティを持っています。 <code>proxied</code> に別の値を返し、それ以外のアクセスをターゲットに許可するハンドラーを定義します。</p>
+
+<pre class="brush: js">const target = {
+ notProxied: "original value",
+ proxied: "original value"
+};
+
+const handler = {
+ get: function(target, prop, receiver) {
+ if (prop === "proxied") {
+ return "replaced value";
+ }
+ return Reflect.get(...arguments);
+ }
+};
+
+const proxy = new Proxy(target, handler);
+
+console.log(proxy.notProxied); // "original value"
+console.log(proxy.proxied); // "replaced value"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-constructor', 'Proxy constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.Proxy")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Meta_programming">JavaScript Guide ガイドの <code>Proxy</code> と <code>Reflect</code></a></li>
+ <li>{{jsxref("Global_Objects/Reflect", "Reflect")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/isextensible/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/isextensible/index.html
new file mode 100644
index 0000000000..271be0190b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/isextensible/index.html
@@ -0,0 +1,119 @@
+---
+title: handler.isExtensible()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/isExtensible
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/isExtensible
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.isExtensible()</code></strong> は {{jsxref("Object.isExtensible()")}} に対するトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-isextensible.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>p</var> = new Proxy(<var>target</var>, {
+ isExtensible: function(<var>target</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数は <code>isExtensible</code> メソッドに渡されます。 <code>this</code> はハンドラーにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>isExtensible</code> メソッドは真偽値を返さなければなりません。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.isExtensible()</strong></code> メソッドは {{jsxref("Object.isExtensible()")}} に対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li>{{jsxref("Object.isExtensible()")}}</li>
+ <li>{{jsxref("Reflect.isExtensible()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li><code>Object.isExtensible(proxy)</code> は <code>Object.isExtensible(target)</code> と同じ値を返さなければなりません。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Trapping_of_getOwnPropertyNames" name="Trapping_of_getOwnPropertyNames">getOwnPropertyNames のトラップ</h3>
+
+<p>次のコードでは {{jsxref("Object.isExtensible()")}} をトラップします。</p>
+
+<pre class="brush: js notranslate">const p = new Proxy({}, {
+ isExtensible: function(target) {
+ console.log('called');
+ return true;
+ }
+});
+
+console.log(Object.isExtensible(p)); // "called"
+ // true
+</pre>
+
+<p>次のコードでは不変条件に違反します。</p>
+
+<pre class="brush: js example-bad notranslate">const p = new Proxy({}, {
+ isExtensible: function(target) {
+ return false;
+ }
+});
+
+Object.isExtensible(p); // TypeError is thrown
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-isextensible', '[[IsExtensible]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.isExtensible")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Object.isExtensible()")}}</li>
+ <li>{{jsxref("Reflect.isExtensible()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/ownkeys/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/ownkeys/index.html
new file mode 100644
index 0000000000..d11a96316c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/ownkeys/index.html
@@ -0,0 +1,133 @@
+---
+title: handler.ownKeys()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/ownKeys
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/ownKeys
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.ownKeys()</code></strong> メソッドは {{jsxref("Reflect.ownKeys()")}} に対するトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-ownkeys.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>p</var> = new Proxy(<var>target</var>, {
+ ownKeys: function(<var>target</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数は <code>ownKeys</code> メソッドに渡されます。 <code>this</code> はハンドラーにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>ownKeys()</code> メソッドは列挙可能オブジェクトを返さなければなりません。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.ownKeys()</strong></code> メソッドは {{jsxref("Reflect.ownKeys()")}} に対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li>{{jsxref("Object.getOwnPropertyNames()")}}</li>
+ <li>{{jsxref("Object.getOwnPropertySymbols()")}}</li>
+ <li>{{jsxref("Object.keys()")}}</li>
+ <li>{{jsxref("Reflect.ownKeys()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li><code>ownKeys</code>の結果はリストです。</li>
+ <li>結果リストのそれぞれの要素の型は{{jsxref("String")}} または {{jsxref("Symbol")}}のどちらかです。</li>
+ <li>結果リストはターゲットオブジェクトのすべての非設定の独自プロパティのキーを含みます。</li>
+ <li>ターゲットオブジェクトが拡張可能でないなら、結果リストはターゲットオブジェクトのすべての独自プロパティのキーを含まなければなりません。そして、他の値を含みません。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Trapping_of_getOwnPropertyNames" name="Trapping_of_getOwnPropertyNames">getOwnPropertyNames のトラップ</h3>
+
+<p>次のコードでは {{jsxref("Object.getOwnPropertyNames()")}} をトラップします。</p>
+
+<pre class="brush: js notranslate">const p = new Proxy({}, {
+ ownKeys: function(target) {
+ console.log('called');
+ return ['a', 'b', 'c'];
+ }
+});
+
+console.log(Object.getOwnPropertyNames(p)); // "called"
+ // [ 'a', 'b', 'c' ]</pre>
+
+<p>次のコードでは不変条件に違反します。</p>
+
+<pre class="brush: js example-bad notranslate">const obj = {};
+Object.defineProperty(obj, 'a', {
+ configurable: false,
+ enumerable: true,
+ value: 10 }
+);
+
+const p = new Proxy(obj, {
+ ownKeys: function(target) {
+ return [123, 12.5, true, false, undefined, null, {}, []];
+ }
+});
+
+console.log(Object.getOwnPropertyNames(p));
+
+// TypeError: proxy [[OwnPropertyKeys]] must return an array
+// with only string and symbol elements
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys', '[[OwnPropertyKeys]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.ownKeys")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Object.getOwnPropertyNames()")}}</li>
+ <li>{{jsxref("Reflect.ownKeys()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/preventextensions/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/preventextensions/index.html
new file mode 100644
index 0000000000..c3d95cbcfd
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/preventextensions/index.html
@@ -0,0 +1,121 @@
+---
+title: handler.preventExtensions()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/preventExtensions
+tags:
+ - ECMAScript 2015
+ - ECMAScript6
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/preventExtensions
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.preventExtensions()</code></strong> は {{jsxref("Object.preventExtensions()")}} に対するトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-preventextensions.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: js notranslate">const <var>p</var> = new Proxy(<var>target</var>, {
+ preventExtensions: function(<var>target</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数は <code>preventExtensions()</code> メソッドに渡されます。 <code>this</code> はハンドラーにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>preventExtensions()</code> メソッドは真偽値を返さなければなりません。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.preventExtensions()</strong></code> メソッドは {{jsxref("Object.preventExtensions()")}} に対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li>{{jsxref("Object.preventExtensions()")}}</li>
+ <li>{{jsxref("Reflect.preventExtensions()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li><code>Object.preventExtensions(<var>proxy</var>)</code> は、 <code>Object.isExtensible(<var>proxy</var>)</code> が <code>false</code> の場合のみ <code>true</code> を返します。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="preventExtensions_のトラップ">preventExtensions のトラップ</h3>
+
+<p>次のコードでは {{jsxref("Object.preventExtensions()")}} をトラップします。</p>
+
+<pre class="brush: js notranslate">const p = new Proxy({}, {
+ preventExtensions: function(target) {
+ console.log('called');
+ Object.preventExtensions(target);
+ return true;
+ }
+});
+
+console.log(Object.preventExtensions(p)); // "called"
+ // false
+</pre>
+
+<p>The following code violates the invariant.</p>
+
+<pre class="brush: js example-bad notranslate">const p = new Proxy({}, {
+ preventExtensions: function(target) {
+ return true;
+ }
+});
+
+Object.preventExtensions(p); // TypeError is thrown
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-preventextensions', '[[PreventExtensions]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.preventExtensions")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Object.preventExtensions()")}}</li>
+ <li>{{jsxref("Reflect.preventExtensions()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/set/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/set/index.html
new file mode 100644
index 0000000000..d405d67fd5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/set/index.html
@@ -0,0 +1,131 @@
+---
+title: handler.set()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.set()</code></strong> はプロパティの値を設定することに対するトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-set.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>p</var> = new Proxy(<var>target</var>, {
+ set: function(<var>target</var>, <var>property</var>, <var>value</var>, <var>receiver</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数は <code>set()</code> メソッドに渡されます。<code>this</code> はハンドラーにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクトです。</dd>
+ <dt><code><var>property</var></code></dt>
+ <dd>プロパティを設定する名前または {{jsxref("Symbol")}} です。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>設定するプロパティの新しい値です。</dd>
+ <dt><code><var>receiver</var></code></dt>
+ <dd>
+ <p>割り当てがもともと行われていたオブジェクトです。これは通常、プロキシそのものです。しかし、 <code>set()</code> ハンドラーは内部的にプロトタイプチェーンや様々な他の方法経由で呼び出されます。</p>
+
+ <div class="note">
+ <p><strong>例:</strong> スクリプト上に <code><var>obj</var>.name = "jen"</code> があり、<code><var>obj</var></code> はプロキシではなく、独自の <code>.name</code> プロパティを持っていません。しかし、プロトタイプチェーンでプロキシを持っています。その場合、そのプロキシの <code>set()</code> ハンドラが呼ばれて、 <code>obj</code> は receiver として渡されます。</p>
+ </div>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>set()</code> メソッドは真偽値を返します。</p>
+
+<ul>
+ <li><code>true</code> を返すと割り当てが成功したことを示します。</li>
+ <li><code>set()</code> メソッドの返値が <code>false</code> で、厳格モードで割り当てが起こった場合、 {{jsxref("TypeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.set</strong></code> メソッドはプロパティの値を設定することに対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li>プロパティの割り当て: <code><var>proxy</var>[<var>foo</var>] = <var>bar</var></code> や <code><var>proxy</var>.<var>foo</var> = <var>bar</var></code></li>
+ <li>継承したプロパティの割り当て: <code>Object.create(<var>proxy</var>)[<var>foo</var>] = <var>bar</var></code></li>
+ <li>{{jsxref("Reflect.set()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li>対応するターゲットオブジェクトのプロパティが書き込み不可かつ設定不可のデータプロパティの場合、プロパティの値と異なる値に変更することはできません。</li>
+ <li>対応するターゲットオブジェクトのプロパティが <code>[[Set]]</code> 属性として <code>undefined</code> を持つ設定不可のアクセスプロパティの場合、プロパティの値を設定することはできません。</li>
+ <li>厳格モードでは、 <code>set</code> ハンドラーから <code>false</code> を返す場合、 {{jsxref("TypeError")}} 例外をスローします。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Trap_setting_of_a_property_value" name="Trap_setting_of_a_property_value">プロパティ値の設定のトラップ</h3>
+
+<p>次のコードではプロパティの値の設定をトラップします。</p>
+
+<pre class="brush: js notranslate">const p = new Proxy({}, {
+ set: function(target, prop, value, receiver) {
+ target[prop] = value;
+ console.log('property set: ' + prop + ' = ' + value);
+ return true;
+ }
+})
+
+console.log('a' in p); // false
+
+p.a = 10; // "property set: a = 10"
+console.log('a' in p); // true
+console.log(p.a); // 10
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.set")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Reflect.set()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/proxy/setprototypeof/index.html b/files/ja/web/javascript/reference/global_objects/proxy/proxy/setprototypeof/index.html
new file mode 100644
index 0000000000..daa7f38d14
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/proxy/setprototypeof/index.html
@@ -0,0 +1,133 @@
+---
+title: handler.setPrototypeOf()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/setPrototypeOf
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/setPrototypeOf
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>handler.setPrototypeOf()</code></strong> メソッドは、 {{jsxref("Object.setPrototypeOf()")}} に対するトラップです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/proxyhandler-setprototypeof.html", "taller", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>p</var> = new Proxy(<var>target</var>, {
+ setPrototypeOf: function(<var>target</var>, <var>prototype</var>) {
+ }
+});
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>次の引数は <code>setPrototypeOf()</code> メソッドに渡されます。 <code>this</code> はハンドラーにバインドされます。</p>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>ターゲットオブジェクトです。</dd>
+ <dt><code><var>prototype</var></code></dt>
+ <dd>オブジェクトの新しいプロトタイプ、または <code>null</code> です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>setPrototypeOf()</code> メソッドは <code>[[Prototype]]</code> の変更に成功したら <code>true</code> を返し、そうでない場合は <code>false</code> を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><strong>handler.setPrototypeOf()</strong></code> メソッドは {{jsxref("Object.setPrototypeOf()")}} に対するトラップです。</p>
+
+<h3 id="Interceptions" name="Interceptions">介入</h3>
+
+<p>このトラップは下記の操作に介入できます。</p>
+
+<ul>
+ <li>{{jsxref("Object.setPrototypeOf()")}}</li>
+ <li>{{jsxref("Reflect.setPrototypeOf()")}}</li>
+</ul>
+
+<h3 id="Invariants" name="Invariants">不変条件</h3>
+
+<p>以下の不変条件に違反している場合、プロキシは {{jsxref("TypeError")}} を発生します。</p>
+
+<ul>
+ <li><code><var>target</var></code> が拡張可能でない場合、引数の <code>prototype</code> は <code>Object.getPrototypeOf(<var>target</var>)</code> と同じ値でなければなりません。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>オブジェクトに新しいプロトタイプを設定することを禁止したい場合は、ハンドラーの <code>setPrototypeOf()</code> メソッドで <code>false</code> を返したり、例外を発生させたりするようにすることができます。</p>
+
+<h3 id="Approach_1_Returning_false" name="Approach_1_Returning_false">アプローチ 1: false を返す</h3>
+
+<p>このアプローチでは、例外を発生させる変更操作は、それ自身で例外を生成する必要があります。</p>
+
+<p>例えば、 {{jsxref("Object.setPrototypeOf()")}} は、それ自体が {{jsxref("TypeError")}} を発生させます。 {{jsxref("Reflect.setPrototypeOf()")}} のように、失敗しても通常は例外が発生しない操作で変更操作が行われた場合、例外は発生しません。</p>
+
+<pre class="brush: js notranslate">const handlerReturnsFalse = {
+ setPrototypeOf(target, newProto) {
+ return false;
+ }
+};
+
+const newProto = {}, target = {};
+
+const p1 = new Proxy(target, handlerReturnsFalse);
+Object.setPrototypeOf(p1, newProto); // throws a TypeError
+Reflect.setPrototypeOf(p1, newProto); // returns false
+</pre>
+
+<h3 id="Approach_2_Throwing_an_Exception" name="Approach_2_Throwing_an_Exception">アプローチ 2: 例外を発生</h3>
+
+<p>後者のアプローチでは、変更を試みるすべての操作で例外が発生します。このアプローチは、例外を発生しない操作でも失敗時に例外をは正させたい場合や、カスタムの例外値を発生させたい場合に最適です。</p>
+
+<pre class="brush: js notranslate">const handlerThrows = {
+ setPrototypeOf(target, newProto) {
+ throw new Error('custom error');
+ }
+};
+
+const newProto = {}, target = {};
+
+const p2 = new Proxy(target, handlerThrows);
+Object.setPrototypeOf(p2, newProto); // throws new Error("custom error")
+Reflect.setPrototypeOf(p2, newProto); // throws new Error("custom error")</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-setprototypeof-v', '[[SetPrototypeOf]]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.handler.setPrototypeOf")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+ <li>{{jsxref("Proxy.handler", "handler")}}</li>
+ <li>{{jsxref("Object.setPrototypeOf()")}}</li>
+ <li>{{jsxref("Reflect.setPrototypeOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/proxy/revocable/index.html b/files/ja/web/javascript/reference/global_objects/proxy/revocable/index.html
new file mode 100644
index 0000000000..54470c2b0e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/proxy/revocable/index.html
@@ -0,0 +1,91 @@
+---
+title: Proxy.revocable()
+slug: Web/JavaScript/Reference/Global_Objects/Proxy/revocable
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Proxy
+translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/revocable
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Proxy.revocable()</strong></code> メソッドは、取り消し可能な {{jsxref("Proxy")}} オブジェクトを作成できます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Proxy.revocable(<var>target</var>, <var>handler</var>);
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<div>
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd><code>Proxy</code> でラップする対象のオブジェクトです。これは一連のオブジェクト、例えばネイティブの配列、関数、他の. Proxy などを取ることもできます。</dd>
+ <dt><code><var>handler</var></code></dt>
+ <dd>オブジェクトで、プロパティが操作が実行されたときのプロキシ <code><var>p</var></code> の動作を定義する関数であるものです。</dd>
+</dl>
+</div>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しく作成された取り消し可能な <code>Proxy</code> オブジェクト。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>取り消し可能な <code>Proxy</code> は次の2つのプロパティ <code>{proxy: proxy, revoke: revoke}</code> を持ったオブジェクトです。</p>
+
+<dl>
+ <dt><code>proxy</code></dt>
+ <dd><code>new Proxy(target, handler)</code> 呼び出しで生成したプロキシオブジェクトです。</dd>
+ <dt><code>revoke</code></dt>
+ <dd><code>proxy</code> を無効にするための引数を持たない関数です。</dd>
+</dl>
+
+<p><code>revoke()</code> 関数を呼ぶと、プロキシオブジェクトは使用できなくなり、ハンドラーへのどんなトラップも {{jsxref("TypeError")}} をスローします。プロキシが取り消されると、取り消されたままになり、ガベージコレクションの対象となります。再度 <code>revoke()</code> が呼ばれても影響はありません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js">var revocable = Proxy.revocable({}, {
+ get: function(target, name) {
+ return "[[" + name + "]]";
+ }
+});
+var proxy = revocable.proxy;
+console.log(proxy.foo); // "[[foo]]"
+
+revocable.revoke();
+
+console.log(proxy.foo); // TypeError is thrown
+proxy.foo = 1 // TypeError again
+delete proxy.foo; // still TypeError
+typeof proxy // "object", typeof doesn't trigger any trap
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-proxy.revocable', 'Proxy Revocation Functions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Proxy.revocable")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/rangeerror/index.html b/files/ja/web/javascript/reference/global_objects/rangeerror/index.html
new file mode 100644
index 0000000000..edf8f9c2a2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/rangeerror/index.html
@@ -0,0 +1,130 @@
+---
+title: RangeError
+slug: Web/JavaScript/Reference/Global_Objects/RangeError
+tags:
+ - Class
+ - JavaScript
+ - Object
+ - RangeError
+translation_of: Web/JavaScript/Reference/Global_Objects/RangeError
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><code><strong>RangeError</strong></code> オブジェクトは、値が配列内に存在しない、または値が許容範囲にない場合のエラーを表します。</span></p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>RangeError</code>は、関数に対して引数として許容されない範囲の数値を渡そうとした場合に発生します。</p>
+
+<p>これは次のような場合に発生します。</p>
+
+<ul>
+ <li>許容されない文字を含む文字列を {{jsxref("String.prototype.normalize()")}} に渡した場合</li>
+ <li>{{jsxref("Array")}} コンストラクターで不正な長さの配列を作ろうとした場合</li>
+ <li>数値に関するメソッド {{jsxref("Number.prototype.toExponential()")}}, {{jsxref("Number.prototype.toFixed()")}}, {{jsxref("Number.prototype.toPrecision()")}} に不適切な値を渡した場合</li>
+</ul>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("RangeError/RangeError", "RangeError()")}}</dt>
+ <dd>新しい <code>RangeError</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.message", "RangeError.prototype.message")}}</dt>
+ <dd>エラーメッセージ。 ECMA-262 は {{jsxref("RangeError")}} 自身が <code>message</code> プロパティを提供するべきであると規定しているにもかかわらず、 <a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> では {{jsxref("Error.prototype.message")}} が継承される。</dd>
+ <dt>{{jsxref("Error.prototype.name", "RangeError.prototype.name")}}</dt>
+ <dd>エラー名。 {{jsxref("Error")}} から継承。</dd>
+ <dt>{{jsxref("Error.prototype.fileName", "RangeError.prototype.fileName")}}</dt>
+ <dd>エラーが発生したファイルへのパス。 {{jsxref("Error")}} から継承。</dd>
+ <dt>{{jsxref("Error.prototype.lineNumber", "RangeError.prototype.lineNumber")}}</dt>
+ <dd>エラーが発生したファイルの行番号。 {{jsxref("Error")}} から継承。</dd>
+ <dt>{{jsxref("Error.prototype.columnNumber", "RangeError.prototype.columnNumber")}}</dt>
+ <dd>エラーが発生したファイルの列番号。 {{jsxref("Error")}} から継承。</dd>
+ <dt>{{jsxref("Error.prototype.stack", "RangeError.prototype.stack")}}</dt>
+ <dd>スタックトレース。{{jsxref("Error")}}から継承。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_RangeError_for_numeric_values" name="Using_RangeError_for_numeric_values">数値に対する RangeError の使用</h3>
+
+<pre class="brush: js notranslate">function check(n)
+{
+    if( !(n &gt;= -500 &amp;&amp; n &lt;= 500) )
+    {
+        throw new RangeError("The argument must be between -500 and 500.")
+    }
+}
+
+try
+{
+    check(2000)
+}
+catch(error)
+{
+ if (error instanceof RangeError)
+  {
+ // Handle the error
+ }
+}</pre>
+
+<h3 id="Using_RangeError_for_non-numeric_values" name="Using_RangeError_for_non-numeric_values">RangeError の使用 (数値以外に対して)</h3>
+
+<pre class="brush: js notranslate">function check(value)
+{
+    if(["apple", "banana", "carrot"].includes(value) === false)
+    {
+        throw new RangeError('The argument must be an "apple", "banana", or "carrot".')
+    }
+}
+
+try
+{
+    check("cabbage")
+}
+catch(error)
+{
+ if(error instanceof RangeError)
+  {
+ // Handle the error
+ }
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-rangeerror', 'RangeError')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RangeError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+ <li>{{jsxref("Array")}}</li>
+ <li>{{jsxref("Number.toExponential()")}}</li>
+ <li>{{jsxref("Number.toFixed()")}}</li>
+ <li>{{jsxref("Number.toPrecision()")}}</li>
+ <li>{{jsxref("String.prototype.normalize()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/rangeerror/rangeerror/index.html b/files/ja/web/javascript/reference/global_objects/rangeerror/rangeerror/index.html
new file mode 100644
index 0000000000..8d998e031f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/rangeerror/rangeerror/index.html
@@ -0,0 +1,108 @@
+---
+title: RangeError() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/RangeError/RangeError
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/RangeError/RangeError
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><code><strong>RangeError()</strong></code> コンストラクターは、値が存在しないか許可された値の範囲にない場合のエラーを生成します。</span></p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>new RangeError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>message</var></code> {{optional_inline}}</dt>
+ <dd>人間が読むためのエラーの説明です。</dd>
+ <dt><code><var>fileName</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードを含むファイルの名前です。</dd>
+ <dt><code><var>lineNumber</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードの行番号です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_RangeError_for_numeric_values" name="Using_RangeError_for_numeric_values">RangeError の使用 (数値)</h3>
+
+<pre class="brush: js notranslate">function check(n)
+{
+ if( !(n &gt;= -500 &amp;&amp; n &lt;= 500) )
+ {
+ throw new RangeError("The argument must be between -500 and 500.")
+ }
+}
+
+try
+{
+ check(2000)
+}
+catch(error)
+{
+ if (error instanceof RangeError)
+ {
+ // Handle the error
+ }
+}</pre>
+
+<h3 id="Using_RangeError_for_non-numeric_values" name="Using_RangeError_for_non-numeric_values">RangeError の使用 (数値以外)</h3>
+
+<pre class="brush: js notranslate">function check(value)
+{
+ if(["apple", "banana", "carrot"].includes(value) === false)
+ {
+ throw new RangeError('The argument must be an "apple", "banana", or "carrot".')
+ }
+}
+
+try
+{
+ check("cabbage")
+}
+catch(error)
+{
+ if(error instanceof RangeError)
+ {
+ // Handle the error
+ }
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-nativeerror-constructors', 'NativeError constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RangeError.RangeError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+ <li>{{jsxref("Array")}}</li>
+ <li>{{jsxref("Number.toExponential()")}}</li>
+ <li>{{jsxref("Number.toFixed()")}}</li>
+ <li>{{jsxref("Number.toPrecision()")}}</li>
+ <li>{{jsxref("String.prototype.normalize()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/referenceerror/index.html b/files/ja/web/javascript/reference/global_objects/referenceerror/index.html
new file mode 100644
index 0000000000..d139be6e42
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/referenceerror/index.html
@@ -0,0 +1,99 @@
+---
+title: ReferenceError
+slug: Web/JavaScript/Reference/Global_Objects/ReferenceError
+tags:
+ - Class
+ - JavaScript
+ - Object
+ - Reference
+ - ReferenceError
+translation_of: Web/JavaScript/Reference/Global_Objects/ReferenceError
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>ReferenceError</strong></code> オブジェクトは存在しない変数が参照された場合のエラーを表します。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/ReferenceError/ReferenceError", "ReferenceError()")}}</dt>
+ <dd>新しい <code>ReferenceError</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.message", "ReferenceError.prototype.message")}}</dt>
+ <dd>エラーメッセージです。 ECMA-262 において {{jsxref("ReferenceError")}} は自身の <code>message</code> プロパティを提供するべきとされていますが、 <a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> では {{jsxref("Error.prototype.message")}} を継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.name", "ReferenceError.prototype.name")}}</dt>
+ <dd>エラー名です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.fileName", "ReferenceError.prototype.fileName")}}</dt>
+ <dd>このエラーが発生したファイルのパスです。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.lineNumber", "ReferenceError.prototype.lineNumber")}}</dt>
+ <dd>このエラーが発生したファイル内の行番号です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.columnNumber", "ReferenceError.prototype.columnNumber")}}</dt>
+ <dd>このエラーが発生した行内の桁番号です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.stack", "ReferenceError.prototype.stack")}}</dt>
+ <dd>スタックトレースです。 {{jsxref("Error")}} から継承しています。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Catching_a_ReferenceError" name="Catching_a_ReferenceError">ReferenceError のキャッチ</h3>
+
+<pre class="brush: js notranslate">try {
+ let a = undefinedVariable
+} catch (e) {
+ console.log(e instanceof ReferenceError) // true
+ console.log(e.message) // "undefinedVariable is not defined"
+ console.log(e.name) // "ReferenceError"
+ console.log(e.fileName) // "Scratchpad/1"
+ console.log(e.lineNumber) // 2
+ console.log(e.columnNumber) // 6
+ console.log(e.stack) // "@Scratchpad/2:2:7\n"
+}
+</pre>
+
+<h3 id="Creating_a_ReferenceError" name="Creating_a_ReferenceError">ReferenceError の生成</h3>
+
+<pre class="brush: js notranslate">try {
+ throw new ReferenceError('Hello', 'someFile.js', 10)
+} catch (e) {
+ console.log(e instanceof ReferenceError) // true
+ console.log(e.message) // "Hello"
+ console.log(e.name) // "ReferenceError"
+ console.log(e.fileName) // "someFile.js"
+ console.log(e.lineNumber) // 10
+ console.log(e.columnNumber) // 0
+ console.log(e.stack) // "@Scratchpad/2:2:9\n"
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-referenceerror', 'ReferenceError')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.ReferenceError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/referenceerror/referenceerror/index.html b/files/ja/web/javascript/reference/global_objects/referenceerror/referenceerror/index.html
new file mode 100644
index 0000000000..9e91404048
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/referenceerror/referenceerror/index.html
@@ -0,0 +1,89 @@
+---
+title: ReferenceError() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/ReferenceError/ReferenceError
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - ReferenceError
+translation_of: Web/JavaScript/Reference/Global_Objects/ReferenceError/ReferenceError
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>ReferenceError</code></strong> オブジェクトは、存在しない変数が参照されたときのエラーを表します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new ReferenceError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>message</var></code> {{optional_inline}}</dt>
+ <dd>人間が読むためのエラーの説明です。</dd>
+ <dt><code><var>fileName</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードを含むファイルの名前です。</dd>
+ <dt><code><var>lineNumber</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードの行番号です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Catching_a_ReferenceError" name="Catching_a_ReferenceError">ReferenceError の捕捉</h3>
+
+<pre class="brush: js notranslate">try {
+ let a = undefinedVariable
+} catch (e) {
+ console.log(e instanceof ReferenceError) // true
+ console.log(e.message) // "undefinedVariable is not defined"
+ console.log(e.name) // "ReferenceError"
+ console.log(e.fileName) // "Scratchpad/1"
+ console.log(e.lineNumber) // 2
+ console.log(e.columnNumber) // 6
+ console.log(e.stack) // "@Scratchpad/2:2:7\n"
+}
+</pre>
+
+<h3 id="Creating_a_ReferenceError" name="Creating_a_ReferenceError">ReferenceError の生成</h3>
+
+<pre class="brush: js notranslate">try {
+ throw new ReferenceError('Hello', 'someFile.js', 10)
+} catch (e) {
+ console.log(e instanceof ReferenceError) // true
+ console.log(e.message) // "Hello"
+ console.log(e.name) // "ReferenceError"
+ console.log(e.fileName) // "someFile.js"
+ console.log(e.lineNumber) // 10
+ console.log(e.columnNumber) // 0
+ console.log(e.stack) // "@Scratchpad/2:2:9\n"
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-nativeerror-constructors', 'NativeError constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.ReferenceError.ReferenceError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/apply/index.html b/files/ja/web/javascript/reference/global_objects/reflect/apply/index.html
new file mode 100644
index 0000000000..d845544c01
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/apply/index.html
@@ -0,0 +1,95 @@
+---
+title: Reflect.apply()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/apply
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/apply
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <strong><code>Reflect.apply()</code></strong> メソッドは、指定された引数とともに対象となる関数を呼び出します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-apply.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Reflect.apply(<var>target</var>, <var>thisArgument</var>, <var>argumentsList</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>呼び出し対象の関数。</dd>
+ <dt><code><var>thisArgument</var></code></dt>
+ <dd><code><var>target</var></code> の呼び出す際の <code>this</code> 値を提供する。</dd>
+ <dt><code><var>argumentsList</var></code></dt>
+ <dd><code><var>target</var></code> と一緒に呼び出す引数を指定する配列風オブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された <code><var>target</var></code> 値と引数の条件で対象の関数を呼び出したときの結果です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("TypeError")}}: <code><var>target</var></code> が呼び出せない場合。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>ES5 では、ふつう {{jsxref("Function.prototype.apply()")}} メソッドを使用することで、指定された <code>this</code> の値と <code>arguments</code> で配列 (または <a href="/ja/docs/Web/JavaScript/Guide/Indexed_collections#Working_with_array-like_objects">配列風オブジェクト</a>) により引数を指定することで、関数を呼び出すことができます。</p>
+
+<pre class="brush: js notranslate">Function.prototype.apply.call(Math.floor, undefined, [1.75]);</pre>
+
+<p><code>Reflect.apply()</code> を使うと、それほど冗長ではなく理解しやすくなります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.apply" name="Using_Reflect.apply">Reflect.apply() の使用</h3>
+
+<pre class="brush: js notranslate">Reflect.apply(Math.floor, undefined, [1.75]);
+// 1;
+
+Reflect.apply(String.fromCharCode, undefined, [104, 101, 108, 108, 111])
+// "hello"
+
+Reflect.apply(RegExp.prototype.exec, /ab/, ['confabulation']).index
+// 4
+
+Reflect.apply(''.charAt, 'ponies', [3])
+// "i"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.apply', 'Reflect.apply')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.apply")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li>{{jsxref("Function.prototype.apply()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/comparing_reflect_and_object_methods/index.html b/files/ja/web/javascript/reference/global_objects/reflect/comparing_reflect_and_object_methods/index.html
new file mode 100644
index 0000000000..533fe760ec
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/comparing_reflect_and_object_methods/index.html
@@ -0,0 +1,100 @@
+---
+title: Reflect と Object のメソッドの比較
+slug: >-
+ Web/JavaScript/Reference/Global_Objects/Reflect/Comparing_Reflect_and_Object_methods
+tags:
+ - Guide
+ - JavaScript
+ - JavaScript Object Model
+ - Object
+ - Overview
+ - Reflect
+translation_of: >-
+ Web/JavaScript/Reference/Global_Objects/Reflect/Comparing_Reflect_and_Object_methods
+---
+<div>{{jssidebar}}</div>
+
+<p>The {{jsxref("Reflect")}} object, introduced in ES2015, is a built-in object that provides methods to interface with JavaScript objects. Some of the static functions that exist on <code>Reflect</code> also correspond to methods available on {{jsxref("Object")}}, which predates ES2015. Although some of the methods appear to be similar in their behavior, there are often subtle differences between them.</p>
+
+<p>The table below details the differences between the methods available on the <code>Object</code> and <code>Reflect</code> APIs. Please note that if a method does not exist in an API, it is marked as N/A.</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Method Name</th>
+ <th scope="col"><code>Object</code></th>
+ <th scope="col"><code>Reflect</code></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>defineProperty()</code></td>
+ <td>{{jsxref("Object.defineProperty()")}} returns the object that was passed to the function. Returns a <code>TypeError</code> if the property was not successfully defined on the object.</td>
+ <td>{{jsxref("Reflect.defineProperty()")}} returns <code>true</code> if the property was defined on the object and <code>false</code> if it was not.</td>
+ </tr>
+ <tr>
+ <td><code>defineProperties()</code></td>
+ <td>{{jsxref("Object.defineProperties()")}} returns the objects that were passed to the function. Returns a <code>TypeError</code> if any properties were not successfully defined on the object.</td>
+ <td>N/A</td>
+ </tr>
+ <tr>
+ <td><code>set()</code></td>
+ <td>N/A</td>
+ <td>{{jsxref("Reflect.set()")}} returns <code>true</code> if the property was set successfully on the object and <code>false</code> if it was not. Throws a <code>TypeError</code> if the target was not an <code>Object</code>.</td>
+ </tr>
+ <tr>
+ <td><code>get()</code></td>
+ <td>N/A</td>
+ <td>{{jsxref("Reflect.get()")}} returns the value of the property. Throws a <code>TypeError</code> if the target was not an <code>Object</code>.</td>
+ </tr>
+ <tr>
+ <td><code>deleteProperty()</code></td>
+ <td>N/A</td>
+ <td>{{jsxref("Reflect.deleteProperty()")}} returns <code>true</code> if the property was deleted from the object and <code>false</code> if it was not.</td>
+ </tr>
+ <tr>
+ <td><code>getOwnPropertyDescriptor()</code></td>
+ <td>{{jsxref("Object.getOwnPropertyDescriptor()")}} returns a property descriptor of the given property if it exists on the object argument passed in, and returns <code>undefined</code> if it does not exist. However, if an object is not passed in as the first argument, it will be coerced into an object.</td>
+ <td>{{jsxref("Reflect.getOwnPropertyDescriptor()")}} returns a property descriptor of the given property if it exists on the object. Returns <code>undefined</code> if it does not exist, and a <code>TypeError</code> if anything other than an object (a primitive) is passed in as the first argument.</td>
+ </tr>
+ <tr>
+ <td><code>getOwnPropertyDescriptors()</code></td>
+ <td>{{jsxref("Object.getOwnPropertyDescriptors()")}} returns an object containing a property descriptor of each passed-in object. Returns an empty object if the passed-in object has no owned property descriptors.</td>
+ <td>N/A</td>
+ </tr>
+ <tr>
+ <td><code>getPrototypeOf()</code></td>
+ <td>{{jsxref("Object.getPrototypeOf()")}} returns the prototype of the given object. Returns <code>null</code> if there are no inherited properties. Throws a <code>TypeError</code> for non-objects in ES5, but coerces non-objects in ES2015.</td>
+ <td>{{jsxref("Reflect.getPrototypeOf()")}} returns the prototype of the given object. Returns <code>null</code> if there are no inherited properties, and throws a <code>TypeError</code> for non-objects.</td>
+ </tr>
+ <tr>
+ <td><code>setPrototypeOf()</code></td>
+ <td>{{jsxref("Object.setPrototypeOf()")}} returns the object itself if its prototype was set successfully. Throws a <code>TypeError</code> if the prototype being set was anything other than an <code>Object</code> or <code>null</code>, or if the prototype for the object being modified is non-extensible. </td>
+ <td>{{jsxref("Reflect.setPrototypeOf()")}} returns <code>true</code> if the prototype was successfully set on the object and <code>false</code> if it wasn't (including if the prototype is non-extensible). Throws a <code>TypeError</code> if the target passed in was not an <code>Object</code>, or if the prototype being set was anything other than an <code>Object</code> or <code>null</code>.</td>
+ </tr>
+ <tr>
+ <td><code>isExtensible()</code></td>
+ <td>{{jsxref("Object.isExtensible()")}} returns <code>true</code> if the object is extensible, and <code>false</code> if it is not. Throws a <code>TypeError</code> in ES5 if the first argument is not an object (a primitive). In ES2015, it will be coerced into a non-extensible, ordinary object and will return <code>false</code>.</td>
+ <td>
+ <p>{{jsxref("Reflect.isExtensible()")}} returns <code>true</code> if the object is extensible, and <code>false</code> if it is not. Throws a <code>TypeError</code> if the first argument is not an object (a primitive).</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>preventExtensions()</code></td>
+ <td>
+ <p>{{jsxref("Object.preventExtensions()")}} returns the object that is being made non-extensible. Throws a <code>TypeError</code>in ES5 if the argument is not an object (a primitive). In ES2015, treats the argument as a non-extensible, ordinary object and returns the object itself.</p>
+ </td>
+ <td>{{jsxref("Reflect.preventExtensions()")}} returns <code>true</code> if the object has been made non-extensible, and <code>false</code> if it has not. Throws a <code>TypeError</code> if the argument is not an object (a primitive).</td>
+ </tr>
+ <tr>
+ <td><code>keys()</code></td>
+ <td>{{jsxref("Object.keys()")}} returns an <code>Array</code> of strings that map to the target object's own (enumerable) property keys. Throws a <code>TypeError</code> in ES5 if the target is not an object, but coerces non-object targets into objects in ES2015.</td>
+ <td>N/A</td>
+ </tr>
+ <tr>
+ <td><code>ownKeys()</code></td>
+ <td>N/A</td>
+ <td>{{jsxref("Reflect.ownKeys()")}} returns an <code>Array</code> of property names that map to the target object's own property keys. Throws a <code>TypeError</code> if the target is not an <code>Object</code>.</td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/construct/index.html b/files/ja/web/javascript/reference/global_objects/reflect/construct/index.html
new file mode 100644
index 0000000000..f16711c6f7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/construct/index.html
@@ -0,0 +1,148 @@
+---
+title: Reflect.construct()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/construct
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/construct
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <code><strong>Reflect.construct()</strong></code> メソッドは {{jsxref("Operators/new", "new")}} 演算子のように、ただし関数として動作します。これは <code>new target(...args)</code> の呼び出しと同等です。このメソッドはオプションを追加することで、別なプロトタイプを指定することができます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-construct.html", "taller")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Reflect.construct(<var>target</var>, <var>argumentsList</var>[, <var>newTarget</var>])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>呼び出し対象の関数。</dd>
+ <dt><code><var>argumentsList</var></code></dt>
+ <dd>配列風オブジェクトで、 <code><var>target</var></code> の呼び出しの引数を指定する。</dd>
+ <dt><code><var>newTarget</var></code> {{optional_inline}}</dt>
+ <dd>プロトタイプを使用するコンストラクター。 <a href="/ja/docs/Web/JavaScript/Reference/Operators/new.target"><code>new.target</code></a> も参照してください。 <code><var>newTarget</var></code> が存在しない場合は、既定値は <code><var>target</var></code> になります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code><var>target</var></code> (または、もしあれば <code><var>newTarget</var></code>) の新しいインスタンスで、 <code><var>target</var></code> に <code><var>argumentsList</var></code> を渡してコンストラクターとして呼び出すことで初期化します。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("TypeError")}}: <code><var>target</var></code> または <code><var>newTarget</var></code> がコンストラクターではない場合。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.construct()</code> によって、可変長引数を指定してコンストラクターを呼び出すことができます。 (これは a href="/ja/docs/Web/JavaScript/Reference/Operators/Spread_syntax"&gt;スプレッド構文と<a href="/ja/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> 演算子</a> を組み合わせて使用することでも可能です。)</p>
+
+<pre class="brush: js">let obj = new Foo(...<var>args</var>)
+let obj = Reflect.construct(Foo, <var>args</var>)
+</pre>
+
+<h3 id="Reflect.construct_vs_Object.create" name="Reflect.construct_vs_Object.create"><code>Reflect.construct()</code> と <code>Object.create()</code></h3>
+
+<p><code>Reflect</code> が導入される前は、オブジェクトを構築するのにコンストラクターとプロトタイプの任意の組み合わせで {{jsxref("Object.create()")}} を使用して構築することができました。</p>
+
+<pre class="brush: js">function OneClass() {
+ this.name = 'one'
+}
+
+function OtherClass() {
+ this.name = 'other'
+}
+
+// この呼び出しは、
+let obj1 = Reflect.construct(OneClass, <var>args</var>, OtherClass)
+
+// ...これと同じ結果をもたらします。
+let obj2 = Object.create(OtherClass.prototype)
+OneClass.apply(obj2, <var>args</var>)
+
+console.log(obj1.name) // 'one'
+console.log(obj2.name) // 'one'
+
+console.log(obj1 instanceof OneClass) // false
+console.log(obj2 instanceof OneClass) // false
+
+console.log(obj1 instanceof OtherClass) // true
+console.log(obj2 instanceof OtherClass) // true
+</pre>
+
+<p>この2つの手法の最終結果は同じですが、その過程に重要な違いがあります。 <code>Object.create()</code> と {{jsxref("Function.prototype.apply()")}} を使用する場合、 <code>new.target</code> 演算子はコンストラクター内で <code>undefined</code> を返します。これは、 <code>new</code> 演算子を用いないためです。</p>
+
+<p>一方、 <code>Reflect.construct()</code> を呼び出す場合は、 <code>new.target</code> 演算子は、提供されていれば <code><var>newTarget</var></code> を指し、そうでなければ <code>target</code> を指します。</p>
+
+<pre class="brush: js">function OneClass() {
+ console.log('OneClass')
+ console.log(new.target)
+}
+function OtherClass() {
+ console.log('OtherClass')
+ console.log(new.target)
+}
+
+let obj1 = Reflect.construct(OneClass, <var>args</var>)
+// Output:
+// OneClass
+// function OneClass { ... }
+
+let obj2 = Reflect.construct(OneClass, <var>args</var>, OtherClass)
+// Output:
+// OneClass
+// function OtherClass { ... }
+
+let obj3 = Object.create(OtherClass.prototype);
+OneClass.apply(obj3, <var>args</var>)
+// Output:
+// OneClass
+// undefined
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.construct" name="Using_Reflect.construct"><code>Reflect.construct()</code> の使用</h3>
+
+<pre class="brush: js">let d = Reflect.construct(Date, [1776, 6, 4])
+d instanceof Date // true
+d.getFullYear() // 1776
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.construct', 'Reflect.construct')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.construct")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li>{{jsxref("Operators/new", "new")}}</li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Operators/new.target">new.target</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/defineproperty/index.html b/files/ja/web/javascript/reference/global_objects/reflect/defineproperty/index.html
new file mode 100644
index 0000000000..1ecbfb8a55
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/defineproperty/index.html
@@ -0,0 +1,100 @@
+---
+title: Reflect.defineProperty()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <strong><code>Reflect.defineProperty()</code></strong> メソッドは、{{jsxref("Object.defineProperty()")}} と似ていますが、 {{jsxref("Boolean")}} を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-defineproperty.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Reflect.defineProperty(<var>target</var>, <var>propertyKey</var>, <var>attributes</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>プロパティを定義する対象のオブジェクトです。</dd>
+ <dt><code><var>propertyKey</var></code></dt>
+ <dd>定義または修正をするプロパティ名です。</dd>
+ <dt><code><var>attributes</var></code></dt>
+ <dd>定義または修正されているプロパティのための属性です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>プロパティの定義に成功したかどうかを示す {{jsxref("Boolean")}} です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("TypeError")}}: <code>target</code> が {{jsxref("Object")}} ではなかった場合。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.defineProperty</code> メソッドは、オブジェクトのプロパティの正確な追加や修正を行います。詳細は、類似メソッドの {{jsxref("Object.defineProperty")}} を参照してください。</p>
+
+<div class="blockIndicator note"><code>Object.defineProperty</code> はプロパティの定義が成功しなかった場合、オブジェクトを返すか {{jsxref("TypeError")}} を発生させます。しかし、<code>Reflect.defineProperty</code> は単純に、プロパティの定義が成功したかどうかを示す {{jsxref("Boolean")}} を返します。
+
+
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.defineProperty" name="Using_Reflect.defineProperty">Reflect.defineProperty() の使用</h3>
+
+<pre class="brush: js notranslate">let obj = {}
+Reflect.defineProperty(obj, 'x', {value: 7}) // true
+obj.x // 7
+</pre>
+
+<h3 id="Checking_if_property_definition_has_been_successful" name="Checking_if_property_definition_has_been_successful">プロパティ定義が成功したかチェックする</h3>
+
+<p>成功してオブジェクトを返すか、失敗して {{jsxref("TypeError")}} をスローする {{jsxref("Object.defineProperty")}} を使う場合、プロパティの定義中に発生する何らかの例外をキャッチするには、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/try...catch">try...catch</a></code> ブロックを使用します。</p>
+
+<p><code>Reflect.defineProperty</code> は真偽値の成功ステータスを返すので、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/if...else">if...else</a></code> ブロックを使用することができます。</p>
+
+<pre class="brush: js notranslate">if (Reflect.defineProperty(target, property, attributes)) {
+ // success
+} else {
+ // failure
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.defineproperty', 'Reflect.defineProperty')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.defineProperty")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/deleteproperty/index.html b/files/ja/web/javascript/reference/global_objects/reflect/deleteproperty/index.html
new file mode 100644
index 0000000000..36ec316d62
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/deleteproperty/index.html
@@ -0,0 +1,100 @@
+---
+title: Reflect.deleteProperty()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <strong><code>Reflect.defineProperty()</code></strong> メソッドは、{{jsxref("Object.defineProperty()")}} と似ていますが、 {{jsxref("Boolean")}} を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-defineproperty.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Reflect.defineProperty(<var>target</var>, <var>propertyKey</var>, <var>attributes</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>プロパティを定義する対象のオブジェクトです。</dd>
+ <dt><code><var>propertyKey</var></code></dt>
+ <dd>定義または修正をするプロパティ名です。</dd>
+ <dt><code><var>attributes</var></code></dt>
+ <dd>定義または修正されているプロパティのための属性です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>プロパティの定義に成功したかどうかを示す {{jsxref("Boolean")}} です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("TypeError")}}: <code>target</code> が {{jsxref("Object")}} ではなかった場合。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.defineProperty</code> メソッドは、オブジェクトのプロパティの正確な追加や修正を行います。詳細は、類似メソッドの {{jsxref("Object.defineProperty")}} を参照してください。</p>
+
+<div class="blockIndicator note"><code>Object.defineProperty</code> はプロパティの定義が成功しなかった場合、オブジェクトを返すか {{jsxref("TypeError")}} を発生させます。しかし、<code>Reflect.defineProperty</code> は単純に、プロパティの定義が成功したかどうかを示す {{jsxref("Boolean")}} を返します。
+
+
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.defineProperty" name="Using_Reflect.defineProperty">Reflect.defineProperty() の使用</h3>
+
+<pre class="brush: js notranslate">let obj = {}
+Reflect.defineProperty(obj, 'x', {value: 7}) // true
+obj.x // 7
+</pre>
+
+<h3 id="Checking_if_property_definition_has_been_successful" name="Checking_if_property_definition_has_been_successful">プロパティ定義が成功したかチェックする</h3>
+
+<p>成功してオブジェクトを返すか、失敗して {{jsxref("TypeError")}} をスローする {{jsxref("Object.defineProperty")}} を使う場合、プロパティの定義中に発生する何らかの例外をキャッチするには、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/try...catch">try...catch</a></code> ブロックを使用します。</p>
+
+<p><code>Reflect.defineProperty</code> は真偽値の成功ステータスを返すので、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/if...else">if...else</a></code> ブロックを使用することができます。</p>
+
+<pre class="brush: js notranslate">if (Reflect.defineProperty(target, property, attributes)) {
+ // success
+} else {
+ // failure
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.defineproperty', 'Reflect.defineProperty')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.defineProperty")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/get/index.html b/files/ja/web/javascript/reference/global_objects/reflect/get/index.html
new file mode 100644
index 0000000000..9ad5516167
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/get/index.html
@@ -0,0 +1,97 @@
+---
+title: Reflect.get()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/get
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/get
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <strong><code>Reflect.get()</code></strong> メソッドは、オブジェクト (<code>target[propertyKey]</code>) からプロパティを関数として取得するように動作します。動作します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-get.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">Reflect.get(<var>target</var>, <var>propertyKey</var>[, <var>receiver</var>])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>プロパティを取得する対象のオブジェクト。</dd>
+ <dt><code><var>propertyKey</var></code></dt>
+ <dd>設定するプロパティ名。</dd>
+ <dt><code><var>receiver</var></code> {{optional_inline}}</dt>
+ <dd>ゲッターがあった場合、 <code><var>target</var></code> への呼び出しで使用する <code>this</code> の値を提供します。 {{jsxref("Proxy")}} とともに使用すると、 <code><var>target</var></code> から継承しているオブジェクトにすることができます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>プロパティの値です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p><code><var>target</var></code> が {{jsxref("Object")}} でなかった場合、 {{jsxref("TypeError")}} が発生します。。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.get</code> メソッドはオブジェクトのプロパティを取得します。機能としては{{jsxref("Operators/Property_Accessors", "プロパティアクセサー", "", 1)}}構文と似ています。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.get" name="Using_Reflect.get"><code>Reflect.get()</code> の使用</h3>
+
+<pre class="brush: js">// オブジェクト
+let obj = { x: 1, y: 2 }
+Reflect.get(obj, 'x') // 1
+
+// 配列
+Reflect.get(['zero', 'one'], 1) // "one"
+
+// Proxy with a get handler
+let x = {p: 1};
+
+let obj = new Proxy(x, {
+ get(t, k, r) {
+  return k + 'bar'
+  }
+})
+Reflect.get(obj, 'foo') // "foobar"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.get', 'Reflect.get')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.get")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">プロパティアクセサー</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/getownpropertydescriptor/index.html b/files/ja/web/javascript/reference/global_objects/reflect/getownpropertydescriptor/index.html
new file mode 100644
index 0000000000..5b4696de1c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/getownpropertydescriptor/index.html
@@ -0,0 +1,96 @@
+---
+title: Reflect.getOwnPropertyDescriptor()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary">静的な <strong><code>Reflect.getOwnPropertyDescriptor()</code></strong> メソッドは {{jsxref("Object.getOwnPropertyDescriptor()")}} と似ています。オブジェクトにプロパティが存在する場合は、指定されたプロパティのプロパティ記述子を返します。一方、プロパティが存在しない場合は {{jsxref("undefined")}} を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-getownpropertydescriptor.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Reflect.getOwnPropertyDescriptor(<var>target</var>, <var>propertyKey</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>プロパティを探す対象のオブジェクト。</dd>
+ <dt><code><var>propertyKey</var></code></dt>
+ <dd>所有しているプロパティ記述子を取得するためのプロパティ名。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code><var>target</var></code> オブジェクト内にプロパティが存在する場合は、プロパティ記述子オブジェクト、または {{jsxref("undefined")}}。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("TypeError")}}: <code><var>target</var></code> が {{jsxref("Object")}} ではない場合</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.getOwnPropertyDescriptor</code> オブジェクトにプロパティが存在する場合、与えられたプロパティのプロパティディスクリプタを返します。一方、プロパティが存在しない場合は、{{jsxref("undefined")}} を返します。{{jsxref("Object.getOwnPropertyDescriptor()")}} との唯一の違いは、非オブジェクトの対象がどのようにバンドルされるかだけです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.getOwnPropertyDescriptor" name="Using_Reflect.getOwnPropertyDescriptor">Reflect.getOwnPropertyDescriptor() の使用</h3>
+
+<pre class="brush: js notranslate">Reflect.getOwnPropertyDescriptor({x: 'hello'}, 'x')
+// {value: "hello", writable: true, enumerable: true, configurable: true}
+
+Reflect.getOwnPropertyDescriptor({x: 'hello'}, 'y')
+// undefined
+
+Reflect.getOwnPropertyDescriptor([], 'length')
+// {value: 0, writable: true, enumerable: false, configurable: false}
+</pre>
+
+<h3 id="Difference_to_Object.getOwnPropertyDescriptor" name="Difference_to_Object.getOwnPropertyDescriptor">Object.getOwnPropertyDescriptor() との違い</h3>
+
+<p>このメソッドへの最初の引数がオブジェクトではない (プリミティブであった) 場合、 {{jsxref("TypeError")}} が発生します。 {{jsxref("Object.getOwnPropertyDescriptor")}} だと、非オブジェクトである最初の引数は強制的にオブジェクトに変換されます。</p>
+
+<pre class="brush: js notranslate">Reflect.getOwnPropertyDescriptor('foo', 0)
+// TypeError: "foo" is not non-null object
+
+Object.getOwnPropertyDescriptor('foo', 0)
+// { value: "f", writable: false, enumerable: true, configurable: false }</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.getownpropertydescriptor', 'Reflect.getOwnPropertyDescriptor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.getOwnPropertyDescriptor")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li>{{jsxref("Object.getOwnPropertyDescriptor()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/getprototypeof/index.html b/files/ja/web/javascript/reference/global_objects/reflect/getprototypeof/index.html
new file mode 100644
index 0000000000..9891b10867
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/getprototypeof/index.html
@@ -0,0 +1,97 @@
+---
+title: Reflect.getPrototypeOf()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/getPrototypeOf
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/getPrototypeOf
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <strong><code>Reflect.getPrototypeOf()</code></strong> メソッドは、{{jsxref("Object.getPrototypeOf()")}} とほぼ同じメソッドです。これは指定したオブジェクトのプロトタイプ (つまり、内部の <code>[[Prototype]]</code> プロパティの値) を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-getprototypeof.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Reflect.getPrototypeOf(<var>target</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>target</code></dt>
+ <dd>プロトタイプを取得する対象のオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられたオブジェクトのプロトタイプです。継承されたプロパティがない場合、{{jsxref("null")}} を返します。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p><code>target</code> が {{jsxref("Object")}} でない場合に {{jsxref("TypeError")}} がスローされます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.getPrototypeOf</code> メソッドは、指定したオブジェクトのプロトタイプ (つまり、内部の <code>[[Prototype]]</code> プロパティの値) を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.getPrototypeOf" name="Using_Reflect.getPrototypeOf">Reflect.getPrototypeOf() の使用</h3>
+
+<pre class="brush: js notranslate">Reflect.getPrototypeOf({}) // Object.prototype
+Reflect.getPrototypeOf(Object.prototype) // null
+Reflect.getPrototypeOf(Object.create(null)) // null
+</pre>
+
+<h3 id="Compared_to_Object.getPrototypeOf" name="Compared_to_Object.getPrototypeOf">Object.getPrototypeOf() との比較</h3>
+
+<pre class="brush: js notranslate">// Object の結果は同じです
+Object.getPrototypeOf({}) // Object.prototype
+Reflect.getPrototypeOf({}) // Object.prototype
+
+// ES5 上では非Objectの結果は両方とも例外です
+Object.getPrototypeOf('foo') // Throws TypeError
+Reflect.getPrototypeOf('foo') // Throws TypeError
+
+// ES2015 上では Reflect のみ例外で、Object は 非Object を Object として扱います
+Object.getPrototypeOf('foo') // String.prototype
+Reflect.getPrototypeOf('foo') // Throws TypeError
+
+// To mimic the Object ES2015 behavior you need to coerce
+Reflect.getPrototypeOf(Object('foo')) // String.prototype
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.getprototypeof', 'Reflect.getPrototypeOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.getPrototypeOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li>{{jsxref("Object.getPrototypeOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/has/index.html b/files/ja/web/javascript/reference/global_objects/reflect/has/index.html
new file mode 100644
index 0000000000..eb077b2394
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/has/index.html
@@ -0,0 +1,99 @@
+---
+title: Reflect.has()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/has
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/has
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <strong><code>Reflect.has()</code></strong> メソッドは、機能としては <a href="/ja/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 演算子</a>のように動作します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-has.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Reflect.has(<var>target</var>, <var>propertyKey</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>プロパティを探す対象のオブジェクト。</dd>
+ <dt><code><var>propertyKey</var></code></dt>
+ <dd>チェックするプロパティ名。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>対象がプロパティを持つかどうかを示す {{jsxref("Boolean")}} 値。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p><code><var>target</var></code> が {{jsxref("Object")}} でなかった場合、 {{jsxref("TypeError")}} が発生します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.has</code> メソッドは、オブジェクトプロパティがあるかをチェックします。機能としては <a href="/ja/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 演算子</a>のように動作します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.has" name="Using_Reflect.has">Reflect.has() の使用</h3>
+
+<pre class="brush: js notranslate">Reflect.has({x: 0}, 'x') // true
+Reflect.has({x: 0}, 'y') // false
+
+// プロトタイプチェーンのプロパティがあるため、true が返る
+Reflect.has({x: 0}, 'toString')
+
+// Proxy with .has() handler method
+obj = new Proxy({}, {
+ has(t, k) { return k.startsWith('door') }
+});
+Reflect.has(obj, 'doorbell') // true
+Reflect.has(obj, 'dormitory') // false
+</pre>
+
+<p><code>Reflect.has</code> は継承されたプロパティについて <code>true</code> を返し、これは <a href="/en-US/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 演算子</a>と同様です。</p>
+
+<pre class="brush: js notranslate">const a = {foo: 123}
+const b = {__proto__: a}
+const c = {__proto__: b}
+// The prototype chain is: c -&gt; b -&gt; a
+Reflect.has(c, 'foo') // true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.has', 'Reflect.has')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.has")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/index.html b/files/ja/web/javascript/reference/global_objects/reflect/index.html
new file mode 100644
index 0000000000..6f64386a31
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/index.html
@@ -0,0 +1,84 @@
+---
+title: Reflect
+slug: Web/JavaScript/Reference/Global_Objects/Reflect
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Overview
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong>Reflect</strong> は、介入可能な JavaScript 操作に対するメソッドを提供する組込みオブジェクトです。メソッドは<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler">プロキシハンドラー</a>のメソッドと同じです。 <code>Reflect</code> は関数オブジェクトではありませんので、構築することはできません。</span></p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>他のグローバルオブジェクトとは異なり、 <code>Reflect</code> はコンストラクターではありません。 <a href="/ja/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> 演算子</a>で使用したり、 <code>Reflect</code> オブジェクトを関数として呼び出すことはできません。 <code>Reflect</code> のすべてのプロパティとメソッドは ({{jsxref("Math")}} オブジェクトと同様に) 静的です。</p>
+
+<p><code>Reflect</code> オブジェクトは<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler">プロキシハンドラーメソッド</a>と同じ名前をもつ、下記の関数を提供します。</p>
+
+<p>これらのメソッドの一部は {{jsxref("Object")}} の対応するメソッドとも同じですが、これらの間には<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Reflect/Comparing_Reflect_and_Object_methods">いくらか微妙な違い</a>があります。</p>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Reflect.apply()", "Reflect.apply(<var>target</var>, <var>thisArgument</var>, <var>argumentsList</var>)")}}</dt>
+ <dd><code><var>target</var></code> 関数を、引数 <code><var>argumentsList</var></code> で指定された引数で呼び出します。 {{jsxref("Function.prototype.apply()")}} も参照してください。</dd>
+ <dt>{{jsxref("Reflect.construct()", "Reflect.construct(<var>target</var>, <var>argumentsList</var>[, <var>newTarget</var>])")}}</dt>
+ <dd>関数としての <a href="/ja/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> 演算子</a>です。 <code>new <var>target</var>(...<var>argumentsList</var>)</code> を呼び出すのと等価です。別なプロトタイプを指定するためにオプションを指定することもできます。</dd>
+ <dt>{{jsxref("Reflect.defineProperty()", "Reflect.defineProperty(<var>target</var>, <var>propertyKey</var>, <var>attributes</var>)")}}</dt>
+ <dd>{{jsxref("Object.defineProperty()")}} と同様です。返値は {{jsxref("Boolean")}} で、プロパティが定義できた場合は <code>true</code> を返します。</dd>
+ <dt>{{jsxref("Reflect.deleteProperty()", "Reflect.deleteProperty(<var>target</var>, <var>propertyKey</var>)")}}</dt>
+ <dd>関数としての <a href="/ja/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code> 演算子</a>です。 <code>delete <var>target</var>[<var>propertyKey</var>]</code> を呼び出すのと等価です。</dd>
+ <dt>{{jsxref("Reflect.get()", "Reflect.get(<var>target</var>, <var>propertyKey</var>[, <var>receiver</var>])")}}</dt>
+ <dd>このプロパティの値を返します。オブジェクトからのプロパティの取得 (<code>target[propertyKey]</code>) を関数にしたようなものです。</dd>
+ <dt>{{jsxref("Reflect.getOwnPropertyDescriptor()", "Reflect.getOwnPropertyDescriptor(<var>target</var>, <var>propertyKey</var>)")}}</dt>
+ <dd>{{jsxref("Object.getOwnPropertyDescriptor()")}} に似ています。指定したプロパティが存在する場合にプロパティディスクリプターを返し、存在しない場合は {{jsxref("undefined")}} を返します。</dd>
+ <dt>{{jsxref("Reflect.getPrototypeOf()", "Reflect.getPrototypeOf(<var>target</var>)")}}</dt>
+ <dd>{{jsxref("Object.getPrototypeOf()")}} と同じです。</dd>
+ <dt>{{jsxref("Reflect.has()", "Reflect.has(<var>target, propertyKey</var>)")}}</dt>
+ <dd>{{jsxref("Boolean")}} で対象がそのプロパティを持っているかどうかを返します。固有の場合も継承の場合も含みます。 <a href="/ja/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> 演算子</a>を関数にしたものです。</dd>
+ <dt>{{jsxref("Reflect.isExtensible()", "Reflect.isExtensible(<var>target</var>)")}}</dt>
+ <dd>{{jsxref("Object.isExtensible()")}} と同じです。 {{jsxref("Boolean")}} を返し、 <code>true</code> ならば対象が拡張可能です。</dd>
+ <dt>{{jsxref("Reflect.ownKeys()", "Reflect.ownKeys(<var>target</var>)")}}</dt>
+ <dd>独自の (継承されているものではない) プロパティのキーをもつ文字列の配列を返します。</dd>
+ <dt>{{jsxref("Reflect.preventExtensions()", "Reflect.preventExtensions(<var>target</var>)")}}</dt>
+ <dd>{{jsxref("Object.preventExtensions()")}} に似ています。 {{jsxref("Boolean")}} を返し、 <code>true</code> は更新に成功した場合です。</dd>
+ <dt>{{jsxref("Reflect.set()", "Reflect.set(<var>target</var>, <var>propertyKey</var>, <var>value</var>[, <var>receiver</var>])")}}</dt>
+ <dd>値をプロパティに割り当てる関数です。更新に成功したら <code>true</code> となる {{jsxref("Boolean")}} を返します。</dd>
+ <dt>{{jsxref("Reflect.setPrototypeOf()", "Reflect.setPrototypeOf(<var>target</var>, <var>prototype</var>)")}}</dt>
+ <dd>オブジェクトのプロトタイプを設定する関数です。 {{jsxref("Boolean")}} を返し、 <code>true</code> ならば成功です。</dd>
+</dl>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect-object', 'Reflect')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Proxy")}} グローバルオブジェクト</li>
+ <li>{{jsxref("Proxy.handler", "handler")}} オブジェクト</li>
+</ul>
+
+<div id="gtx-trans" style="position: absolute; left: 22px; top: 1930px;">
+<div class="gtx-trans-icon"></div>
+</div>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/isextensible/index.html b/files/ja/web/javascript/reference/global_objects/reflect/isextensible/index.html
new file mode 100644
index 0000000000..e3ee426638
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/isextensible/index.html
@@ -0,0 +1,104 @@
+---
+title: Reflect.isExtensible()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/isExtensible
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/isExtensible
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary">静的な <strong><code>Reflect.isExtensible()</code></strong> メソッドは 、オブジェクトを拡張できるかを測定します (オブジェクトに追加された新しいプロパティを持てるかどうか)。これは {{jsxref("Object.isExtensible()")}} に似ていますが、いくつかの<a href="#Difference_to_Object.isExtensible">違いがあります</a>。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-isextensible.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Reflect.isExtensible(<var>target</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>拡張できるかどうかをチェックする対象のオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>対象が拡張可能かどうかを示す {{jsxref("Boolean")}} 値。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("TypeError")}}: <code>target</code> が {{jsxref("Object")}} ではなかった場合。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.isExtensible</code> メソッドは 、オブジェクトを拡張できるかを測定します(オブジェクトに追加された新しいプロパティを持てるかどうか)。これは {{jsxref("Object.isExtensible()")}} と同じメソッドです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.isExtensible" name="Using_Reflect.isExtensible">Reflect.isExtensible() の使用</h3>
+
+<p>{{jsxref("Object.isExtensible()")}} も見てください。</p>
+
+<pre class="brush: js notranslate">// 今オブジェクトは拡張可能。
+let empty = {}
+Reflect.isExtensible(empty) // === true
+
+// ...しかし、変更できます
+Reflect.preventExtensions(empty)
+Reflect.isExtensible(empty) // === false
+
+// シールドオブジェクトは拡張できないように定義される。
+let sealed = Object.seal({})
+Reflect.isExtensible(sealed) // === false
+
+// フローズンオブジェクトも拡張できないように定義される。
+let frozen = Object.freeze({})
+Reflect.isExtensible(frozen) // === false
+</pre>
+
+<h3 id="Difference_to_Object.isExtensible" name="Difference_to_Object.isExtensible">Object.isExtensible() との違い</h3>
+
+<p>このメソッドへの最初の引数がオブジェクトではなかった (プリミティブであった) 場合、これは {{jsxref("TypeError")}} を引き起こします。{{jsxref("Object.isExtensible()")}} だと、オブジェクトではない最初の引数はオブジェクトに強制的に変換されます。</p>
+
+<pre class="brush: js notranslate">Reflect.isExtensible(1)
+// TypeError: 1 はオブジェクトではない
+
+Object.isExtensible(1)
+// false
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.isextensible', 'Reflect.isExtensible')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.isExtensible")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li>{{jsxref("Object.isExtensible()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/ownkeys/index.html b/files/ja/web/javascript/reference/global_objects/reflect/ownkeys/index.html
new file mode 100644
index 0000000000..51b538dfba
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/ownkeys/index.html
@@ -0,0 +1,88 @@
+---
+title: Reflect.ownKeys()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <strong><code>Reflect.ownKeys()</code></strong> メソッドは、 <code>target</code> オブジェクトが持つプロパティキーの配列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-ownkeys.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Reflect.ownKeys(<var>target</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>キーを取得する対象のオブジェクト</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code><var>target</var></code> オブジェクトが持つプロパティキーの {{jsxref("Array")}} 。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("TypeError")}}: <code><var>target</var></code> が {{jsxref("Object")}} ではない場合</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.ownKeys</code> メソッドは、対象のオブジェクトが持つプロパティキーの配列を返します。この返値は、<code>{{jsxref("Object.getOwnPropertyNames", "Object.getOwnPropertyNames(target)", "", 1)}}.concat({{jsxref("Object.getOwnPropertySymbols", "Object.getOwnPropertySymbols(target)", "", 1)}})</code> と同じです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.ownKeys" name="Using_Reflect.ownKeys">Reflect.ownKeys() の使用</h3>
+
+<pre class="brush: js notranslate">Reflect.ownKeys({z: 3, y: 2, x: 1}) // [ "z", "y", "x" ]
+Reflect.ownKeys([]) // ["length"]
+
+let sym = Symbol.for('comet')
+let sym2 = Symbol.for('meteor')
+let obj = {[sym]: 0, 'str': 0, '773': 0, '0': 0,
+ [sym2]: 0, '-1': 0, '8': 0, 'second str': 0}
+Reflect.ownKeys(obj)
+// [ "0", "8", "773", "str", "-1", "second str", Symbol(comet), Symbol(meteor) ]
+// 数字順のインデックス、
+// 挿入順の文字列、
+// 挿入順のシンボル
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.ownkeys', 'Reflect.ownKeys')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.ownKeys")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li>{{jsxref("Object.getOwnPropertyNames()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/preventextensions/index.html b/files/ja/web/javascript/reference/global_objects/reflect/preventextensions/index.html
new file mode 100644
index 0000000000..a11bc64f93
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/preventextensions/index.html
@@ -0,0 +1,96 @@
+---
+title: Reflect.preventExtensions()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/preventExtensions
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/preventExtensions
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary">静的な <strong><code>Reflect.preventExtensions()</code></strong> メソッドは、すでにプロパティが追加されたオブジェクトに、新しいプロパティを抑制します (つまり、オブジェクトのさらなる拡張を抑制します)。</span> {{jsxref("Object.preventExtensions()")}} に似ていますが、<a href="#Difference_from_Object.preventExtensions">違いがあります</a>。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-preventextensions.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Reflect.preventExtensions(<var>target</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>拡張を抑止する対象のオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Boolean")}} で、対象が拡張の抑止の設定に成功したかどうかを表します。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("TypeError")}}: <code><var>target</var></code> が {{jsxref("Object")}} ではない場合</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.preventExtensions</code> メソッドは、すでにプロパティが追加されたオブジェクトに、新しいプロパティを抑制します (つまり、オブジェクトのさらなる拡張を抑制します)。これは {{jsxref("Object.preventExtensions()")}} と同様のメソッドです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.preventExtensions" name="Using_Reflect.preventExtensions">Reflect.preventExtensions() の使用</h3>
+
+<p>{{jsxref("Object.preventExtensions()")}} も参照してください。</p>
+
+<pre class="brush: js notranslate">// オブジェクトは既定で拡張可能。
+let empty = {}
+Reflect.isExtensible(empty) // === true
+
+// ...しかし、変更できる。
+Reflect.preventExtensions(empty)
+Reflect.isExtensible(empty) // === false
+</pre>
+
+<h3 id="Difference_from_Object.preventExtensions" name="Difference_from_Object.preventExtensions">Object.preventExtensions() との違い</h3>
+
+<p>このメソッドへの最初の引数がオブジェクトではない (プリミティブである) 場合、 {{jsxref("TypeError")}} が発生します。 {{jsxref("Object.preventExtensions()")}} では、 <code><var>target</var></code> がオブジェクトではない場合はオブジェクトに強制的に変換されます。</p>
+
+<pre class="brush: js notranslate">Reflect.preventExtensions(1)
+// TypeError: 1 is not an object
+
+Object.preventExtensions(1)
+// 1
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.preventextensions', 'Reflect.preventExtensions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.preventExtensions")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li>{{jsxref("Object.isExtensible()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/set/index.html b/files/ja/web/javascript/reference/global_objects/reflect/set/index.html
new file mode 100644
index 0000000000..df00e589b4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/set/index.html
@@ -0,0 +1,101 @@
+---
+title: Reflect.set()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/set
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/set
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <strong><code>Reflect.set()</code></strong> メソッドは、オブジェクトにプロパティを設定するかのように動作します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-set.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Reflect.set(<var>target</var>, <var>propertyKey</var>, <var>value</var>[, <var>receiver</var>])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>プロパティを設定する対象のオブジェクト。</dd>
+ <dt><code><var>propertyKey</var></code></dt>
+ <dd>設定するプロパティ名。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>設定する値。</dd>
+ <dt><code><var>receiver</var></code> {{optional_inline}}</dt>
+ <dd>セッターによって <code><var>target</var></code> が呼び出されたときの <code>this</code> 値を提供する。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>プロパティが成功裏に設定できたかどうかを示す {{jsxref("Boolean")}} 値。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("TypeError")}}: <code><var>target</var></code> が {{jsxref("Object")}} ではなかった場合。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.set</code> メソッドは、オブジェクトにプロパティを設定します。これはプロパティの割り当てを行い、機能としては <a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">プロパティアクセサー</a> 構文のようなものです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.set" name="Using_Reflect.set">Reflect.set() の使用</h3>
+
+<pre class="brush: js notranslate">// オブジェクト
+let obj = {}
+Reflect.set(obj, 'prop', 'value') // true
+obj.prop // "value"
+
+// 配列
+let arr = ['duck', 'duck', 'duck']
+Reflect.set(arr, 2, 'goose') // true
+arr[2] // "goose"
+
+// 配列を切り詰められる。
+Reflect.set(arr, 'length', 1) // true
+arr // ["duck"]
+
+// 引数が1つだけだと、プロパティキーと値は "undefined" になる。
+let obj = {}
+Reflect.set(obj) // true
+Reflect.getOwnPropertyDescriptor(obj, 'undefined')
+// { value: undefined, writable: true, enumerable: true, configurable: true }
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.set', 'Reflect.set')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.set")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">プロパティアクセサー</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/reflect/setprototypeof/index.html b/files/ja/web/javascript/reference/global_objects/reflect/setprototypeof/index.html
new file mode 100644
index 0000000000..6bf66c812d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/reflect/setprototypeof/index.html
@@ -0,0 +1,90 @@
+---
+title: Reflect.setPrototypeOf()
+slug: Web/JavaScript/Reference/Global_Objects/Reflect/setPrototypeOf
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - Reflect
+translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/setPrototypeOf
+---
+<div>{{JSRef}}</div>
+
+<p>静的な <strong><code>Reflect.setPrototypeOf()</code></strong> メソッドは、返値を除いて、 {{jsxref("Object.setPrototypeOf()")}} と同じメソッドです。これは指定されたオブジェクトのプロトタイプ (つまり、内部の <code>[[Prototype]]</code> プロパティ) にほかのオブジェクト、または {{jsxref("null")}} を設定し、操作が成功したなら <code>true</code> を、そうでないなら <code>false</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/reflect-setprototypeof.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Reflect.setPrototypeOf(<var>target</var>, <var>prototype</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>プロトタイプを設定する対象のオブジェクトです。</dd>
+ <dt><code><var>prototype</var></code></dt>
+ <dd>オブジェクトの新しいプロトタイプ (オブジェクトまたは {{jsxref("null")}}) です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>プロトタイプが正常に設定されたかどうかを示す {{jsxref("Boolean")}} 値です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("TypeError")}}: <code><var>target</var></code> が {{jsxref("Object")}} ではない場合、または <code>prototype</code> がオブジェクトでも {{jsxref("null")}} でもない場合。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Reflect.setPrototypeOf</code> メソッドは、指定されたオブジェクトのプロトタイプ (つまり、内部の <code>[[Prototype]]</code> プロパティ) を変更します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Reflect.setPrototypeOf" name="Using_Reflect.setPrototypeOf">Reflect.setPrototypeOf() の使用</h3>
+
+<pre class="brush: js notranslate">Reflect.setPrototypeOf({}, Object.prototype) // true
+
+// オブジェクトの [[Prototype]] は null に変更できる。
+Reflect.setPrototypeOf({}, null) // true
+
+// 対象が拡張できない場合、false を返す。
+Reflect.setPrototypeOf(Object.freeze({}), null) // false
+
+// プロトタイプチェーンが循環する場合、false を返す。
+let target = {}
+let proto = Object.create(target)
+Reflect.setPrototypeOf(target, proto) // false
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-reflect.setprototypeof', 'Reflect.setPrototypeOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Reflect.setPrototypeOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Reflect")}}</li>
+ <li>{{jsxref("Object.setPrototypeOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/@@match/index.html b/files/ja/web/javascript/reference/global_objects/regexp/@@match/index.html
new file mode 100644
index 0000000000..4359a94e96
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/@@match/index.html
@@ -0,0 +1,116 @@
+---
+title: 'RegExp.prototype[@@match]()'
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@match
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expression
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@match
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>[@@match]()</code></strong> メソッドは、<em>文字列</em>の<em>正規表現</em>に一致した部分を取得します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-@@match.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>regexp</var>[Symbol.match](<var>str</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>str</var></code></dt>
+ <dd>一致の対象となる {{jsxref("String")}}。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>一致した全体の結果と括弧が捕捉した一致箇所の結果を含む {{jsxref("Array")}}。一致するものがなかった場合は、{{jsxref("null")}}。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドは、{{jsxref("String.prototype.match()")}} で内部的に呼び出されます。</p>
+
+<p>たとえば、次の 2 つの例は同じ結果を返します。</p>
+
+<pre class="brush: js notranslate">'abc'.match(/a/);
+
+/a/[Symbol.match]('abc');</pre>
+
+<p>このメソッドは、<code>RegExp</code> サブクラス内で一致の振る舞いをカスタマイズするために存在しています。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Direct_call" name="Direct_call">直接呼び出し</h3>
+
+<p>このメソッドは、<em>ほとんど</em> {{jsxref("String.prototype.match()")}} と同じ方法で使用することができますが、 <code>this</code> と引数の並び順が異なります。</p>
+
+<pre class="brush: js notranslate">let re = /[0-9]+/g;
+let str = '2016-01-02';
+let result = re[Symbol.match](str);
+console.log(result); // ["2016", "01", "02"]
+</pre>
+
+<h3 id="Using_match_in_subclasses" name="Using_match_in_subclasses">サブクラスで @@match を使用</h3>
+
+<p>{{jsxref("RegExp")}} のサブクラスは、既定の動作を修正するために <code>[@@match]()</code> メソッドをオーバーライドできます。</p>
+
+<pre class="brush: js notranslate">class MyRegExp extends RegExp {
+ [Symbol.match](str) {
+ let result = RegExp.prototype[Symbol.match].call(this, str);
+ if (!result) return null;
+ return {
+ group(n) {
+ return result[n];
+ }
+ };
+ }
+}
+
+let re = new MyRegExp('([0-9]+)-([0-9]+)-([0-9]+)');
+let str = '2016-01-02';
+let result = str.match(re); // String.prototype.match calls re[@@match].
+console.log(result.group(1)); // 2016
+console.log(result.group(2)); // 01
+console.log(result.group(3)); // 02
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-regexp.prototype-@@match', 'RegExp.prototype[@@match]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.@@match")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.match()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@replace()", "RegExp.prototype[@@replace]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@search()", "RegExp.prototype[@@search]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@split()", "RegExp.prototype[@@split]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.exec()")}}</li>
+ <li>{{jsxref("RegExp.prototype.test()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/@@matchall/index.html b/files/ja/web/javascript/reference/global_objects/regexp/@@matchall/index.html
new file mode 100644
index 0000000000..6c85b1921e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/@@matchall/index.html
@@ -0,0 +1,112 @@
+---
+title: 'RegExp.prototype[@@matchAll]()'
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@matchAll
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+ - メソッド
+ - 正規表現
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@matchAll
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>[@@matchAll]</code></strong> メソッドは、文字列に対する正規表現で一致するすべてのものを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-@@matchall.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>regexp</var>[Symbol.matchAll](<var>str</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>str</var></code></dt>
+ <dd>一致の対象となる {{jsxref("String")}} です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators">イテレーター</a>です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドは内部的に {{jsxref("String.prototype.matchAll()")}} を呼び出します。例えば、以下の2つの例は同じ結果を返します。</p>
+
+<pre class="brush: js notranslate">'abc'.matchAll(/a/);
+
+/a/[Symbol.matchAll]('abc');</pre>
+
+<p>このメソッドは <code>matchAll()</code> の動作を {{jsxref('RegExp')}} のサブクラスの中でカスタマイズするために存在します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Direct_call" name="Direct_call">直接呼び出し</h3>
+
+<p>このメソッドは {{jsxref("String.prototype.matchAll()")}}, とほぼ同様に使用することができますが、 <code>this</code> の値と引数の順序が違う点が異なります。</p>
+
+<pre class="brush: js notranslate">let re = /[0-9]+/g;
+let str = '2016-01-02';
+let result = re[Symbol.matchAll](str);
+
+console.log(Array.from(result, x =&gt; x[0]));
+// ["2016", "01", "02"]
+</pre>
+
+<h3 id="Using_matchAll_in_subclasses" name="Using_matchAll_in_subclasses">サブクラスでの @@matchAll の使用</h3>
+
+<p>{{jsxref("RegExp")}} のサブクラスは <code>[@@matchAll]()</code> メソッドを上書きして既定の動作を変更することができます。</p>
+
+<p>例えば、 {{jsxref("Array")}} を<a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators">イテレーター</a>の代わりに返すことができます。</p>
+
+<pre class="brush: js notranslate">class MyRegExp extends RegExp {
+ [Symbol.matchAll](str) {
+ const result = RegExp.prototype[Symbol.matchAll].call(this, str);
+ if (!result) {
+ return null;
+ } else {
+ return Array.from(result);
+ }
+ }
+}
+
+const re = new MyRegExp('([0-9]+)-([0-9]+)-([0-9]+)', 'g');
+const str = '2016-01-02|2019-03-07';
+const result = str.matchAll(re);
+console.log(result[0]); // [ "2016-01-02", "2016", "01", "02" ]
+console.log(result[1]); // [ "2019-03-07", "2019", "03", "07" ]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-regexp-prototype-matchall', 'RegExp.prototype[@@matchAll]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.@@matchAll")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("String.prototype.matchAll()")}}</li>
+ <li>{{JSxRef("Symbol.matchAll")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/@@replace/index.html b/files/ja/web/javascript/reference/global_objects/regexp/@@replace/index.html
new file mode 100644
index 0000000000..3383b052d3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/@@replace/index.html
@@ -0,0 +1,120 @@
+---
+title: 'RegExp.prototype[@@replace]()'
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@replace
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expression
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@replace
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>[@@replace]()</code></strong> メソッドは文字列内の <code>this</code> パターンの一部または、すべての一致箇所を <code>replacement</code> で置き換え、置換結果を新しい文字列として返します。 <code>replacement</code> は文字列にするか、関数にしてすべての一致箇所ごとに呼び出されるようにすることができます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-@@replace.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>regexp</var>[Symbol.replace](<var>str<var>, <var>newSubStr</var>|<var>function</var>)</var></var></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>str</var></code></dt>
+ <dd>置換の対象となる {{jsxref("String")}} です。</dd>
+ <dt><code><var>newSubStr</var></code> (置換内容)</dt>
+ <dd>部分文字列を置き換える {{jsxref("String")}} です。特殊な置換パターンの数値に対応しています。 {{jsxref("String.prototype.replace()")}} ページの{{jsxref("String.prototype.replace", "引数としての文字列の指定", "#Specifying_a_string_as_a_parameter", 1)}}の節を参照してください。</dd>
+ <dt><code><var>function</var></code> (置換内容)</dt>
+ <dd>新しい部分文字列を生成するために呼び出される関数。この関数に提供される引数については、{{jsxref("String.prototype.replace()")}} ページの{{jsxref("String.prototype.replace", "引数としての関数の指定", "#Specifying_a_function_as_a_parameter", 1)}}の節を見てください。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>一部またはすべてのパターンの一致箇所が置換内容によって置き換えられた新しい文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドは {{jsxref("String.prototype.replace()")}} の中で、 <code>pattern</code> 引数が {{jsxref("RegExp")}} オブジェクトであった場合に内部的に呼び出されます。たとえば、次の 2 つの例は同じ結果を返します。</p>
+
+<pre class="brush: js notranslate">'abc'.replace(/a/, 'A');
+
+/a/[Symbol.replace]('abc', 'A');</pre>
+
+<p>このメソッドは、 <code>RegExp</code> サブクラスの置換動作をカスタマイズするために存在しています。</p>
+
+<p>{{jsxref("String.prototype.replace()")}} は <code>pattern</code> 引数が {{jsxref("RegExp")}} オブジェクトでは<strong>ない</strong>場合、このメソッドの呼び出しや {{jsxref("RegExp")}} オブジェクトの生成を行いません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Direct_call" name="Direct_call">直接呼出し</h3>
+
+<p><code>this</code> と引数の順序が異なる点を除いて、このメソッドは {{jsxref("String.prototype.replace()")}} とほどんど同じ使い方ができます。</p>
+
+<pre class="brush: js notranslate">var re = /-/g;
+var str = '2016-01-01';
+var newstr = re[Symbol.replace](str, '.');
+console.log(newstr); // 2016.01.01
+</pre>
+
+<h3 id="Using_replace_in_subclasses" name="Using_replace_in_subclasses">サブクラスでの @@replace の使用</h3>
+
+<p>既定の動作を修正するために、{{jsxref("RegExp")}} のサブクラスで <code>[@@replace]()</code> メソッドをオーバーライドできます。</p>
+
+<pre class="brush: js notranslate">class MyRegExp extends RegExp {
+ constructor(pattern, flags, count) {
+ super(pattern, flags);
+ this.count = count;
+ }
+ [Symbol.replace](str, replacement) {
+ // Perform @@replace |count| times.
+ var result = str;
+ for (var i = 0; i &lt; this.count; i++) {
+ result = RegExp.prototype[Symbol.replace].call(this, result, replacement);
+ }
+ return result;
+ }
+}
+
+var re = new MyRegExp('\\d', '', 3);
+var str = '01234567';
+var newstr = str.replace(re, '#'); // String.prototype.replace calls re[@@replace].
+console.log(newstr); // ###34567</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-regexp.prototype-@@replace', 'RegExp.prototype[@@replace]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.@@replace")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.replace()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@match()", "RegExp.prototype[@@match]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@search()", "RegExp.prototype[@@search]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@split()", "RegExp.prototype[@@split]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.exec()")}}</li>
+ <li>{{jsxref("RegExp.prototype.test()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/@@search/index.html b/files/ja/web/javascript/reference/global_objects/regexp/@@search/index.html
new file mode 100644
index 0000000000..2f4449ab2e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/@@search/index.html
@@ -0,0 +1,113 @@
+---
+title: 'RegExp.prototype[@@search]()'
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@search
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expression
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@search
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>[@@search]()</code></strong> メソッドは、<code>this</code> 正規表現と文字列の間で一致させるための検索を実行します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-@@search.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>regexp</var>[Symbol.search](<var>str</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>str</var></code></dt>
+ <dd>検索対象の {{jsxref("String")}} です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<dl>
+ <dt>integer</dt>
+ <dd>成功した場合、<code>[@@search]()</code> は文字列内で正規表現に最初に一致したインデックスを返します。そうではない場合、-1 を返します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドは、 {{jsxref("String.prototype.search()")}} の内部で呼び出されます。たとえば、次の 2 つの例は同じ結果を返します。</p>
+
+<pre class="brush: js notranslate">'abc'.search(/a/);
+
+/a/[Symbol.search]('abc');</pre>
+
+<p>このメソッドは、<code>RegExp</code> サブクラスで検索動作をカスタマイズするために存在しています。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Direct_call" name="Direct_call">直接呼出し</h3>
+
+<p>このメソッドは、<code>this</code> と引数順が異なることを除いて {{jsxref("String.prototype.search()")}} とほぼ同じ方法で使用できます。</p>
+
+<pre class="brush: js notranslate">var re = /-/g;
+var str = '2016-01-02';
+var result = re[Symbol.search](str);
+console.log(result); // 4
+</pre>
+
+<h3 id="Using_search_in_subclasses" name="Using_search_in_subclasses">サブクラスでの @@search の使用</h3>
+
+<p>{{jsxref("RegExp")}} のサブクラスは、動作を修正するために <code>[@@search]()</code> メソッドをオーバーライドできます。</p>
+
+<pre class="brush: js notranslate">class MyRegExp extends RegExp {
+ constructor(str) {
+ super(str)
+ this.pattern = str;
+ }
+ [Symbol.search](str) {
+ return str.indexOf(this.pattern);
+ }
+}
+
+var re = new MyRegExp('a+b');
+var str = 'ab a+b';
+var result = str.search(re); // String.prototype.search は再定義した [@@search] を呼び出す。
+console.log(result); // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-regexp.prototype-@@search', 'RegExp.prototype[@@search]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.@@search")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.search()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@match()", "RegExp.prototype[@@match]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@replace()", "RegExp.prototype[@@replace]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@split()", "RegExp.prototype[@@split]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.exec()")}}</li>
+ <li>{{jsxref("RegExp.prototype.test()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/@@species/index.html b/files/ja/web/javascript/reference/global_objects/regexp/@@species/index.html
new file mode 100644
index 0000000000..440ca4aeec
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/@@species/index.html
@@ -0,0 +1,70 @@
+---
+title: 'get RegExp[@@species]'
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@species
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@species
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>RegExp[@@species]</code></strong> アクセサープロパティは <code>RegExp</code> コンストラクターを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-getregexp-@@species.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>species</code> アクセサープロパティは、 <code>RegExp</code> の既定のコンストラクターを返します。サブクラスのコンストラクターは、コンストラクターの割り当てをオーバーライドするためにこれを使用することができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Species_in_ordinary_objects" name="Species_in_ordinary_objects">通常オブジェクトの species</h3>
+
+<p><code>species</code> プロパティは、既定のコンストラクターを返します。 <code>RegExp</code> オブジェクトであれば、 <code>RegExp</code> コンストラクターを返します。</p>
+
+<pre class="brush: js notranslate">RegExp[Symbol.species]; // function RegExp()</pre>
+
+<h3 id="Species_in_derived_objects" name="Species_in_derived_objects">派生オブジェクトの species</h3>
+
+<p>派生クラスのコレクションオブジェクト (たとえば、独自の正規表現を表す <code>MyRegExp</code>) では、 <code>MyRegExp</code> の species は <code>MyRegExp</code> コンストラクターです。しかし、派生クラスのメソッドで親である <code>RegExp</code> オブジェクトを返すようにこれをオーバーライドしたくなるかもしれません。</p>
+
+<pre class="brush: js notranslate">class MyRegExp extends RegExp {
+ // MyRegExp の species を親である RegExp コンストラクタにオーバーライドします。
+ static get [Symbol.species]() { return RegExp; }
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-regexp-@@species', 'get RegExp [ @@species ]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.@@species")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp")}}</li>
+ <li>{{jsxref("Symbol.species")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/@@split/index.html b/files/ja/web/javascript/reference/global_objects/regexp/@@split/index.html
new file mode 100644
index 0000000000..ac70871fde
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/@@split/index.html
@@ -0,0 +1,111 @@
+---
+title: 'RegExp.prototype[@@split]()'
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@split
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@split
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>[@@split]()</code></strong> メソッドは、文字列を部分文字列に区切ることによって、 {{jsxref("String")}} オブジェクトを文字列の配列に分割します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-@@split.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>regexp</var>[Symbol.split](<var>str</var>[, <var>limit</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>str</var></code></dt>
+ <dd>分割操作の対象。</dd>
+ <dt><code><var>limit</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p>検出される分割数の制限を指定する整数。 <code>[@@split]()</code> メソッドは、 <code>this</code> RegExp パターン (または上記の構文では <code><var>regexp</var></code>) に一致するたびに、分割項目の数が <code><var>limit</var></code> と一致するか、文字列が <code>this</code> パターンを満たなくなるまで、分割を行います。</p>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>要素として部分文字列を含む {{jsxref("Array")}}。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドは {{jsxref("String.prototype.split()")}} の内部で、 <code>separator</code> 引数が <code>@@split</code> メソッドを持つオブジェクト、たとえば {{jsxref("RegExp")}} オブジェクトだった場合に呼び出されます。たとえば、次の 2 つの例は同じ結果を返します。</p>
+
+<pre class="brush: js notranslate">'a-b-c'.split(/-/);
+
+/-/[Symbol.split]('a-b-c');</pre>
+
+<p>このメソッドは、<code>RegExp</code> のサブクラスで <code>split()</code> の動作をカスタマイズするために存在します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Direct_call" name="Direct_call">直接呼出し</h3>
+
+<p><code>this</code> の扱いと引数の並び順を除いて、このメソッドは {{jsxref("String.prototype.split()")}} とほとんど同じように使用できます。</p>
+
+<pre class="brush: js notranslate">let re = /-/g;
+let str = '2016-01-02';
+let result = re[Symbol.split](str);
+console.log(result); // ["2016", "01", "02"]
+</pre>
+
+<h3 id="Using_split_in_subclasses" name="Using_split_in_subclasses">サブクラスで @@split を使用する</h3>
+
+<p>既定の動作を修正するために、{{jsxref("RegExp")}} のサブクラスで <code>[@@split]()</code> メソッドをオーバーライドできます。</p>
+
+<pre class="brush: js notranslate">class MyRegExp extends RegExp {
+ [Symbol.split](str, limit) {
+ let result = RegExp.prototype[Symbol.split].call(this, str, limit);
+ return result.map(x =&gt; "(" + x + ")");
+ }
+}
+
+let re = new MyRegExp('-');
+let str = '2016-01-02';
+let result = str.split(re); // String.prototype.split calls re[@@split].
+console.log(result); // ["(2016)", "(01)", "(02)"]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-regexp.prototype-@@split', 'RegExp.prototype[@@split]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.@@split")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.split()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@match()", "RegExp.prototype[@@match]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@replace()", "RegExp.prototype[@@replace]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.@@search()", "RegExp.prototype[@@search]()")}}</li>
+ <li>{{jsxref("RegExp.prototype.exec()")}}</li>
+ <li>{{jsxref("RegExp.prototype.test()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/compile/index.html b/files/ja/web/javascript/reference/global_objects/regexp/compile/index.html
new file mode 100644
index 0000000000..09017079c6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/compile/index.html
@@ -0,0 +1,85 @@
+---
+title: RegExp.prototype.compile()
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/compile
+tags:
+ - Deprecated
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/compile
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p>非推奨の <strong><code>compile()</code></strong> メソッドは、スクリプトの実行中に正規表現を(再)コンパイルするために使われます。基本的に <code>RegExp</code> コンストラクターと同じです。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>regexObj</var>.compile(<var>pattern</var>, <var>flags</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>pattern</var></code></dt>
+ <dd>正規表現のテキスト</dd>
+ <dt><code><var>flags</var></code></dt>
+ <dd>
+ <p>指定された場合、フラグは次の値の任意の組み合わせになります。</p>
+
+ <dl>
+ <dt><code>g</code></dt>
+ <dd>グローバルマッチ</dd>
+ <dt><code>i</code></dt>
+ <dd>大文字小文字の違いを無視</dd>
+ <dt><code>m</code></dt>
+ <dd>複数行。始まりと終わりの文字 (^ と $) を複数行にわたって動作するものとして扱います。 (すなわち、 <em>それぞれ</em>の行の始まりと終わりにマッチします。(\n または \r によって区切られます)、入力文字列全体の始まりと終わりだけではありません。)</dd>
+ <dt><code>y</code></dt>
+ <dd>先頭固定。対象文字列においてこの正規表現の <code>lastIndex</code> プロパティによって示されるインデックスからのみ検索します (それ以降のインデックスから検索しようとはしません)。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>compile</code> メソッドは非推奨です。同じ効果を得るには、 <code>RegExp</code> コンストラクターを使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_compile" name="Using_compile">compile() の使用</h3>
+
+<p>次の例では、新しいパターンとフラグで正規表現を再コンパイルする方法を示します。</p>
+
+<pre class="brush: js notranslate">var regexObj = new RegExp('foo', 'gi');
+regexObj.compile('new foo', 'g');
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-regexp.prototype.compile', 'RegExp.prototype.compile')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.compile")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/dotall/index.html b/files/ja/web/javascript/reference/global_objects/regexp/dotall/index.html
new file mode 100644
index 0000000000..b7e18ebf2d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/dotall/index.html
@@ -0,0 +1,87 @@
+---
+title: RegExp.prototype.dotAll
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/dotAll
+tags:
+ - Draft
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/dotAll
+---
+<p>{{JSRef}}</p>
+
+<p><strong><code>dotAll</code></strong> プロパティは、正規表現で "<code>s</code>" フラグが使用されているかどうかを示します。 <code>dotAll</code> は、個々の正規表現インスタンスの読み取り専用プロパティです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-dotall.html")}}</div>
+
+<p>{{JS_Property_Attributes(0, 0, 1)}}</p>
+
+<h2 id="説明">説明</h2>
+
+<p>dotAllの値は {{JSxRef("Boolean")}} であり、"<code>s</code>" フラグが使用されている場合は <code>true</code> 、それ以外の場合は <code>false</code> です。 "<code>s</code>" フラグは、ドット特殊文字 ("<code>.</code>") が以下に示す行末記号 ("<code>newline</code>") 文字と一致することを示します。これ以外の場合は一致しません:</p>
+
+<ul>
+ <li>U+000A 改行 (LF) ("<code>\n</code>")</li>
+ <li>U+000D キャリッジリターン (CR) ("<code>\r</code>")</li>
+ <li>U+2028 ラインセパレーター</li>
+ <li>U+2029 段落区切り文字</li>
+</ul>
+
+<p>これは事実上、ドットが基本多言語面 (BMP) のすべての文字と一致することを意味します。 アストラル文字と一致させるには、"<code>u</code>" (ユニコード) フラグを使用する必要があります。 両方のフラグを組み合わせて使用すると、ドットは例外なく任意のユニコード文字に一致します。</p>
+
+<p>このプロパティを直接変更することはできません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="dotAllを使用する">dotAllを使用する</h3>
+
+<pre class="brush: js notranslate">var str1 = 'bar\nexample foo example';
+
+var regex1 = new RegExp('bar.example','s');
+
+console.log(regex1.dotAll); // Output: true
+
+console.log(str1.replace(regex1,'')); // Output: foo example
+
+var str2 = 'bar\nexample foo example';
+
+var regex2 = new RegExp('bar.example');
+
+console.log(regex2.dotAll); // Output: false
+
+console.log(str2.replace(regex2,'')); // Output: bar
+ // example foo example</pre>
+
+<h2 id="仕様書">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-regexp.prototype.dotAll', 'RegExp.prototype.dotAll')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+<div class="hidden">The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</div>
+
+<p>{{Compat("javascript.builtins.RegExp.dotAll")}}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("RegExp.lastIndex")}}</li>
+ <li>{{JSxRef("RegExp.prototype.global")}}</li>
+ <li>{{JSxRef("RegExp.prototype.ignoreCase")}}</li>
+ <li>{{JSxRef("RegExp.prototype.multiline")}}</li>
+ <li>{{JSxRef("RegExp.prototype.source")}}</li>
+ <li>{{JSxRef("RegExp.prototype.sticky")}}</li>
+ <li>{{JSxRef("RegExp.prototype.unicode")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/exec/index.html b/files/ja/web/javascript/reference/global_objects/regexp/exec/index.html
new file mode 100644
index 0000000000..058f1c3cc7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/exec/index.html
@@ -0,0 +1,198 @@
+---
+title: RegExp.prototype.exec()
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/exec
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/exec
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>exec()</code></strong> メソッドは、指定された文字列内で一致するものの検索を実行します。結果の配列、または {{jsxref("null")}} を返します。</span></p>
+
+<p>JavaScript の {{jsxref("RegExp")}} オブジェクトは、 {{jsxref("RegExp.global", "global")}} または {{jsxref("RegExp.sticky", "sticky")}} フラグが設定されている場合 (例えば <code>/foo/g</code> や <code>/foo/y</code>) は<strong>ステートフル</strong>になります。これは前回の一致位置を {{jsxref("RegExp.lastIndex", "lastIndex")}} に格納します。これを内部的に使用することで、 <code>exec()</code> はテキストの文字列内で (キャプチャグループのある) 複数の一致を反復処理することができます。これは単なる文字列の一致を取得する {{jsxref("String.prototype.match()")}} とは対照的です。</p>
+
+<p>より新しい関数として、 (キャプチャグループによる) 複数の部分の文字列の一致を単純化する {{jsxref("String.prototype.matchAll()")}} が提案されています。</p>
+
+<p>単に見つかったか見つからなかったかを <code>true</code> または <code>false</code> で知るために検索を実行するのであれば、 {{jsxref("RegExp.prototype.test()")}} メソッドまたは {{jsxref("String.prototype.search()")}} メソッドを使用してください。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-exec.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>regexObj</var>.exec(<var>str</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>str</var></code></dt>
+ <dd>正規表現に一致するかどうかの対象となる文字列。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>一致に成功した場合、 <code>exec()</code> メソッドは配列を返し (追加のプロパティ <code>index</code> と <code>input</code> 付き、以下参照)、正規表現オブジェクトの {{jsxref("RegExp.lastIndex", "lastIndex")}} プロパティを更新します。返された配列は、一致したテキストを最初の項目として持ち、その後、一致したテキストの括弧によるキャプチャグループに対して 1 つずつの項目を持ちます。</p>
+
+<p>一致に失敗した場合は、 <code>exec()</code> メソッドは {{jsxref("null")}} を返し、 {{jsxref("RegExp.lastIndex", "lastIndex")}} を <code>0</code> に設定します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>次の例を想定してください。</p>
+
+<pre class="brush: js notranslate">// "quick brown" の後に "jumps" が来るものを、その間の文字を無視して一致させます。
+// "brown" と "jumps" を取得します。
+// 大文字と小文字は区別しません。
+let re = /quick\s(brown).+?(jumps)/ig;
+let result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');
+</pre>
+
+<p>このスクリプトの結果は以下の表の通りです。</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="row">オブジェクト</th>
+ <th scope="col">プロパティ/添字</th>
+ <th scope="col">説明</th>
+ <th scope="col">例</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th colspan="1" rowspan="4" scope="row" style="vertical-align: top;"><code>result</code></th>
+ <td><code>[0]</code></td>
+ <td>文字が一致した部分の文字列全体</td>
+ <td><code>"Quick Brown Fox Jumps"</code></td>
+ </tr>
+ <tr>
+ <td><code>[1], ...[<var>n</var>]</code></td>
+ <td>
+ <p>もしあれば、括弧に囲まれた部分文字列が一致したものです。</p>
+
+ <p>括弧に囲まれた部分文字列の数に制限はありません。</p>
+ </td>
+ <td>
+ <p><code>result[1] === "Brown"</code></p>
+
+ <p><code>result[2] === "Jumps"</code></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>index</code></td>
+ <td>0 から始める一致した文字列の位置。</td>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <td><code>input</code></td>
+ <td>検索対象となった元の文字列。</td>
+ <td><code>The Quick Brown Fox Jumps Over The Lazy Dog</code></td>
+ </tr>
+ <tr>
+ <th colspan="1" rowspan="5" scope="row" style="vertical-align: top;"><code>re</code></th>
+ <td><code>lastIndex</code></td>
+ <td>
+ <p>次回の検索を始める位置です。</p>
+ </td>
+ <td><code>g</code> がない場合は <code>0</code> のままです。</td>
+ <td><code>25</code></td>
+ </tr>
+ <tr>
+ <td><code>ignoreCase</code></td>
+ <td>大文字小文字を区別しない、 <code>i</code> フラグが指定されているかどうか。</td>
+ <td><code>true</code></td>
+ </tr>
+ <tr>
+ <td><code>global</code></td>
+ <td>グローバルマッチのための、 <code>g</code> フラグが指定されているかどうか。</td>
+ <td><code>true</code></td>
+ </tr>
+ <tr>
+ <td><code>multiline</code></td>
+ <td>複数行に渡って文字列を検索する、 <code>m</code> フラグが指定されているかどうか。</td>
+ <td><code>false</code></td>
+ </tr>
+ <tr>
+ <td><code>source</code></td>
+ <td>パターンの文字列。</td>
+ <td><code>quick\s(brown).+?(jumps)</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Finding_successive_matches" name="Finding_successive_matches">成功する一致の検索</h3>
+
+<p>正規表現で "<code>g</code>" フラグを使用する場合、同じ文字列で成功する一致を見つけるために <code>exec()</code> メソッドを複数回使うことができます。その際、検索は正規表現オブジェクトの {{jsxref("RegExp.lastIndex", "lastIndex")}} プロパティで指定された位置の <code><var>str</var></code> の部分文字列から始まります ({{jsxref("RegExp.prototype.test()", "test()")}} も {{jsxref("RegExp.lastIndex", "lastIndex")}} プロパティの位置から始めます)。なお、別な文字列を検索する場合でも {{jsxref("RegExp.lastIndex", "lastIndex")}} プロパティはリセットされず、既存の {{jsxref("RegExp.lastIndex", "lastIndex")}} から検索を始めます。</p>
+
+<p>例えば、次のスクリプトを考えてみてください。</p>
+
+<pre class="brush: js notranslate">let myRe = /ab*/g;
+let str = 'abbcdefabh';
+let myArray;
+while ((myArray = myRe.exec(str)) !== null) {
+ let msg = myArray[0] + ' を見つけました。';
+ msg += '次の検索は ' + myRe.lastIndex + ' からです。';
+ console.log(msg);
+}
+</pre>
+
+<p>このスクリプトは以下のテキストを表示します。</p>
+
+<pre class="notranslate">abb を見つけました。次の検索は 3 からです。
+ab を見つけました。次の検索は 9 からです。
+</pre>
+
+<div class="warning">
+<p><strong>警告:</strong> <strong>正規表現リテラル (または {{jsxref("RegExp")}} コンストラクター) を <code>while</code> の条件の中に配置しないでください。</strong></p>
+
+<p><strong>{{jsxref("RegExp.lastIndex", "lastIndex")}} プロパティが繰り返し毎にリセットされるので、無限ループになります。</strong></p>
+
+<p><strong>また、グローバルフラグ ("<code>g</code>") が設定されていることを確認してください。これも無限ループを引き起こします。</strong></p>
+</div>
+
+<h3 id="Using_exec_with_RegExp_literals" name="Using_exec_with_RegExp_literals"><strong>RegExp リテラルでの exec() の使用</strong></h3>
+
+<p><strong>{{jsxref("RegExp")}} オブジェクトを作成せずに <code>exec()</code> を使用することもできます。</strong></p>
+
+<pre class="brush: js notranslate"><strong>let matches = /(hello \S+)/.exec('This is a hello world!');
+console.log(matches[1]);
+</strong></pre>
+
+<p><strong>これで 'hello world!' を含んだメッセージをログ出力します。</strong></p>
+
+<h2 id="Specifications" name="Specifications"><strong>仕様書</strong></h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col"><strong>仕様書</strong></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong>{{SpecName('ESDraft', '#sec-regexp.prototype.exec', 'RegExp.exec')}}</strong></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility"><strong>ブラウザーの互換性</strong></h2>
+
+<div>
+<div class="hidden"><strong>このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</strong></div>
+
+<p><strong>{{Compat("javascript.builtins.RegExp.exec")}}</strong></p>
+</div>
+
+<h2 id="See_also" name="See_also"><strong>関連情報</strong></h2>
+
+<ul>
+ <li><strong><a href="/ja/docs/Web/JavaScript/Guide">JavaScript ガイド</a> の<a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a>の章</strong></li>
+ <li><strong>{{jsxref("RegExp")}}</strong></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/flags/index.html b/files/ja/web/javascript/reference/global_objects/regexp/flags/index.html
new file mode 100644
index 0000000000..22ce044b2d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/flags/index.html
@@ -0,0 +1,73 @@
+---
+title: RegExp.prototype.flags
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/flags
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/flags
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>flags</code></strong> プロパティは、現在の正規表現オブジェクトの<a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions#Advanced_searching_with_flags_2">フラグ</a>から成る文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-flags.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<p>{{JS_Property_Attributes(0, 0, 1)}}</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>flags</code> プロパティのフラグはアルファベット順にソートされます(左から右へ 例えば、<code>"gimuy"</code>)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_flags" name="Using_flags">flags の使用</h3>
+
+<pre class="brush: js; notranslate">/foo/ig.flags; // "gi"
+/bar/myu.flags; // "muy"
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js; notranslate">if (RegExp.prototype.flags === undefined) {
+ Object.defineProperty(RegExp.prototype, 'flags', {
+ configurable: true,
+ get: function() {
+ return this.toString().match(/[gimsuy]*$/)[0];
+ }
+ });
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-get-regexp.prototype.flags", "RegExp.prototype.flags")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.flags")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("RegExp.prototype.source")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/global/index.html b/files/ja/web/javascript/reference/global_objects/regexp/global/index.html
new file mode 100644
index 0000000000..53640842fe
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/global/index.html
@@ -0,0 +1,80 @@
+---
+title: RegExp.prototype.global
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/global
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/global
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>global</code></strong> プロパティは "<code>g</code>" フラグが正規表現で使われているかどうかを返します。<code>global</code> は個々の正規表現インスタンスの読取専用プロパティです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-global.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 1)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>global</code> の値は {{jsxref("Boolean")}} です。 <code>true</code> は "<code>g</code>" フラグを使用していることを表します。それ以外は <code>false</code> になります。 "<code>g</code>" フラグは、その正規表現が文字列の中で一致する可能性がある場所すべてについてテストを行うことを示します。 <code>global</code> ("<code>g</code>") と <code>sticky</code> ("<code>y</code>") の両方が指定された正規表現では、 <code>global</code> フラグが無視され、粘着的な比較が行われます。</p>
+
+<p>このプロパティを直接変更することはできません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_global" name="Using_global">global の使用</h3>
+
+<pre class="brush: js notranslate">var regex = new RegExp('foo', 'g');
+
+console.log(regex.global); // true
+
+var str = 'fooexamplefoo';
+
+var str1 = str.replace(regex, '');
+
+console.log(str1); // Output: example
+
+var regex1 = new RegExp('foo');
+
+var str2 = str.replace(regex1, '');
+
+console.log(str2); // Output: examplefoo</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-regexp.prototype.global', 'RegExp.prototype.global')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.global")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.lastIndex")}}</li>
+ <li>{{jsxref("RegExp.prototype.ignoreCase")}}</li>
+ <li>{{jsxref("RegExp.prototype.multiline")}}</li>
+ <li>{{jsxref("RegExp.prototype.source")}}</li>
+ <li>{{jsxref("RegExp.prototype.sticky")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/ignorecase/index.html b/files/ja/web/javascript/reference/global_objects/regexp/ignorecase/index.html
new file mode 100644
index 0000000000..f348af5116
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/ignorecase/index.html
@@ -0,0 +1,69 @@
+---
+title: RegExp.prototype.ignoreCase
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>ignoreCase</code></strong> プロパティは、"<code>i</code>" フラグが正規表現で使われているかどうかを示します。<code>ignoreCase</code> は、正規表現インスタンスごとの読み取り専用プロパティです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-ignorecase.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 1)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>ignoreCase</code> の値は {{jsxref("Boolean")}} で、"<code>i</code>" フラグが使われていたならば、真であり、そうでなければ、偽です。"<code>i</code>" フラグは、文字列でのマッチを適用する際に、大文字と小文字の違いは無視されるべきであることを示します。</p>
+
+<p>このプロパティを直接変更することはできません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_ignoreCase" name="Using_ignoreCase">ignoreCase の使用</h3>
+
+<pre class="brush: js notranslate">var regex = new RegExp('foo', 'i');
+
+console.log(regex.ignoreCase); // true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-regexp.prototype.ignorecase', 'RegExp.prototype.ignoreCase')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.ignoreCase")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.lastIndex")}}</li>
+ <li>{{jsxref("RegExp.prototype.global")}}</li>
+ <li>{{jsxref("RegExp.prototype.multiline")}}</li>
+ <li>{{jsxref("RegExp.prototype.source")}}</li>
+ <li>{{jsxref("RegExp.prototype.sticky")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/index.html b/files/ja/web/javascript/reference/global_objects/regexp/index.html
new file mode 100644
index 0000000000..5fb7a2c48c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/index.html
@@ -0,0 +1,261 @@
+---
+title: RegExp
+slug: Web/JavaScript/Reference/Global_Objects/RegExp
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - RegExp
+ - Regular Expressions
+ - コンストラクター
+ - 正規表現
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>RegExp</code></strong> オブジェクトは、パターンでテキストを検索するために使用します。</p>
+
+<p>正規表現を詳しく知りたい方は <a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">JavaScript ガイド</a> の <a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a> を参考にしてください。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<h3 id="Literal_notation_and_constructor" name="Literal_notation_and_constructor">リテラル記法とコンストラクター</h3>
+
+<p><code>RegExp</code> オブジェクトを生成するには二通りの方法があります。<em>リテラル記法</em>と<em>コンストラクター</em>です。</p>
+
+<ul>
+ <li><strong>リテラル記法</strong>は引数をスラッシュで囲み、引用符は使用しません。</li>
+ <li><strong>コンストラクター関数</strong>の引数はスラッシュで囲むのではなく、引用符を使用します。</li>
+</ul>
+
+<p>以下の三つの式は、同じ正規表現を生成します。</p>
+
+<pre class="brush: js notranslate">/ab+c/i
+new RegExp(/ab+c/, 'i') // リテラル記法
+new RegExp('ab+c', 'i') // コンストラクター
+</pre>
+
+<p>リテラル記法では、正規表現が評価されるときにコンパイルを行います。正規表現が変化しない場合は、リテラル記法を使用してください。例えばループ内で使用する正規表現を生成するためにリテラル記法を使用すると、反復処理のたびに正規表現を再コンパイルすることはありません。</p>
+
+<p><code>new RegExp('ab+c')</code> といった正規表現オブジェクトのコンストラクターは、実行時に正規表現をコンパイルします。正規表現パターンが変わることがわかっている場合や、パターンが不明でありユーザー入力など別のソースからパターンを取得する場合は、コンストラクター関数を使用してください。</p>
+
+<h3 id="Flags_in_constructor" name="Flags_in_constructor">コンストラクターのフラグ</h3>
+
+<p>ECMAScript 6 より、第 1 引数が <code>RegExp</code> で第 2 引数に <code><var>flags</var></code> を指定する場合 (<code>new RegExp(/ab+c/, 'i')</code>) に {{jsxref("TypeError")}} ("can't supply flags when constructing one RegExp from another") が発生しません。代わりに、引数を元に新たな <code>RegExp</code> が生成されます。</p>
+
+<p>コンストラクター関数を使用する場合は、通常の文字エスケープ規則 (文字列内に特殊文字が含まれるとき、前に <code>\</code> を付加する) が必須です。</p>
+
+<p>例えば、以下 2 つの構文は同等です。</p>
+
+<pre class="brush: js notranslate">let re = /\w+/
+let re = new RegExp('\\w+')
+</pre>
+
+<h3 id="Perl-like_RegExp_properties" name="Perl-like_RegExp_properties">Perl 風の RegExp プロパティ</h3>
+
+<p>{{JSxRef("RegExp")}} のプロパティのいくつかは、長い名前と短い (Perl 風の) 名前があります。 Both names always refer to the same value. (Perl is the programming language from which JavaScript modeled its regular expressions.). See also <a href="/en-US/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features#RegExp_Properties">deprecated <code>RegExp</code> properties.</a></p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("RegExp/RegExp", "RegExp()")}}</dt>
+ <dd>新しい <code>RegExp</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("RegExp.@@species", "get RegExp[@@species]")}}</dt>
+ <dd>派生オブジェクトを生成するために使用されるコンストラクター関数です。</dd>
+ <dt>{{jsxref("RegExp.lastIndex")}}</dt>
+ <dd>次のマッチングを開始する位置です。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{JSxRef("RegExp.prototype.flags")}}</dt>
+ <dd><code>RegExp</code> オブジェクトのフラグから成る文字列です。</dd>
+ <dt>{{JSxRef("RegExp.prototype.dotAll")}}</dt>
+ <dd><code>.</code> が改行文字にマッチするかどうか。</dd>
+ <dt>{{JSxRef("RegExp.prototype.global")}}</dt>
+ <dd>対象文字列で可能なすべてのマッチに対して正規表現をテストするか、それとも、最初のマッチに対してのみテストするどうかのフラグです。</dd>
+ <dt>{{JSxRef("RegExp.prototype.ignoreCase")}}</dt>
+ <dd>文字列でのマッチを適用する際に、大文字と小文字の違いを無視するかどうかのフラグです。</dd>
+ <dt>{{JSxRef("RegExp.prototype.multiline")}}</dt>
+ <dd>複数行に渡って文字列を検索するかどうかのフラグです。</dd>
+ <dt>{{JSxRef("RegExp.prototype.source")}}</dt>
+ <dd>パターンのテキストです。</dd>
+ <dt>{{JSxRef("RegExp.prototype.sticky")}}</dt>
+ <dd>検索が<ruby>先頭固定<rp> (</rp><rt>sticky</rt><rp>) </rp></ruby>であるかどうかのフラグです。</dd>
+ <dt>{{JSxRef("RegExp.prototype.unicode")}}</dt>
+ <dd>Unicode 機能が有効かどうかのフラグです。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{JSxRef("RegExp.prototype.compile()")}}</dt>
+ <dd>スクリプトの実行中に正規表現を (再) コンパイルします。</dd>
+ <dt>{{JSxRef("RegExp.prototype.exec()")}}</dt>
+ <dd>その文字列のパラメータでのマッチのための検索を実行します。</dd>
+ <dt>{{JSxRef("RegExp.prototype.test()")}}</dt>
+ <dd>その文字列のパラメータでのマッチのためのテストをします。</dd>
+ <dt>{{JSxRef("RegExp.prototype.toString()")}}</dt>
+ <dd>特定のオブジェクトを表す文字列を返します。{{JSxRef("Object.prototype.toString()")}} メソッドを上書きします。</dd>
+ <dt>{{JSxRef("RegExp.prototype.@@match()", "RegExp.prototype[@@match]()")}}</dt>
+ <dd>与えられた文字列とのマッチを行い、マッチ結果を返します。</dd>
+ <dt>{{JSxRef("RegExp.prototype.@@matchAll()", "RegExp.prototype[@@matchAll]()")}}</dt>
+ <dd>文字列に対して正規表現で一致したものをすべて返します。</dd>
+ <dt>{{JSxRef("RegExp.prototype.@@replace()", "RegExp.prototype[@@replace]()")}}</dt>
+ <dd>与えられた文字列のマッチを新しい部分文字列で置き換えます。</dd>
+ <dt>{{JSxRef("RegExp.prototype.@@search()", "RegExp.prototype[@@search]()")}}</dt>
+ <dd>与えられた文字列でマッチを検索し、文字列で見つかったパターンのインデックスを返します。</dd>
+ <dt>{{JSxRef("RegExp.prototype.@@split()", "RegExp.prototype[@@split]()")}}</dt>
+ <dd>文字列を部分文字列に分割し、指定された文字列を配列に分割します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_a_regular_expression_to_change_data_format" name="Using_a_regular_expression_to_change_data_format">正規表現を使用したデータ形式の変更</h3>
+
+<p>以下のスクリプトは、{{jsxref("Global_Objects/String", "String")}} インスタンスの {{jsxref("String.prototype.replace()", "replace()")}} メソッドを使用して、 <em>first last</em> 形式のフォーマットでの名前にマッチさせ、<em>last, first</em> 形式のフォーマットで出力しています。</p>
+
+<p>置換テキスト中で、そのスクリプトは、<code>$1</code> と <code>$2</code> を使用して、それぞれ対応する正規表現パターンでマッチする括弧がキャプチャした結果を指定しています。</p>
+
+<pre class="brush: js notranslate">let re = /(\w+)\s(\w+)/
+let str = 'John Smith'
+let newstr = str.replace(re, '$2, $1')
+console.log(newstr)
+</pre>
+
+<p>これは、 <code>"Smith, John"</code> と表示します。</p>
+
+<h3 id="Using_regular_expression_to_split_lines_with_different_line_endingsends_of_lineline_breaks" name="Using_regular_expression_to_split_lines_with_different_line_endingsends_of_lineline_breaks">正規表現を使用したさまざまな行末/行の終端/改行での行の分割</h3>
+
+<p>既定の行末文字は、プラットフォーム (Unix、Windows など) によって異なります。この例で実行する行分割は、あらゆるプラットフォームで動作します。</p>
+
+<pre class="brush: js notranslate">let text = 'Some text\nAnd some more\r\nAnd yet\rThis is the end'
+let lines = text.split(/\r\n|\r|\n/)
+console.log(lines) // logs [ 'Some text', 'And some more', 'And yet', 'This is the end' ]
+</pre>
+
+<p>正規表現内のパターンの順序が重要であることに注意してください。</p>
+
+<h3 id="Using_regular_expression_on_multiple_lines" name="Using_regular_expression_on_multiple_lines">複数行で正規表現を使用する</h3>
+
+<pre class="brush: js notranslate">let s = 'Please yes\nmake my day!'
+
+s.match(/yes.*day/);
+// null
+
+s.match(/yes[^]*day/);
+// Returns ["yes\nmake my day"]
+</pre>
+
+<h3 id="Using_a_regular_expression_with_the_sticky_flag" name="Using_a_regular_expression_with_the_sticky_flag">sticky フラグ付きの正規表現の使用</h3>
+
+<p>{{JSxRef("Global_Objects/RegExp/sticky", "sticky")}} フラグは、対象文字列で {{jsxref("RegExp.prototype.lastIndex")}} からマッチングを試みることにより、正規表現の sticky マッチングを実行することを示します。</p>
+
+<pre class="brush: js notranslate">let str = '#foo#'
+let regex = /foo/y
+
+regex.lastIndex = 1
+regex.test(str) // true
+regex.lastIndex = 5
+regex.test(str) // false (lastIndex is taken into account with sticky flag)
+regex.lastIndex // 0 (reset after match failure)</pre>
+
+<h3 id="The_difference_between_the_sticky_flag_and_the_global_flag" name="The_difference_between_the_sticky_flag_and_the_global_flag">sticky フラグと global フラグの違い</h3>
+
+<p>sticky フラグ <code>y</code> を付けると、次の一致は <code>lastIndex</code> の位置で行われるのに対し、グローバルフラグ <code>g</code> を付けると、検索は <code>lastIndex</code> の位置から始められます。</p>
+
+<pre class="brush: js notranslate">re = /\d/y;
+while (r = re.exec("123 456")) console.log(r, "AND re.lastIndex", re.lastIndex);
+
+// [ '1', index: 0, input: '123 456', groups: undefined ] AND re.lastIndex 1
+// [ '2', index: 1, input: '123 456', groups: undefined ] AND re.lastIndex 2
+// [ '3', index: 2, input: '123 456', groups: undefined ] AND re.lastIndex 3
+// ... and no more match.</pre>
+
+<p>グローバルフラグ <code>g</code> を付けると、3桁だけでなく、6桁すべてが一致します。</p>
+
+<h3 id="Regular_expression_and_Unicode_characters" name="Regular_expression_and_Unicode_characters">正規表現と Unicode 文字</h3>
+
+<p>上の表にもある通り、<code>\w</code> や <code>\W</code> は ASCII 基本文字にのみマッチします。具体的には <code>a</code> から <code>z</code> 、<code>A</code> から <code>Z</code> 、 <code>0</code> から <code>9</code> および <code>_</code> です。</p>
+
+<p>キリル語やヘブライ語で使われるような非 ASCII 文字にマッチさせるには <code>\u<var>hhhh</var></code> 形式 (<code><var>hhhh</var></code> の部分は 16進表記の Unicode 値) を使ってください。</p>
+
+<p>この例は、文字列全体から Unicode 文字列だけを抜き出す方法を示しています。</p>
+
+<pre class="brush: js notranslate">let text = 'Образец text на русском языке'
+let regex = /[\u0400-\u04FF]+/g
+
+let match = regex.exec(text)
+console.log(match[0]) // logs 'Образец'
+console.log(regex.lastIndex) // logs '7'
+
+let match2 = regex.exec(text)
+console.log(match2[0]) // logs 'на' [did not log 'text']
+console.log(regex.lastIndex) // logs '15'
+
+// and so on
+</pre>
+
+<p><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes">Unicode プロパティエスケープ</a>機能は <code>\p{scx=Cyrl}</code> のように単純な表記を可能にする解決策を導入しています。スクリプト別の完全な Unicode コードブロック (範囲) を知ることができる外部リソースも、 <a href="http://kourge.net/projects/regexp-unicode-block">Regexp-Unicode-block</a> などがあります。</p>
+
+<h3 id="Extracting_sub-domain_name_from_URL" name="Extracting_sub-domain_name_from_URL">URL からのサブドメイン名の抽出</h3>
+
+<pre class="brush: js notranslate">let url = 'http://xxx.domain.com'
+console.log(/[^.]+/.exec(url)[0].substr(7)) // logs 'xxx'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-regexp-regular-expression-objects', 'RegExp')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp")}}</p>
+</div>
+
+<h3 id="Firefox-specific_notes" name="Firefox-specific_notes">Firefox 固有の注意事項</h3>
+
+<p>Firefox 34 より、量指定子を伴うキャプチャグループが動作を妨げている場合に、キャプチャグループにマッチしたテキストが空文字列ではなく <code>undefined</code> になります:</p>
+
+<pre class="brush: js notranslate">// Firefox 33 以前
+'x'.replace(/x(.)?/g, function(m, group) {
+ console.log("'group:" + group + "'");
+});
+// 'group:'
+
+// Firefox 34 以降
+'x'.replace(/x(.)?/g, function(m, group) {
+ console.log("'group:" + group + "'");
+});
+// 'group:undefined'
+</pre>
+
+<p>ウェブの互換性のため <code>RegExp.<var>$N</var></code> は引き続き、 <code>undefined</code> ではなく空文字列を返します (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1053944">bug 1053944</a>)。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide">JavaScript ガイド</a>内の<a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a>の章</li>
+ <li>{{jsxref("String.prototype.match()")}}</li>
+ <li>{{jsxref("String.prototype.replace()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/input/index.html b/files/ja/web/javascript/reference/global_objects/regexp/input/index.html
new file mode 100644
index 0000000000..5059ed7598
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/input/index.html
@@ -0,0 +1,67 @@
+---
+title: RegExp.input ($_)
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/input
+tags:
+ - JavaScript
+ - Non-standard
+ - Property
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/input
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p>標準外の <strong><code>input</code></strong> プロパティは正規表現の一致している文字列を含む静的プロパティです。 <code>RegExp.$_</code> はこのプロパティのエイリアスです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>input</code> プロパティは静的プロパティです。個々の正規表現オブジェクトのプロパティではありません。常に、 <code>RegExp.input</code> または <code>RegExp.$_.</code> として使用してください。</p>
+
+<p><code><strong>input</strong></code> プロパティの値は、正規表現の検索文字列が変更され文字列が一致しているときはいつでも変更されます。</p>
+
+<h2 id="Examples">Examples</h2>
+
+<h3 id="Using_lastIndex" name="Using_lastIndex">input と $_ の使用</h3>
+
+<pre class="brush: js notranslate">var re = /hi/g;
+re.test('hi there!');
+RegExp.input; // "hi there!"
+re.test('foo'); // new test, non-matching
+RegExp.$_; // "hi there!"
+re.test('hi world!'); // new test, matching
+RegExp.$_; // "hi world!"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Legacy RegExp features')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.lastMatch")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.lastMatch", "RegExp.lastMatch ($&amp;)")}}</li>
+ <li>{{jsxref("RegExp.lastParen", "RegExp.lastParen ($+)")}}</li>
+ <li>{{jsxref("RegExp.leftContext", "RegExp.leftContext ($`)")}}</li>
+ <li>{{jsxref("RegExp.rightContext", "RegExp.rightContext ($')")}}</li>
+ <li>{{jsxref("RegExp.n", "RegExp.$1-$9")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/lastindex/index.html b/files/ja/web/javascript/reference/global_objects/regexp/lastindex/index.html
new file mode 100644
index 0000000000..d0b1eceda8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/lastindex/index.html
@@ -0,0 +1,89 @@
+---
+title: RegExp.lastIndex
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex
+tags:
+ - JavaScript
+ - Property
+ - Reference
+ - RegExp
+ - Regular Expression
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>lastIndex</code></strong> は正規表現インスタンスの読み書き可能なプロパティで、次の一致を開始する位置を指定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-lastindex.html")}}</div>
+
+<div>{{js_property_attributes(1, 0, 0)}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><var>regExpObj</var>.lastIndex</code></pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このプロパティは、正規表現インスタンスがグローバル検索を示すために <code>g</code> フラグを使用した場合、または粘着的検索を示すために <code>y</code> フラグを使用した場合にのみ設定されます。以下の規則が適用されます。</p>
+
+<ul>
+ <li><code>lastIndex</code> が文字列の長さよりも大きければ、 {{jsxref("RegExp.prototype.test()", "test()")}} および {{jsxref("RegExp.prototype.exec()", "exec()")}} は失敗し、<code>lastIndex</code> は 0 にセットされます。</li>
+ <li><code>lastIndex</code> が文字列の長さ以下で、かつ正規表現が空文字列に一致する場合には、正規表現は <code>lastIndex</code> から始まる入力に一致します。</li>
+ <li><code>lastIndex</code> が文字列の長さと等しく、かつ、正規表現が空文字列に一致しない場合、正規表現は入力に一致せず、 <code>lastIndex</code> は 0 にリセットされます。</li>
+ <li>それ以外の場合は、 <code>lastIndex</code> は直近の一致に続く次の位置に設定されます。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="lastIndex_の使用">lastIndex の使用</h3>
+
+<p>例えば、以下の連続した処理を考えてみてください。:</p>
+
+<pre class="brush: js">var re = /(hi)?/g;
+</pre>
+
+<p>空文字列に一致します。</p>
+
+<pre class="brush: js">console.log(re.exec('hi'));
+console.log(re.lastIndex);
+</pre>
+
+<p><code>lastIndex</code> が 2 になり<code>["hi", "hi"]</code> が返ります。</p>
+
+<pre class="brush: js">console.log(re.exec('hi'));
+console.log(re.lastIndex);
+</pre>
+
+<p>ゼロ番目の要素が一致した文字列なので、 <code>["", undefined]</code> という空配列が返ります。この場合、 <code>lastIndex</code> が 2 であったときに (そして 2 のままである)、 <code>hi</code> の長さが 2 であるので、空文字列になります。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-properties-of-regexp-instances', 'RegExp.lastIndex')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.lastIndex")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.prototype.ignoreCase")}}</li>
+ <li>{{jsxref("RegExp.prototype.global")}}</li>
+ <li>{{jsxref("RegExp.prototype.multiline")}}</li>
+ <li>{{jsxref("RegExp.prototype.source")}}</li>
+ <li>{{jsxref("RegExp.prototype.sticky")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/lastmatch/index.html b/files/ja/web/javascript/reference/global_objects/regexp/lastmatch/index.html
new file mode 100644
index 0000000000..90b918a125
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/lastmatch/index.html
@@ -0,0 +1,67 @@
+---
+title: RegExp.lastMatch ($&)
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch
+tags:
+ - JavaScript
+ - Non-standard
+ - Property
+ - Read-only
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p>標準外の <strong>lastMatch</strong> プロパティは、最後に一致した文字列を含む正規表現の静的で読み取り専用のプロパティです。 <code>RegExp.$&amp;</code> はこのプロパティに対するエイリアスです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>lastMatch</code> プロパティは静的プロパティです。個々の正規表現オブジェクトのプロパティではありません。そのかわりに、常に、<code>RegExp.lastMatch</code>または<code>RegExp['$&amp;'].</code>として使用してください。</p>
+
+<p><code>lastMatch</code> プロパティの値は、読み取り専用で、一致に成功するたびに変更されます。</p>
+
+<p>ドットプロパティアクセサー (<code>RegExp.$&amp;</code>) で短縮エイリアスを使用することはできません。その場合、パーサーは "&amp;" という表現を期待して {{jsxref("SyntaxError")}} が発生します。<a href="/docs/Web/JavaScript/Reference/Operators/Property_Accessors">プロパティへのアクセスにはブラケット表記法</a>を使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_lastMatch_and" name="Using_lastMatch_and">lastMatch と $&amp; の使用</h3>
+
+<pre class="brush: js notranslate">var re = /hi/g;
+re.test('hi there!');
+RegExp.lastMatch; // "hi"
+RegExp['$&amp;']; // "hi"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Legacy RegExp features')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.lastMatch")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.input", "RegExp.input ($_)")}}</li>
+ <li>{{jsxref("RegExp.lastParen", "RegExp.lastParen ($+)")}}</li>
+ <li>{{jsxref("RegExp.leftContext", "RegExp.leftContext ($`)")}}</li>
+ <li>{{jsxref("RegExp.rightContext", "RegExp.rightContext ($')")}}</li>
+ <li>{{jsxref("RegExp.n", "RegExp.$1-$9")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/lastparen/index.html b/files/ja/web/javascript/reference/global_objects/regexp/lastparen/index.html
new file mode 100644
index 0000000000..6785a55d39
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/lastparen/index.html
@@ -0,0 +1,67 @@
+---
+title: RegExp.lastParen ($+)
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/lastParen
+tags:
+ - JavaScript
+ - Non-standard
+ - Property
+ - Read-only
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/lastParen
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p>標準外の <strong><code>lastParen</code></strong> プロパティは静的かつ読み取り専用の正規表現のプロパティで、最後に一致した括弧で括られた部分文字列を含みます。 <code>RegExp.$+</code> はこのプロパティに対するエイリアスです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>lastParen</code> プロパティは静的プロパティです。個々の正規表現オブジェクトのプロパティではありません。常に、 <code>RegExp.lastParen</code> または <code>RegExp['$+']</code> として使用してください。</p>
+
+<p><code>lastParen</code> プロパティの値は読み取り専用で、一致に成功するたびに変更されます。</p>
+
+<p>ドットプロパティアクセサー (<code>RegExp.$+</code>) で短縮エイリアスを使用することはできません。その場合、パーサーは "+" という表現を期待して {{jsxref("SyntaxError")}} が発生します。<a href="/docs/Web/JavaScript/Reference/Operators/Property_Accessors">プロパティへのアクセスにはブラケット表記法</a>を使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_lastMatch_and" name="Using_lastMatch_and">lastMatch と $+ の使用</h3>
+
+<pre class="brush: js notranslate">var re = /(hi)/g;
+re.test('hi there!');
+RegExp.lastParen; // "hi"
+RegExp['$+']; // "hi"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Legacy RegExp features')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.lastParen")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.input", "RegExp.input ($_)")}}</li>
+ <li>{{jsxref("RegExp.lastMatch", "RegExp.lastMatch ($&amp;)")}}</li>
+ <li>{{jsxref("RegExp.leftContext", "RegExp.leftContext ($`)")}}</li>
+ <li>{{jsxref("RegExp.rightContext", "RegExp.rightContext ($')")}}</li>
+ <li>{{jsxref("RegExp.n", "RegExp.$1-$9")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/leftcontext/index.html b/files/ja/web/javascript/reference/global_objects/regexp/leftcontext/index.html
new file mode 100644
index 0000000000..f97a676da6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/leftcontext/index.html
@@ -0,0 +1,67 @@
+---
+title: RegExp.leftContext ($`)
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/leftContext
+tags:
+ - JavaScript
+ - Non-standard
+ - Property
+ - Read-only
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/leftContext
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p>標準外の <strong><code>input</code></strong> プロパティは、正規表現の一致している文字列を含む静的プロパティです。 <code>RegExp.$`</code> はこのプロパティのエイリアスです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>leftContext</code> プロパティは静的プロパティです。個々の正規表現オブジェクトのプロパティではありません。常に、 <code>RegExp.leftContext</code> または <code>RegExp['$`']</code> として使用してください。</p>
+
+<p><code>leftContext</code> プロパティの値は読み取り専用で、一致に成功するたびに変更されます。</p>
+
+<p>ドットプロパティアクセサー (<code>RegExp.$`</code>) で短縮エイリアスを使用することはできません。その場合、パーサーはテンプレート文字列の開始をを期待して {{jsxref("SyntaxError")}} が発生します。<a href="/docs/Web/JavaScript/Reference/Operators/Property_Accessors">プロパティへのアクセスにはブラケット表記法</a>を使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_lastIndex" name="Using_lastIndex">input と $` の使用</h3>
+
+<pre class="brush: js notranslate">var re = /world/g;
+re.test('hello world!');
+RegExp.leftContext; // "hello "
+RegExp['$`']; // "hello "
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Legacy RegExp features')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.leftContext")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.input", "RegExp.input ($_)")}}</li>
+ <li>{{jsxref("RegExp.lastMatch", "RegExp.lastMatch ($&amp;)")}}</li>
+ <li>{{jsxref("RegExp.lastParen", "RegExp.lastParen ($+)")}}</li>
+ <li>{{jsxref("RegExp.rightContext", "RegExp.rightContext ($')")}}</li>
+ <li>{{jsxref("RegExp.n", "RegExp.$1-$9")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/multiline/index.html b/files/ja/web/javascript/reference/global_objects/regexp/multiline/index.html
new file mode 100644
index 0000000000..4ca4a99ed3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/multiline/index.html
@@ -0,0 +1,69 @@
+---
+title: RegExp.prototype.multiline
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/multiline
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/multiline
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>multiline</code></strong> プロパティは、正規表現で "<code>m</code>" フラグが使用されているかどうかを示します。<code>multiline</code> は正規表現インスタンスごとの読み取り専用プロパティです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-multiline.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 1)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>multiline</code> の値は {{jsxref("Boolean")}} で、"<code>m</code>" フラグが使われていたならば、真であり、そうでなければ、偽です。"<code>m</code>" フラグは複数行の入力文字列が複数行として扱われるべきであることを示します。例えば、"<code>m</code>" フラグが使われているならば、"<code>^</code>" と "<code>$</code>" は、文字列の全体の始まりと終端だけにマッチする特殊文字から、文字列内の複数行の始まりと終端だけにマッチする特殊文字に変化します。</p>
+
+<p>このプロパティを直接変更することはできません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_multiline" name="Using_multiline">multiline の使用</h3>
+
+<pre class="brush: js notranslate">var regex = new RegExp('foo', 'm');
+
+console.log(regex.multiline); // true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-regexp.prototype.multiline', 'RegExp.prototype.multiline')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.multiline")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.lastIndex")}}</li>
+ <li>{{jsxref("RegExp.prototype.global")}}</li>
+ <li>{{jsxref("RegExp.prototype.ignoreCase")}}</li>
+ <li>{{jsxref("RegExp.prototype.source")}}</li>
+ <li>{{jsxref("RegExp.prototype.sticky")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/n/index.html b/files/ja/web/javascript/reference/global_objects/regexp/n/index.html
new file mode 100644
index 0000000000..124513909e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/n/index.html
@@ -0,0 +1,83 @@
+---
+title: RegExp.$1-$9
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/n
+tags:
+ - JavaScript
+ - Non-standard
+ - Property
+ - Read-only
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/n
+---
+<div>{{JSRef}}</div>
+
+<p>旧来の <strong>$1, $2, $3, $4, $5, $6, $7, $8, $9</strong> プロパティは、正規表現の静的かつ読み取り専用プロパティで、括弧で括られた部分文字列に一致したものを含みます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>$1, ..., $9 プロパティは静的です。個々の正規表現オブジェクトのプロパティではありません。そのため、常に <code>RegExp.$1</code>, ..., <code>RegExp.$9</code>として使用してください。</p>
+
+<p>これらのプロパティの値は読み取り専用で、一致に成功するたびに変更されます。</p>
+
+<p>括弧で括られた部分文字列の数に制限はありませんが、 <code>RegExp</code> オブジェクトは最初の 9 つの部分文字列しか保持できません。返された配列の添字を使用すると、すべての括弧付き部分文字列にアクセスすることができます。</p>
+
+<p>これらのプロパティは、 {{jsxref("String.replace")}} メソッドの置換テキストで使用することができます。この方法で使用する場合は、これらのプロパティの前に RegExp を付けないでください。以下の例は、これを示しています。正規表現に括弧が含まれていない場合、スクリプトは <code>$n</code> を文字通り解釈します (ここで <code>n</code> は正の整数です)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_n_with_String.replace" name="Using_n_with_String.replace">$n を String.replace で使用</h3>
+
+<p>次のスクリプトは、 {{jsxref("String")}} インスタンスの {{jsxref("String.prototype.replace()", "replace()")}} メソッドを使用して、名前を <em>first last</em> の形式で一致させ、 <em>last, first</em> の形式で出力します。置換テキストでは、スクリプトは <code>$1</code> と <code>$2</code> を使用して、正規表現パターンで対応する一致する括弧の結果を示しています。</p>
+
+<pre class="brush: js notranslate">var re = /(\w+)\s(\w+)/;
+var str = 'John Smith';
+str.replace(re, '$2, $1'); // "Smith, John"
+RegExp.$1; // "John"
+RegExp.$2; // "Smith"
+</pre>
+
+<h3 id="Using_n_with_RegExp.test" name="Using_n_with_RegExp.test"></h3>
+
+<p>次のスクリプトは、 {{jsxref("RegExp")}} インスタンスの {{jsxref("RegExp.prototype.test()", "test()")}} メソッドを使用して、一般的な文字列で数値を取得しています。</p>
+
+<pre class="brush: js notranslate">var str = 'Test 24';
+var number = /(\d+)/.test(str) ? RegExp.$1 : '0';
+number; // "24"
+</pre>
+
+<p><code>re.test(str)</code> 呼び出しと <code>RegExp.$n</code> プロパティの間で他の正規表現を使用する操作は、副作用がある可能性があることに注意してください。そのため、これらの特殊なプロパティへのアクセスは即座に行うべきで、そうしないと予期せぬ結果になる可能性があります。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Legacy RegExp features')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.n")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.input", "RegExp.input ($_)")}}</li>
+ <li>{{jsxref("RegExp.lastMatch", "RegExp.lastMatch ($&amp;)")}}</li>
+ <li>{{jsxref("RegExp.lastParen", "RegExp.lastParen ($+)")}}</li>
+ <li>{{jsxref("RegExp.leftContext", "RegExp.leftContext ($`)")}}</li>
+ <li>{{jsxref("RegExp.rightContext", "RegExp.rightContext ($')")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/regexp/index.html b/files/ja/web/javascript/reference/global_objects/regexp/regexp/index.html
new file mode 100644
index 0000000000..d4af61a39d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/regexp/index.html
@@ -0,0 +1,114 @@
+---
+title: RegExp() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/RegExp
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - RegExp
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/RegExp
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>RegExp</code></strong> コンストラクターは、パターンに従ったテキストを検索する正規表現オブジェクトを生成します。</p>
+
+<p>正規表現について詳しく知りたい方は <a href="/ja/docs/Web/JavaScript/Guide">JavaScript ガイド</a> の <a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a> を参考にしてください。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-constructor.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p>リテラル記法、コンストラクター記法、ファクトリ記法を使用することができます。</p>
+
+<pre class="syntaxbox notranslate">/<var>pattern</var>/<var>flags</var>
+new RegExp(<var>pattern</var>[, <var>flags</var>])
+RegExp(<var>pattern</var>[, <var>flags</var>])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>pattern</var></code></dt>
+ <dd>正規表現のテキストです。</dd>
+ <dd>ES5 以降では、別な <code>RegExp</code> オブジェクトまたはリテラルにすることができます (後者は 2 つの RegExp コンストラクター記法のみ)。パターンには<a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions#Using_special_characters">特殊文字</a>を含めることができるため、文字列リテラルよりも広い範囲の値に一致させることができます。</dd>
+ <dt><code><var>flags</var></code></dt>
+ <dd>
+ <p>指定された場合、 <code><var>flags</var></code> は追加するフラグを含む文字列です。</p>
+
+ <p>または、パターン用のオブジェクトが提供された場合は <code><var>flags</var></code> の文字列は他のオブジェクトのフラグを置き換えます (そして <code>lastIndex</code> は 0 にリセットされます) (ES2015以降)。</p>
+
+ <p><code><var>flags</var></code> が指定されず正規表現オブジェクトが提供されない場合、オブジェクトのフラグ (と <code>lastIndex</code> の値) がコピーされます。</p>
+
+ <p><code><var>flags</var></code> は以下の値を任意の組み合わせを含んだ文字列を指定することができます。</p>
+
+ <dl>
+ <dt><code>g</code> (グローバルマッチ)</dt>
+ <dd>最初のマッチの後に止まることなくすべての一致するものを探す。</dd>
+ <dt><code>i</code> (大文字・小文字の無視)</dt>
+ <dd><code>u</code> フラグが有効な場合は、 Unicode による大文字・小文字の扱いを行います。</dd>
+ <dt><code>m</code> (複数行)</dt>
+ <dd>先頭および終端を示す文字 (<code>^</code> と <code>$</code>) が、複数の行にまたがって機能します (すなわち、入力文字列全体の先頭および終端だけでなく、<em>各々の</em>行 (<code>\n</code> や <code>\r</code> で区切られる) の先頭および末尾に一致します)。</dd>
+ <dt><code>s</code> ("dotAll")</dt>
+ <dd><code>.</code> を改行文字に一致させることができます。</dd>
+ <dt><code>u</code> (unicode)</dt>
+ <dd>パターンを Unicode コードポイントの並びとして扱います (<a href="/ja/docs/Web/API/DOMString/Binary">バイナリ文字列</a>も参照)。</dd>
+ <dt><code>y</code> (<ruby>先頭固定 <rp>(</rp><rt>sticky</rt><rp>)</rp></ruby>)</dt>
+ <dd>対象文字列中の正規表現の <code>lastIndex</code> プロパティによって示された位置からのみ比較するようになります (それより後の位置からの比較は試みません)。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Literal_notation_and_constructor" name="Literal_notation_and_constructor">リテラル記法とコンストラクター</h3>
+
+<p><code>RegExp</code> オブジェクトを生成するのに<em>リテラル記法</em>と<em>コンストラクター</em>の2つの方法があります。</p>
+
+<ul>
+ <li><strong>リテラル記法</strong>の引数はスラッシュの間に入れ、引用符を使用しません。</li>
+ <li><strong>コンストラクター関数</strong>の引数はスラッシュの間に入れるのではなく、引用符を使用します。</li>
+</ul>
+
+<p>以下の3つの式は、同じ正規表現を生成するものです。</p>
+
+<pre class="brush: js notranslate">/ab+c/i
+new RegExp(/ab+c/, 'i') // リテラル表記
+new RegExp('ab+c', 'i') // コンストラクター
+</pre>
+
+<p>リテラル記法は、式が評価されるときに正規表現をコンパイルした結果となります。正規表現が変化しない場合はリテラル記法を使用してください。例えば、ループで使用される正規表現を構築するためにリテラル記法を使用した場合、正規表現は反復ごとに再コンパイルされません。</p>
+
+<p>正規表現オブジェクトのコンストラクター、例えば <code>new RegExp('ab+c')</code> は、正規表現の実行時にコンパイルを行います。コンストラクター関数は、正規表現のパターンが変化することがわかっている場合や、パターンがわからず、ユーザー入力などの別のソースから取得している場合に使用してください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-regexp-constructor', 'RegExp constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide">JavaScript ガイド</a>内の<a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a>の章</li>
+ <li>{{jsxref("String.prototype.match()")}}</li>
+ <li>{{jsxref("String.prototype.replace()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/rightcontext/index.html b/files/ja/web/javascript/reference/global_objects/regexp/rightcontext/index.html
new file mode 100644
index 0000000000..755f4d434f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/rightcontext/index.html
@@ -0,0 +1,67 @@
+---
+title: RegExp.rightContext ($')
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/rightContext
+tags:
+ - JavaScript
+ - Non-standard
+ - Property
+ - Read-only
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/rightContext
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p>標準外の <strong>rightContext</strong> プロパティは静的かつ読み取り専用の正規表現のプロパティで、最新の一致に続く部分文字列が入ります。 <code>RegExp.$`</code> はこのプロパティのエイリアスです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>rightContext</code> プロパティは静的プロパティです。個々の正規表現オブジェクトのプロパティではありません。常に、 <code>RegExp.rightContext</code> または <code>RegExp["$'"]</code> として使用してください。</p>
+
+<p><code>rightContext</code> プロパティの値は読み取り専用で、一致に成功するたびに変更されます。</p>
+
+<p>ドットプロパティアクセサー (<code>RegExp.$'</code>) で短縮エイリアスを使用することはできません。その場合、パーサーは文字列の開始をを期待して {{jsxref("SyntaxError")}} が発生します。<a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">プロパティへのアクセスにはブラケット表記法</a>を使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_rightContext_and" name="Using_rightContext_and">rightContext と $' の使用</h3>
+
+<pre class="brush: js notranslate">var re = /hello/g;
+re.test('hello world!');
+RegExp.rightContext; // " world!"
+RegExp["$'"]; // " world!"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Legacy RegExp features')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.rightContext")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.input", "RegExp.input ($_)")}}</li>
+ <li>{{jsxref("RegExp.lastMatch", "RegExp.lastMatch ($&amp;)")}}</li>
+ <li>{{jsxref("RegExp.lastParen", "RegExp.lastParen ($+)")}}</li>
+ <li>{{jsxref("RegExp.leftContext", "RegExp.leftContext ($`)")}}</li>
+ <li>{{jsxref("RegExp.n", "RegExp.$1-$9")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/source/index.html b/files/ja/web/javascript/reference/global_objects/regexp/source/index.html
new file mode 100644
index 0000000000..ea0b05887c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/source/index.html
@@ -0,0 +1,69 @@
+---
+title: RegExp.prototype.source
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/source
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/source
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>source</code></strong> プロパティは、正規表現オブジェクトのソーステキストを含む {{jsxref("String")}} を返します。これには、両端の 2 つのスラッシュやフラグは含まれません。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-source.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 1)}}</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_source" name="Using_source">source の使用</h3>
+
+<pre class="brush: js notranslate">var regex = /fooBar/ig;
+
+console.log(regex.source); // "fooBar", /.../ と "ig" は含まれません。
+</pre>
+
+<h3 id="Empty_regular_expressions_and_escaping" name="Empty_regular_expressions_and_escaping">空の正規表現とエスケープ</h3>
+
+<p>ECMAScript 5 から、<code>source</code> プロパティは空の正規表現に対して空文字を返さなくなりました。代わりに、<code>(?:)</code> 文字列を返します。加えて、 ("\n" のような) 行区切りはエスケープされます。</p>
+
+<pre class="brush: js notranslate">new RegExp().source; // "(?:)"
+
+new RegExp('\n').source === '\n'; // ES5 以前で、true
+new RegExp('\n').source === '\\n'; // ES5 から、true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-regexp.prototype.source', 'RegExp.prototype.source')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.source")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.prototype.flags")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/sticky/index.html b/files/ja/web/javascript/reference/global_objects/regexp/sticky/index.html
new file mode 100644
index 0000000000..3102d5903c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/sticky/index.html
@@ -0,0 +1,96 @@
+---
+title: RegExp.prototype.sticky
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/sticky
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+ - プロパティ
+ - 正規表現
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/sticky
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>sticky</code></strong> プロパティは、検索が<ruby>粘着的<rp> (</rp><rt>sticky</rt><rp>) </rp></ruby>である (文字列内の検索を、この正規表現の {{jsxref("RegExp.lastIndex", "lastIndex")}} プロパティで示されたインデックスからのみ開始する) かどうかを表します。 <code>sticky</code> は個々の正規表現オブジェクトが持つ読み取り専用のプロパティです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-sticky.html", "taller")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<div>{{js_property_attributes(0, 0, 1)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>sticky</code> の値は {{jsxref("Boolean")}} で、 true ならば "<code>y</code>" フラグが使われており、 false はそれ以外を表します。 "<code>y</code>" フラグは対象文字列において、この正規表現の {{jsxref("RegExp.lastIndex", "lastIndex")}} プロパティで示されたインデックスからのみ一致することを示しています (そしてそれ以降のインデックスから一致を調べようとはしません)。 <code>sticky</code> と <code>global</code> の両方が定義された正規表現では、 <code>global</code> フラグは無視されます。</p>
+
+<p>このプロパティを直接変更することはできません。これは読み取り専用です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_a_regular_expression_with_the_sticky_flag" name="Using_a_regular_expression_with_the_sticky_flag">sticky フラグのついた正規表現の使用</h3>
+
+<pre class="brush: js">var str = '#foo#';
+var regex = /foo/y;
+
+regex.lastIndex = 1;
+regex.test(str); // true
+regex.lastIndex = 5;
+regex.test(str); // false (lastIndex is taken into account with sticky flag)
+regex.lastIndex; // 0 (reset after match failure)
+</pre>
+
+<h3 id="Anchored_sticky_flag" name="Anchored_sticky_flag">アンカーになる sticky フラグ</h3>
+
+<p>Firefox の SpiderMonkey エンジンのいくつかのバージョンでは <code>^</code> 指定に関する<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=773687">バグ</a>があり、 <code>^</code> アサーションで始まり、 sticky フラグを使うことで一致しない式を許可していました。このバグは Firefox 3.6 以降 (それ以前は sticky が実装されていてもバグはありませんでした) で発生し、2015年に修正されました。 ES2015 の仕様では、おそらくこのバグのために、以下のとおり定められています。</p>
+
+<blockquote>
+<p>パターンとともに <code>y</code> フラグが使用された場合、 ^ は常に入力の始まりにのみ一致するか、 (<code>multiline</code> が <code>true</code> の場合) 最初の行に一致します。</p>
+</blockquote>
+
+<p>以下は正しい挙動の例です。</p>
+
+<pre class="brush: js">var regex = /^foo/y;
+regex.lastIndex = 2;
+regex.test('..foo'); // false - index 2 is not the beginning of the string
+
+var regex2 = /^foo/my;
+regex2.lastIndex = 2;
+regex2.test('..foo'); // false - index 2 is not the beginning of the string or line
+regex2.lastIndex = 2;
+regex2.test('.\nfoo'); // true - index 2 is the beginning of a line
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-regexp.prototype.sticky', 'RegExp.prototype.sticky')}}</td>
+ </tr>
+ </thead>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.sticky")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.lastIndex")}}</li>
+ <li>{{jsxref("RegExp.prototype.global")}}</li>
+ <li>{{jsxref("RegExp.prototype.ignoreCase")}}</li>
+ <li>{{jsxref("RegExp.prototype.multiline")}}</li>
+ <li>{{jsxref("RegExp.prototype.source")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/test/index.html b/files/ja/web/javascript/reference/global_objects/regexp/test/index.html
new file mode 100644
index 0000000000..c87e10047e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/test/index.html
@@ -0,0 +1,130 @@
+---
+title: RegExp.prototype.test()
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/test
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/test
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>test()</code></strong> メソッドは、正規表現と指定された文字列の一致を調べるための検索を実行します。 <code>true</code> または <code>false</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-test.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>regexObj</var>.test(<var>str</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>str</var></code></dt>
+ <dd>正規表現にマッチさせる文字列。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>正規表現と指定した文字列 <code><var>str</var></code> の間に一致するものがあった場合は、<code>true</code>。そうでない場合は、<code>false</code>。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>あるパターンがある文字列内で見つかるかどうか調べたいときは、 <code>test()</code> を使用してください。 <code>test()</code> は論理値を返します。これは (一致した場所のインデックス番号、または見つからない場合は <code>-1</code> を返す) {{jsxref("String.prototype.search()")}} メソッドがとは異なります。</p>
+
+<p>より多くの情報を得るためには (実行が遅くなりますが)、 {{jsxref("RegExp.prototype.exec()", "exec()")}} メソッドを使用してください ({{jsxref("String.prototype.match()")}} メソッドと同様)。</p>
+
+<p><code>exec()</code> と同様に (またはその組み合わせで)、 <code>test()</code> は同じグローバル正規表現インスタンスで複数回呼び出されると、前回の一致の先に進むことになります。</p>
+
+
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_test" name="Using_test">test() の使用</h3>
+
+<p>"<code>hello</code>" が文字列の先頭近くに含まれているかを真偽値で確認する簡単な例です。</p>
+
+<pre class="brush: js notranslate">const str = 'hello world!';
+const result = /^hello/.test(str);
+
+console.log(result); // true
+</pre>
+
+<p>次の例では、テストの成否によってメッセージを表示します。</p>
+
+<pre class="brush: js notranslate">function testInput(re, str) {
+ let midstring;
+ if (re.test(str)) {
+ midstring = 'contains';
+ } else {
+ midstring = 'does not contain';
+ }
+ console.log(`${str} ${midstring} ${re.source}`);
+}
+</pre>
+
+<h3 id="Using_test_on_a_regex_with_the_global_flag" name="Using_test_on_a_regex_with_the_global_flag">グローバルフラグを持つ正規表現の test() の使用</h3>
+
+<p>正規表現に<a href="/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Advanced_searching_with_flags_2">グローバルフラグ</a>が設定されている場合、 <code>test()</code> は正規表現が所有する {{jsxref("RegExp.lastIndex", "lastIndex")}} の値を加算します。 ({{jsxref("RegExp.prototype.exec()", "exec()")}} も同様に <code>lastIndex</code> プロパティの値を加算します。)</p>
+
+<p>その後にさらに <code>test(<var>str</var>)</code> を呼び出すと、 <code><var>str</var></code> を <code>lastIndex</code> から検索します。 <code>lastIndex</code> プロパティは <code>test()</code> が <code>true</code> を返すたびに増え続けます。</p>
+
+<div class="blockIndicator note">
+<p><strong>補足:</strong> <code>test()</code> が <code>true</code> を返す限り、 <code>lastIndex</code> は別な文字列をテストした場合であっても、リセット<em>されません</em>。</p>
+</div>
+
+<p><code>test()</code> が <code>false</code> を返した場合、正規表現の <code>lastIndex</code> プロパティを呼び出すと <code>0</code> にリセットされます。</p>
+
+<p>次の例はその挙動を示しています。</p>
+
+<pre class="brush: js notranslate">const regex = /foo/g; // "global" フラグを設定
+
+// regex.lastIndex は 0 です。
+regex.test('foo') // true
+
+// regex.lastIndex は 3 です。
+regex.test('foo') // false
+
+// regex.lastIndex は 0 です。
+regex.test('barfoo') // true
+
+// regex.lastIndex は 6 です。
+regex.test('foobar') //false
+
+// regex.lastIndex は 0 です。
+// (...以下略)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-regexp.prototype.test', 'RegExp.test')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.test")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide">JavaScript ガイド</a>の<a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a></li>
+ <li>{{jsxref("RegExp")}}</li>
+ <li>{{jsxref("RegExp.prototype")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/tosource/index.html b/files/ja/web/javascript/reference/global_objects/regexp/tosource/index.html
new file mode 100644
index 0000000000..b56c347fda
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/tosource/index.html
@@ -0,0 +1,59 @@
+---
+title: RegExp.prototype.toSource()
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/toSource
+tags:
+ - JavaScript
+ - Method
+ - Non-standard
+ - Obsolete
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/toSource
+---
+<div>{{JSRef}} {{obsolete_header}}</div>
+
+<p><strong><code>toSource()</code></strong> メソッドは、オブジェクトのソースコードを表す文字列を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>regexObj</var>.toSource()
+</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>A string representing the source code of the given {{jsxref("RegExp")}} object.</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Native_function" name="Native_function">ネイティブ関数</h3>
+
+<p>組み込み {{jsxref("RegExp")}} オブジェクトでは、 <code>toSource()</code> はソースコードが存在しないことを示す以下の文字列を返します。</p>
+
+<pre class="brush: js notranslate">function RegExp() {
+ [native code]
+}
+</pre>
+
+<p>{{jsxref("RegExp")}} のインスタンスでは、 <code>toSource()</code> はソースコードを表す文字列を返します。</p>
+
+<p>このメソッドは、通常 JavaScript によって内部的に呼び出されるものであり、コード中で明示的に呼び出されることはありません。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>何らかの仕様の一部ではありません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.toSource")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toSource()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/tostring/index.html b/files/ja/web/javascript/reference/global_objects/regexp/tostring/index.html
new file mode 100644
index 0000000000..9e1f96e13f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/tostring/index.html
@@ -0,0 +1,83 @@
+---
+title: RegExp.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/toString
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/toString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toString()</code></strong> メソッドは正規表現を表す文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-tostring.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>regexObj</var>.toString();</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>呼び出し元のオブジェクトを表す文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("RegExp")}} オブジェクトの <code>toString()</code> メソッドは、 jsxref("Object")}} オブジェクトのものを上書きします。つまり {{jsxref("Object.prototype.toString()")}} を継承しません。 {{jsxref("RegExp")}} オブジェクトにおける <code>toString()</code> メソッドは、その正規表現オブジェクトを表す文字列を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toString" name="Using_toString">toString() の使用</h3>
+
+<p>以下の例は {{jsxref("RegExp")}} オブジェクトの文字列の値を表示します。:</p>
+
+<pre class="brush: js notranslate">var myExp = new RegExp('a+b+c');
+console.log(myExp.toString()); // logs '/a+b+c/'
+
+var foo = new RegExp('bar', 'g');
+console.log(foo.toString()); // logs '/bar/g'
+</pre>
+
+<h3 id="Empty_regular_expressions_and_escaping" name="Empty_regular_expressions_and_escaping">空の正規表現とエスケープ</h3>
+
+<p>ECMAScript 5 以降では、空の正規表現は "/(?:)/" 文字列を返し、"\n" などの行末記号はエスケープされます。</p>
+
+<pre class="brush: js notranslate">new RegExp().toString(); // "/(?:)/"
+
+new RegExp('\n').toString() === '/\n/'; // true, prior to ES5
+new RegExp('\n').toString() === '/\\n/'; // true, starting with ES5
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-regexp.prototype.tostring', 'RegExp.prototype.toString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.toString")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/regexp/unicode/index.html b/files/ja/web/javascript/reference/global_objects/regexp/unicode/index.html
new file mode 100644
index 0000000000..ea2848a563
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/regexp/unicode/index.html
@@ -0,0 +1,71 @@
+---
+title: RegExp.prototype.unicode
+slug: Web/JavaScript/Reference/Global_Objects/RegExp/unicode
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - RegExp
+ - Regular Expressions
+translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/unicode
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>unicode</code></strong> プロパティは、 "<code>u</code>" フラグが正規表現で使われているかどうかを示します。<code>unicode</code> は正規表現インスタンスごとの読み取り専用プロパティです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-unicode.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0, 0, 1)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>unicode</code> の値は {{jsxref("Boolean")}} です。"<code>u</code>" が使われていたら、<code>true</code> です。さもなければ、<code>false</code> です。"<code>u</code>" フラグは様々な Unicode 関連の機能を有効にします。"u" フラグで、どんな Unicode コードポイントエスケープでもそのようなものとして解釈されます。</p>
+
+<p>このプロパティを直接変更することはできません。読み取り専用です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_ignoreCase" name="Using_ignoreCase">unicode プロパティの使用</h3>
+
+<pre class="brush: js notranslate">var regex = new RegExp('\u{61}', 'u');
+
+console.log(regex.unicode); // true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-regexp.prototype.unicode', 'RegExp.prototype.unicode')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.RegExp.unicode")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("RegExp.lastIndex")}}</li>
+ <li>{{jsxref("RegExp.prototype.global")}}</li>
+ <li>{{jsxref("RegExp.prototype.ignoreCase")}}</li>
+ <li>{{jsxref("RegExp.prototype.multiline")}}</li>
+ <li>{{jsxref("RegExp.prototype.source")}}</li>
+ <li>{{jsxref("RegExp.prototype.sticky")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/@@iterator/index.html b/files/ja/web/javascript/reference/global_objects/set/@@iterator/index.html
new file mode 100644
index 0000000000..60f8bbc166
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/@@iterator/index.html
@@ -0,0 +1,85 @@
+---
+title: 'Set.prototype[@@iterator]()'
+slug: Web/JavaScript/Reference/Global_Objects/Set/@@iterator
+tags:
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set/@@iterator
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>@@iterator</code></strong> プロパティの初期値は {{jsxref("Set.prototype.values()", "values")}} プロパティの初期値と同じ関数オブジェクトです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/set-prototype-@@iterator.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>mySet</var>[Symbol.iterator]</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>Set</code> <strong>イテレーター</strong>関数です。既定では {{jsxref("Set.prototype.values()", "values()")}} 関数です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_iterator" name="Using_iterator()">[@@iterator]() の使用</h3>
+
+<pre class="brush:js notranslate">const mySet = new Set();
+mySet.add('0');
+mySet.add(1);
+mySet.add({});
+
+const setIter = mySet[Symbol.iterator]();
+
+console.log(setIter.next().value); // "0"
+console.log(setIter.next().value); // 1
+console.log(setIter.next().value); // Object
+</pre>
+
+<h3 id="Using_iterator_with_for..of" name="Using_iterator()_with_for..of">for..of とともに [@@iterator]() を使う</h3>
+
+<pre class="brush:js notranslate">const mySet = new Set();
+mySet.add('0');
+mySet.add(1);
+mySet.add({});
+
+for (const v of mySet) {
+ console.log(v);
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-set.prototype-@@iterator', 'Set.prototype[@@iterator]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set.@@iterator")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set.prototype.entries()")}}</li>
+ <li>{{jsxref("Set.prototype.keys()")}}</li>
+ <li>{{jsxref("Set.prototype.values()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/@@species/index.html b/files/ja/web/javascript/reference/global_objects/set/@@species/index.html
new file mode 100644
index 0000000000..9d634b257d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/@@species/index.html
@@ -0,0 +1,64 @@
+---
+title: 'get Set[@@species]'
+slug: Web/JavaScript/Reference/Global_Objects/Set/@@species
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set/@@species
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Array[Symbol.species]</code></strong> アクセサープロパティは、<code>Set</code> コンストラクターを返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>species</code> アクセサープロパティは、 <code>Set</code> オブジェクトの既定のコンストラクターを返します。サブクラスのコンストラクターはコンストラクターに代入することで、これをオーバーライドすることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Species_in_ordinary_objects" name="Species_in_ordinary_objects">通常のオブジェクトの spicies</h3>
+
+<p><code>species</code> プロパティは、<code>Set</code> オブジェクトの既定のコンストラクター関数である <code>Set</code> コンストラクターを返します。</p>
+
+<pre class="brush: js notranslate">Set[Symbol.species]; // Set() 関数</pre>
+
+<h3 id="Species_in_derived_objects" name="Species_in_derived_objects">派生オブジェクトの spicies</h3>
+
+<p>派生コレクションオブジェクト (たとえば、独自の配列である <code>MySet</code>) では、<code>MySet</code> の species は <code>MySet</code> コンストラクターです。しかし、派生クラスのメソッドで、親である <code>Set</code> オブジェクトを返すためにこれをオーバーライドしたいかもしれません。</p>
+
+<pre class="brush: js notranslate">class MySet extends Set {
+ // MySet species を親である Set コンストラクターにオーバーライド。
+ static get [Symbol.species]() { return Set; }
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-set-@@species', 'get Set [ @@species ]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set.@@species")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set")}}</li>
+ <li>{{jsxref("Symbol.species")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/add/index.html b/files/ja/web/javascript/reference/global_objects/set/add/index.html
new file mode 100644
index 0000000000..61106d4cd7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/add/index.html
@@ -0,0 +1,76 @@
+---
+title: Set.prototype.add()
+slug: Web/JavaScript/Reference/Global_Objects/Set/add
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set/add
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>add()</code></strong> メソッドは、特定の <code>value</code> をもつ新しい要素を <code>Set</code> オブジェクトの最後に追加します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/set-prototype-add.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>mySet</var>.add(<var>value</var>);</pre>
+
+<h3 id="Syntax" name="Syntax">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd><code>Set</code> オブジェクトに追加する要素の値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>Set</code> オブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_add_method" name="Using_the_add_method">add() メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var mySet = new Set();
+
+mySet.add(1);
+mySet.add(5).add('some text'); // メソッドチェーン
+
+console.log(mySet);
+// Set [1, 5, "some text"]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-set.prototype.add', 'Set.prototype.add')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set.add")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set")}}</li>
+ <li>{{jsxref("Set.prototype.delete()")}}</li>
+ <li>{{jsxref("Set.prototype.has()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/clear/index.html b/files/ja/web/javascript/reference/global_objects/set/clear/index.html
new file mode 100644
index 0000000000..5899f06c3d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/clear/index.html
@@ -0,0 +1,72 @@
+---
+title: Set.prototype.clear()
+slug: Web/JavaScript/Reference/Global_Objects/Set/clear
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set/clear
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>clear()</code></strong> メソッドは、<code>Set</code> オブジェクトからすべての要素を取り除きます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/set-prototype-clear.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>mySet</var>.clear();</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}} です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_clear_method" name="Using_the_clear_method">clear() メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var mySet = new Set();
+mySet.add(1);
+mySet.add('foo');
+
+mySet.size; // 2
+mySet.has('foo'); // true
+
+mySet.clear();
+
+mySet.size; // 0
+mySet.has('bar') // false
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-set.prototype.clear', 'Set.prototype.clear')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set.clear")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set")}}</li>
+ <li>{{jsxref("Set.prototype.delete()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/delete/index.html b/files/ja/web/javascript/reference/global_objects/set/delete/index.html
new file mode 100644
index 0000000000..818f0f7b7b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/delete/index.html
@@ -0,0 +1,91 @@
+---
+title: Set.prototype.delete()
+slug: Web/JavaScript/Reference/Global_Objects/Set/delete
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set/delete
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>delete()</code></strong> メソッドは、<code>Set</code> オブジェクトから指定された要素を取り除きます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/set-prototype-delete.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>mySet</var>.delete(<var>value</var>);</pre>
+
+<h3 id="Syntax" name="Syntax">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd><code><var>mySet</var></code> から取り除く要素の値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code><var>mySet</var></code> から <code><var>value</var></code> が正常に削除されたら <code>true</code> を返します。さもなければ、<code>false</code> を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_delete_method" name="Using_the_delete_method">delete() メソッドの使用</h3>
+
+<pre class="brush: js notranslate">const mySet = new Set();
+mySet.add('foo');
+
+mySet.delete('bar'); // 削除するべき要素が見つからなければ false を返す
+mySet.delete('foo'); // 正常に要素を削除出来れば true を返す
+
+mySet.has('foo'); // 存在しない要素を確認すると false を返す
+</pre>
+
+<p>Set から Objectを削除する方法を以下で確認してみましょう。</p>
+
+<pre class="brush: js notranslate">const setObj = new Set(); // 新しいセットを作成
+
+setObj.add({x: 10, y: 20}); // セットにオブジェクトを追加
+
+setObj.add({x: 20, y: 30}); // セットにオブジェクトを追加
+
+// `x &gt; 10` のポイントを削除
+setObj.forEach(function(point){
+ if(point.x &gt; 10){
+ setObj.delete(point)
+ }
+})
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-set.prototype.delete', 'Set.prototype.delete')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set.delete")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set")}}</li>
+ <li>{{jsxref("Set.prototype.clear()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/entries/index.html b/files/ja/web/javascript/reference/global_objects/set/entries/index.html
new file mode 100644
index 0000000000..641a865ad0
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/entries/index.html
@@ -0,0 +1,71 @@
+---
+title: Set.prototype.entries()
+slug: Web/JavaScript/Reference/Global_Objects/Set/entries
+tags:
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set/entries
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>entries()</strong></code> メソッドは、<code>Set</code> オブジェクトの各要素を挿入順に<strong> <code>[value, value]</code> の配列</strong>を含む新しい<a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators">イテレーター</a>オブジェクトを返します。<code>Set</code> オブジェクトは、<code>Map</code> オブジェクトのように <code>key</code> を持つことはありません。しかしながら、<code>Map</code> オブジェクトと似た API をもつために、各 <em>entry</em> は <em>key</em> と <em>value</em> に対して同じ値を持ちます。そのため、配列 <code>[value, value]</code> が返されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/set-prototype-entries.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><em>mySet</em>.entries()</code></pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>Set</code> オブジェクトの各要素を挿入順に<strong> <code>[value, value]</code> の配列</strong>を含む新しい <code>Iterator</code> オブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_entries" name="Using_entries">entries() を使う</h3>
+
+<pre class="brush:js notranslate">var mySet = new Set();
+mySet.add('foobar');
+mySet.add(1);
+mySet.add('baz');
+
+var setIter = mySet.entries();
+
+console.log(setIter.next().value); // ["foobar", "foobar"]
+console.log(setIter.next().value); // [1, 1]
+console.log(setIter.next().value); // ["baz", "baz"]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-set.prototype.entries', 'Set.prototype.entries')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set.entries")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set.prototype.keys()")}}</li>
+ <li>{{jsxref("Set.prototype.values()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/foreach/index.html b/files/ja/web/javascript/reference/global_objects/set/foreach/index.html
new file mode 100644
index 0000000000..440ace97e7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/foreach/index.html
@@ -0,0 +1,110 @@
+---
+title: Set.prototype.forEach()
+slug: Web/JavaScript/Reference/Global_Objects/Set/forEach
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set/forEach
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>forEach()</code></strong> メソッドは、与えられた関数を <code>Set</code> オブジェクトの各値に対して一回ずつ、挿入順で実行します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/set-prototype-foreach.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>mySet</var>.forEach(<var>callback</var>[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>各要素に対して実行する関数で、 3つの引数を受け付けます。</dd>
+ <dd>
+ <dl>
+ <dt><code><var>currentValue</var></code>, <code><var>currentKey</var></code></dt>
+ <dd><code>Set</code>で現在 処理されている要素。 <code>Set</code> にはキー(key)がないため値(value)が両方に渡されます。</dd>
+ <dt><code><var>set</var></code></dt>
+ <dd><code>forEach()</code> が呼ばれている <code>Set</code> オブジェクト</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code></dt>
+ <dd><code><var>callback</var></code> を実行するとき、<code>this</code> として使用する値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}} です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>forEach()</code> メソッドは <code>Set</code> オブジェクトに実際に存在する各値に対して一回、与えられた <code><var>callback</var></code> を実行します。削除された値に対しては呼び出されません。ですが、<code>undefined</code> の値をもつ要素に対しては実行されます。</p>
+
+<p><code><var>callback</var></code> は<strong>3つの引数</strong>で呼び出されます。</p>
+
+<ul>
+ <li><strong>要素値</strong></li>
+ <li><strong>要素キー</strong></li>
+ <li><strong>対象となる <code>Set</code> オブジェクト</strong></li>
+</ul>
+
+<p><code>Set</code> オブジェクトにキーはありません。しかし、最初の 2 つの引数は、両方とも {{jsxref("Set")}} に含まれる<strong>値</strong>です。そのため <code><var>callback</var></code> 関数は {{jsxref("Map.foreach", "Map")}} や {{jsxref("Array.forEach","Array")}} の <code>forEach()</code> メソッドと矛盾がありません。</p>
+
+<p><code><var>thisArg</var></code> 引数が <code>forEach()</code> に与えられた場合、呼び出されたときに <code>this</code> 値として使用するために <code><var>callback</var></code> に渡されます。さもなければ、<code>this</code> 値として使用するために <code>undefined</code> 値が渡されます。<code><var>callback</var></code> によって最終的に観測可能な <code>this</code> 値は<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数から見た <code>this</code> を決定するための通常のルール</a>に応じて決定されます。</p>
+
+<p>各値は一度だけ訪問されますが、 <code>forEach()</code> が終了する前に削除・再追加された場合は例外です。 到達する前に削除された値に対しては <code><var>callback</var></code> は実行されません。 <code>forEach()</code> が終了する前に追加された新規の値は訪問されます。</p>
+
+<p><code>forEach()</code> は <code>Set</code> オブジェクト内の各要素に対して一回 <code><var>callback</var></code> 関数を実行します。<code>forEach()</code> は値を返しません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Logging_the_contents_of_a_Set_object" name="Logging_the_contents_of_a_Set_object">Set オブジェクトの内容を出力する</h3>
+
+<p>次のコードでは、<code>Set</code> オブジェクト内の各要素に対してログを出力します。</p>
+
+<pre class="brush:js notranslate">function logSetElements(value1, value2, set) {
+ console.log('s[' + value1 + '] = ' + value2);
+}
+
+new Set(['foo', 'bar', undefined]).forEach(logSetElements);
+
+// logs:
+// "s[foo] = foo"
+// "s[bar] = bar"
+// "s[undefined] = undefined"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-set.prototype.foreach', 'Set.prototype.forEach')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set.forEach")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Map.prototype.forEach()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/has/index.html b/files/ja/web/javascript/reference/global_objects/set/has/index.html
new file mode 100644
index 0000000000..7de9558ad6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/has/index.html
@@ -0,0 +1,85 @@
+---
+title: Set.prototype.has()
+slug: Web/JavaScript/Reference/Global_Objects/Set/has
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set/has
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>has()</code></strong> メソッドは、特定の値をもつ要素が <code>Set</code> オブジェクト内に存在するかどうかを示す真偽値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/set-prototype-has.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>mySet</var>.has(<var>value</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd><code>Set</code> オブジェクトに存在するかテストする値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>Set</code> オブジェクト内に特定の値をもつ要素が存在していたら <code>true</code> を返します。さもなければ <code>false</code> を返します。</p>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> 技術的に言えば、<code>has()</code> は <a href="/ja/docs/Web/JavaScript/Equality_comparisons_and_sameness#Same-value-zero_equality">Same-value-zero</a> アルゴリズムを使用して、指定された要素が見つかったかどうかを判断します。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_has_method" name="Using_the_has_method">has() メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var mySet = new Set();
+mySet.add('foo');
+
+mySet.has('foo'); // returns true
+mySet.has('bar'); // returns false
+
+var set1 = new Set();
+var obj1 = {'key1': 1};
+set1.add(obj1);
+
+set1.has(obj1); // returns true
+set1.has({'key1': 1}); // オブジェクト参照が異なるため false を返す
+set1.add({'key1': 1}); // set1 には2つのエントリが含まれるようになる
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-set.prototype.has', 'Set.prototype.has')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set.has")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set")}}</li>
+ <li>{{jsxref("Set.prototype.add()")}}</li>
+ <li>{{jsxref("Set.prototype.delete()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/index.html b/files/ja/web/javascript/reference/global_objects/set/index.html
new file mode 100644
index 0000000000..f487e97bfb
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/index.html
@@ -0,0 +1,283 @@
+---
+title: Set
+slug: Web/JavaScript/Reference/Global_Objects/Set
+tags:
+ - Class
+ - ECMAScript 2015
+ - Global Objects
+ - JavaScript
+ - Object
+ - Reference
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Set</code></strong> オブジェクトは、{{Glossary("Primitive", "プリミティブ値")}}やオブジェクト参照を問わず、あらゆる型で一意の値を格納できます。</span></p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Set</code> オブジェクトは値のコレクションです。挿入順に要素を反復することができます。<code>Set</code> に<strong>重複する値は格納出来ません</strong>。<code>Set</code> 内の値はコレクション内で一意となります。</p>
+
+<h3 id="Value_equality" name="Value_equality">値の等価性</h3>
+
+<p><code>Set</code> オブジェクト内の各値は一意でなければならないので、値の等価性が調べられます。初期の ECMAScript では <code>===</code> 演算子とは違うアルゴリズムが用いられていました。特に <code>+0</code> (厳密に言えば <code>-0</code> と等価です) と <code>-0</code> が区別されていた点は重要です。しかしこの振る舞いは ECMAScript 2015 で変更されました。<a href="#Browser_compatibility">ブラウザーの互換性</a>の「-0 と +0 の等価性」を参照してください。</p>
+
+<p>また、 {{jsxref("NaN")}} と {{jsxref("undefined")}} も Set 内に格納できます。<code>NaN</code> は (<code>NaN !== NaN</code> として扱われますが) <code>NaN</code> と同じと扱われます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Set/Set", "Set()")}}</dt>
+ <dd>新しい <code>Set</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Set.@@species", "get Set[@@species]")}}</dt>
+ <dd>派生オブジェクトを生成するために使用されるコンストラクター関数。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Set.prototype.size")}}</dt>
+ <dd><code>Set</code> オブジェクト内の値の数を返します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Set.add", "Set.prototype.add(<var>value</var>)")}}</dt>
+ <dd><code><var>value</var></code> を <code>Set</code> オブジェクトに追加します。<code>Set</code> オブジェクトを返します。</dd>
+ <dt>{{jsxref("Set.prototype.clear()")}}</dt>
+ <dd>すべての要素を <code>Set</code> オブジェクトから取り除きます。</dd>
+ <dt>{{jsxref("Set.delete", "Set.prototype.delete(<var>value</var>)")}}</dt>
+ <dd><code><var>value</var></code> に関連した要素を取り除き、<code>Set.prototype.has(<var>value</var>)</code> が以前に返していたはずの値を返します。<code>Set.prototype.has(<var>value</var>)</code> はその後に <code>false</code> を返します。</dd>
+ <dt>{{jsxref("Set.has", "Set.prototype.has(<var>value</var>)")}}</dt>
+ <dd><code>Set</code> オブジェクト内に引数で与えられた値をもつ要素が存在するかどうかを示す真偽値を返します。</dd>
+</dl>
+
+<h3 id="Iteration_methods" name="Iteration_methods">反復処理メソッド</h3>
+
+<dl>
+ <dt>{{jsxref("Set.prototype.@@iterator()", "Set.prototype[@@iterator]()")}}</dt>
+ <dd>挿入順に <code>Set</code> オブジェクト内の各要素に対する <strong>values</strong> を生み出す新しい <code>Iterator</code> オブジェクトを返します。</dd>
+ <dt>{{jsxref("Set.prototype.keys()")}}</dt>
+ <dd>挿入順に <code>Set</code> オブジェクト内の各要素に対する値を含む新しい <code>Iterator</code> オブジェクトを返します。 (Set においては、これは<strong><code>values()</code></strong> メソッドと同じです。)</dd>
+ <dt>{{jsxref("Set.prototype.values()")}}</dt>
+ <dd>挿入順に <code>Set</code> オブジェクト内の各要素に対する <strong>values</strong> を含む新しい <code>Iterator</code> オブジェクトを返します。 (Set においては、これは <strong><code>keys()</code></strong> メソッドと同じです。</dd>
+ <dt>{{jsxref("Set.prototype.entries()")}}</dt>
+ <dd>
+ <p>挿入順に <code>Set</code> オブジェクト内の各要素に対して <strong><code>[<var>value</var>, <var>value</var>]</code> の配列</strong>を含む新しい <code>Iterator</code> オブジェクトを返します。</p>
+
+ <p>これは {{jsxref("Map")}} オブジェクトに似させています。そのため、 <code>Set</code> においては各項目が <em>key</em> と <em>value</em> が同じ値になります。</p>
+ </dd>
+ <dt>{{jsxref("Set.forEach", "Set.prototype.forEach(<var>callbackFn</var>[, <var>thisArg</var>])")}}</dt>
+ <dd>挿入順に <code>Set</code> オブジェクト内に存在する各値に対して一度 <code>callbackFn</code> を呼びます。<code>thisArg</code> 引数が <code>forEach</code> に渡されたら、各コールバックに対して <code>this</code> 値として使用されます。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_Set_object" name="Using_the_Set_object">Set オブジェクトの使用</h3>
+
+<pre class="brush: js notranslate">let mySet = new Set()
+
+mySet.add(1) // Set [ 1 ]
+mySet.add(5) // Set [ 1, 5 ]
+mySet.add(5) // Set [ 1, 5 ]
+mySet.add('some text') // Set [ 1, 5, 'some text' ]
+let o = {a: 1, b: 2}
+mySet.add(o)
+
+mySet.add({a: 1, b: 2}) // o is referencing a different object, so this is okay
+
+mySet.has(1) // true
+mySet.has(3) // 3 は集合にないため、false
+mySet.has(5) // true
+mySet.has(Math.sqrt(25)) // true
+mySet.has('Some Text'.toLowerCase()) // true
+mySet.has(o) // true
+
+mySet.size // 5
+
+mySet.delete(5) // Set から 5 を削除
+mySet.has(5) // 5 が削除されているため false
+
+mySet.size // 要素を 1 つ削除しているため 4
+
+console.log(mySet)
+// logs Set(4) [ 1, "some text", {…}, {…} ] in Firefox
+// logs Set(4) { 1, "some text", {…}, {…} } in Chrome
+</pre>
+
+<h3 id="Iterating_Sets" name="Iterating_Sets">Set の反復操作</h3>
+
+<pre class="brush: js notranslate">// iterate over items in set
+// logs the items in the order: 1, "some text", {"a": 1, "b": 2}, {"a": 1, "b": 2}
+for (let item of mySet) console.log(item)
+
+// logs the items in the order: 1, "some text", {"a": 1, "b": 2}, {"a": 1, "b": 2}
+for (let item of mySet.keys()) console.log(item)
+
+// logs the items in the order: 1, "some text", {"a": 1, "b": 2}, {"a": 1, "b": 2}
+for (let item of mySet.values()) console.log(item)
+
+// logs the items in the order: 1, "some text", {"a": 1, "b": 2}, {"a": 1, "b": 2}
+// (key and value are the same here)
+for (let [key, value] of mySet.entries()) console.log(key)
+
+// convert Set object to an Array object, with <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/from">Array.from</a>
+let myArr = Array.from(mySet) // [1, "some text", {"a": 1, "b": 2}, {"a": 1, "b": 2}]
+
+// the following will also work if run in an HTML document
+mySet.add(document.body)
+mySet.has(document.querySelector('body')) // true
+
+// converting between Set and Array
+mySet2 = new Set([1, 2, 3, 4])
+mySet2.size // 4
+[...mySet2] // [1, 2, 3, 4]
+
+// intersect can be simulated via
+let intersection = new Set([...set1].filter(x =&gt; set2.has(x)))
+
+// difference can be simulated via
+let difference = new Set([...set1].filter(x =&gt; !set2.has(x)))
+
+// Iterate set entries with forEach()
+mySet.forEach(function(value) {
+ console.log(value)
+})
+
+// 1
+// 2
+// 3
+// 4</pre>
+
+<h3 id="Implementing_basic_set_operations" name="Implementing_basic_set_operations">基本的な集合演算の実装</h3>
+
+<pre class="brush: js notranslate">function isSuperset(set, subset) {
+ for (let elem of subset) {
+ if (!set.has(elem)) {
+ return false
+ }
+ }
+ return true
+}
+
+function union(setA, setB) {
+ let _union = new Set(setA)
+ for (let elem of setB) {
+ _union.add(elem)
+ }
+ return _union
+}
+
+function intersection(setA, setB) {
+ let _intersection = new Set()
+ for (let elem of setB) {
+ if (setA.has(elem)) {
+ _intersection.add(elem)
+ }
+ }
+ return _intersection
+}
+
+function symmetricDifference(setA, setB) {
+ let _difference = new Set(setA)
+ for (let elem of setB) {
+ if (_difference.has(elem)) {
+ _difference.delete(elem)
+ } else {
+ _difference.add(elem)
+ }
+ }
+ return _difference
+}
+
+function difference(setA, setB) {
+ let _difference = new Set(setA)
+ for (let elem of setB) {
+ _difference.delete(elem)
+ }
+ return _difference
+}
+
+// Examples
+let setA = new Set([1, 2, 3, 4])
+let setB = new Set([2, 3])
+let setC = new Set([3, 4, 5, 6])
+
+isSuperset(setA, setB) // =&gt; true
+union(setA, setC) // =&gt; Set [1, 2, 3, 4, 5, 6]
+intersection(setA, setC) // =&gt; Set [3, 4]
+symmetricDifference(setA, setC) // =&gt; Set [1, 2, 5, 6]
+difference(setA, setC) // =&gt; Set [1, 2]
+
+</pre>
+
+<h3 id="Relation_with_Array_objects" name="Relation_with_Array_objects">Array オブジェクトとの関係</h3>
+
+<pre class="brush: js notranslate">let myArray = ['value1', 'value2', 'value3']
+
+// Use the regular Set constructor to transform an Array into a Set
+let mySet = new Set(myArray)
+
+mySet.has('value1') // returns true
+
+// Use the spread operator to transform a set into an Array.
+console.log([...mySet]) // Will show you exactly the same Array as myArray
+</pre>
+
+<h3 id="Remove_duplicate_elements_from_the_array" name="Remove_duplicate_elements_from_the_array">配列から重複した要素を取り除く</h3>
+
+<pre class="brush: js notranslate">// Use to remove duplicate elements from the array
+
+const numbers = [2,3,4,4,2,3,3,4,4,5,5,6,6,7,5,32,3,4,5]
+
+console.log([...new Set(numbers)])
+
+// [2, 3, 4, 5, 6, 7, 32]</pre>
+
+<h3 id="Relation_with_Strings" name="Relation_with_Strings">String との関係</h3>
+
+<pre class="brush: js notranslate">let text = 'India'
+
+let mySet = new Set(text) // Set ['I', 'n', 'd', 'i', 'a']
+mySet.size // 5
+
+//case sensitive &amp; duplicate ommision
+new Set("Firefox") // Set(7) [ "F", "i", "r", "e", "f", "o", "x" ]
+new Set("firefox") // Set(6) [ "f", "i", "r", "e", "o", "x" ]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-set-objects', 'Set')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map")}}</li>
+ <li>{{jsxref("WeakMap")}}</li>
+ <li>{{jsxref("WeakSet")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/set/index.html b/files/ja/web/javascript/reference/global_objects/set/set/index.html
new file mode 100644
index 0000000000..8837271c36
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/set/index.html
@@ -0,0 +1,76 @@
+---
+title: Set() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Set/Set
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set/Set
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Set</code> コンストラクター</strong>は、あらゆる型の一意な<a href="/ja/docs/Glossary/Primitive">プリミティブ値</a>やオブジェクト参照を格納する <code>Set</code> オブジェクトを生成します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/set-prototype-constructor.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Set([<var>iterable</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">パラメーター</h3>
+
+<dl>
+ <dt><code><var>iterable</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">反復可能オブジェクト</a>が渡された場合は、そのすべての要素が新しい <code>Set</code> に加えられます。</p>
+
+ <p>このパラメーターを指定しなかった場合、または値が <code>null</code> だった場合、新しい <code>Set</code> は空になります。</p>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>新しい <code>Set</code> オブジェクト。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_Set_object" name="Using_the_Set_object"><code>Set</code> オブジェクトの使用</h3>
+
+<pre class="brush: js notranslate">let mySet = new Set()
+
+mySet.add(1) // Set [ 1 ]
+mySet.add(5) // Set [ 1, 5 ]
+mySet.add(5) // Set [ 1, 5 ]
+mySet.add('some text') // Set [ 1, 5, 'some text' ]
+let o = {a: 1, b: 2}
+mySet.add(o)</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-set-constructor', 'Set constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set.Set")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/size/index.html b/files/ja/web/javascript/reference/global_objects/set/size/index.html
new file mode 100644
index 0000000000..3a286970fe
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/size/index.html
@@ -0,0 +1,61 @@
+---
+title: Set.prototype.size
+slug: Web/JavaScript/Reference/Global_Objects/Set/size
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Prototype
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set/size
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>size</code></strong> アクセサープロパティは {{jsxref("Set")}} オブジェクト内の要素の数を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/set-prototype-size.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>size</code> の値は、<code>Set</code> オブジェクトがいくつの要素を持つかを表す整数値です。<code>size</code> に対するセットアクセサー関数は <code>undefined</code> です。よって、このプロパティは変更できません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_size" name="Using_size">size の使用</h3>
+
+<pre class="brush:js notranslate">var mySet = new Set();
+mySet.add(1);
+mySet.add(5);
+mySet.add('some text')
+
+mySet.size; // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-set.prototype.size', 'Set.prototype.size')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set.size")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/set/values/index.html b/files/ja/web/javascript/reference/global_objects/set/values/index.html
new file mode 100644
index 0000000000..6fe969853f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/set/values/index.html
@@ -0,0 +1,73 @@
+---
+title: Set.prototype.values()
+slug: Web/JavaScript/Reference/Global_Objects/Set/values
+tags:
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+ - set
+translation_of: Web/JavaScript/Reference/Global_Objects/Set/values
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>values()</code></strong> メソッドは、挿入順で <code>Set</code> オブジェクト内の各要素の値を含んだ、新しいイテレーターオブジェクトを返します。</p>
+
+<div class="blockIndicator note">
+<p><strong>注</strong>: <strong><code>keys()</code></strong> メソッドは ({{jsxref("Map")}} オブジェクトとの類似性のため) このメソッドに対するエイリアスです。まったく同じように動作し、<code>Set</code> の各要素の<strong>値</strong>を返します。</p>
+</div>
+
+<div>{{EmbedInteractiveExample("pages/js/set-prototype-values.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>mySet</var>.values();</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>挿入順で <code>Set</code> オブジェクト内の各要素の値を含んだ、新しいイテレーターオブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_values" name="Using_values">values() の使用</h3>
+
+<pre class="brush:js notranslate">var mySet = new Set();
+mySet.add('foo');
+mySet.add('bar');
+mySet.add('baz');
+
+var setIter = mySet.values();
+
+console.log(setIter.next().value); // "foo"
+console.log(setIter.next().value); // "bar"
+console.log(setIter.next().value); // "baz"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-set.prototype.values', 'Set.prototype.values')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Set.values")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Set.prototype.entries()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.html b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.html
new file mode 100644
index 0000000000..c5c80111ca
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.html
@@ -0,0 +1,55 @@
+---
+title: SharedArrayBuffer.prototype.byteLength
+slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/byteLength
+tags:
+ - JavaScript
+ - Property
+ - Shared Memory
+ - SharedArrayBuffer
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/byteLength
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>byteLength</code></strong> アクセサープロパティは 、{{jsxref("SharedArrayBuffer")}} の長さをバイト単位で表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/sharedarraybuffer-bytelength.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>byteLength</code> プロパティは、セットアクセサー関数が <code>undefined</code> であるアクセサープロパティです。つまり、このプロパティは読み取り専用です。値は共有配列が生成されたときに決定され、変更できません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_byteLength" name="Using_byteLength">byteLength の使用</h3>
+
+<pre class="brush:js notranslate">var sab = new SharedArrayBuffer(1024);
+sab.byteLength; // 1024
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-sharedarraybuffer.prototype.bytelength', 'SharedArrayBuffer.prototype.byteLength')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.SharedArrayBuffer.byteLength")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("SharedArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html
new file mode 100644
index 0000000000..2603ebfbd1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html
@@ -0,0 +1,135 @@
+---
+title: SharedArrayBuffer
+slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
+tags:
+ - Constructor
+ - JavaScript
+ - Shared Memory
+ - SharedArrayBuffer
+ - TypesdArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>SharedArrayBuffer</code></strong> オブジェクトは、ジェネリックで固定長の生バイナリデータバッファーを表すために使用されます。{{jsxref("ArrayBuffer")}} オブジェクトと似ていますが、これらは共有メモリー上にビューを生成するために使用されます。<code>ArrayBuffer</code> と異なり、<code>SharedArrayBuffer</code> は分離できません。</p>
+
+<div class="note">
+<p><code>SharedArrayBuffer</code> はすべての主要なブラウザーで 2018 年 1 月 5 日に、<a href="https://meltdownattack.com/">Spectre</a> への対応として無効化されましたので注意してください。Chrome では、Spectre 型脆弱性から保護するためのサイト分離機能が有効にされたプラットフォームにおいて、<a href="https://bugs.chromium.org/p/chromium/issues/detail?id=821270">v67 に再度有効化されています</a>。</p>
+</div>
+
+<div>{{EmbedInteractiveExample("pages/js/sharedarraybuffer-constructor.html")}}</div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">new SharedArrayBuffer(length)
+</pre>
+
+<h3 id="パラメーター">パラメーター</h3>
+
+<dl>
+ <dt><code>length</code></dt>
+ <dd>array buffer を生成するバイト単位のサイズ。</dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>指定したサイズの新しい <code>SharedArrayBuffer</code>。コンテンツは 0 に初期化されている。</p>
+
+<h2 id="説明">説明</h2>
+
+<h3 id="Allocating_and_sharing_memory" name="Allocating_and_sharing_memory">メモリーの割り当てと共有</h3>
+
+<p>クラスター内のあるエージェントから別のエージェント (エージェントとは、ウェブページのメインプログラムまたはその web worker のひとつ) へ、{{jsxref("SharedArrayBuffer")}} オブジェクトを使用してメモリーを共有するために、<code><a href="/ja/docs/Web/API/Worker/postMessage">postMessage</a></code> と <a href="/ja/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">structured cloning</a> を使用します。</p>
+
+<p>structured clone アルゴリズムは <code>SharedArrayBuffers</code> と、<code>SharedArrayBuffers</code> にマッピングされた <code>TypedArrays</code> を受け入れます。どちらの場合も <code>SharedArrayBuffer</code> オブジェクトは受信者に転送されて、受信側のエージェントで新たなプライベートの SharedArrayBuffer オブジェクトになります ({{jsxref("ArrayBuffer")}} と同じように)。しかし、2 つの <code>SharedArrayBuffer</code> オブジェクトから参照される共有データブロックは同一のデータブロックであり、あるエージェントによるブロックへの副作用は、結果的に他方のエージェントからも見えます。</p>
+
+<pre class="brush: js">var sab = new SharedArrayBuffer(1024);
+worker.postMessage(sab);
+</pre>
+
+<h3 id="Atomic_操作で共有メモリを更新、同期する">Atomic 操作で共有メモリを更新、同期する</h3>
+
+<p>共有メモリーは、worker 内でもメインスレッド内でも同時に生成や更新ができます。システム(CPU や OS、ブラウザー)によっては、変更がすべてのコンテキストに通知されるまでに少々時間がかかります。同期するためには、{{jsxref("Atomics", "atomic", "", 1)}} 操作が必要です。</p>
+
+<h3 id="SharedArrayBuffer_オブジェクトを受け付ける_API">SharedArrayBuffer オブジェクトを受け付ける API</h3>
+
+<ul>
+ <li>{{domxref("WebGLRenderingContext.bufferData()")}}</li>
+ <li>{{domxref("WebGLRenderingContext.bufferSubData()")}}</li>
+ <li>{{domxref("WebGL2RenderingContext.getBufferSubData()")}}</li>
+</ul>
+
+<h3 id="SharedArrayBuffer_の生成には_new_演算子が必要">SharedArrayBuffer の生成には new 演算子が必要</h3>
+
+<p><code>SharedArrayBuffer</code> コンストラクターは、{{jsxref("Operators/new", "new")}} 演算子で呼び出される必要があります。<code>new</code> 演算子なしで関数として <code>SharedArrayBuffer</code> コンストラクターを呼び出すと、{{jsxref("TypeError")}} をスローします。</p>
+
+<pre class="brush: js example-bad">var sab = SharedArrayBuffer(1024);
+// TypeError: calling a builtin SharedArrayBuffer constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good">var sab = new SharedArrayBuffer(1024);</pre>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<dl>
+ <dt><code>SharedArrayBuffer.length</code></dt>
+ <dd><code>SharedArrayBuffer</code> コンストラクターの length プロパティの値は 1。</dd>
+ <dt>{{jsxref("SharedArrayBuffer.prototype")}}</dt>
+ <dd>すべての <code>SharedArrayBuffer</code> オブジェクトにプロパティ追加を許可する。</dd>
+</dl>
+
+<h2 id="SharedArrayBuffer_プロトタイプオブジェクト"><code>SharedArrayBuffer</code> プロトタイプオブジェクト</h2>
+
+<p>すべての <code>SharedArrayBuffer</code> インスタンスは {{jsxref("SharedArrayBuffer.prototype")}} を継承しています。</p>
+
+<h3 id="プロパティ_2">プロパティ</h3>
+
+<p>{{page('ja/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype','プロパティ')}}</p>
+
+<h3 id="メソッド">メソッド</h3>
+
+<p>{{page('ja/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype','メソッド')}}</p>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">状態</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td>ES2017 で初期定義。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES8', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}</td>
+ <td>{{Spec2('ES8')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.SharedArrayBuffer")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li>
+ <li><a href="/ja/docs/Web/API/Web_Workers_API">Web Workers</a></li>
+ <li><a href="https://github.com/lars-t-hansen/parlib-simple">parlib-simple </a>– 同期と作業分配抽象化を提供するシンプルなライブラリー</li>
+ <li><a href="https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md">共有メモリー – 簡潔なチュートリアル</a></li>
+ <li>
+ <p><a href="https://dev.mozilla.jp/2016/05/a-taste-of-javascripts-new-parallel-primitives/">JavaScript の並列処理機能を味見してみる</a></p>
+ </li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/sharedarraybuffer/index.html b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/sharedarraybuffer/index.html
new file mode 100644
index 0000000000..05237e368a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/sharedarraybuffer/index.html
@@ -0,0 +1,77 @@
+---
+title: SharedArrayBuffer() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - SharedArrayBuffer
+translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer
+---
+<div>{{JSRef}}</div>
+
+<div class="note">
+<p><a href="https://meltdownattack.com/">Spectre</a> の対策として、 <code>SharedArrayBuffer</code> は2018年1月5日にすべての主要ブラウザーで既定で無効化されたことに注意してください。 Chrome は、 Spectre スタイルの脆弱性から保護するためにサイトアイソレーション機能が有効になっているプラットフォームでは、 <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=821270">v67 で再有効化しました</a>。</p>
+</div>
+
+<p><strong><code>SharedArrayBuffer()</code> コンストラクター</strong>は {{jsxref("SharedArrayBuffer")}} オブジェクトを生成し、これは {{jsxref("ArrayBuffer")}} オブジェクトと似た、汎用的な、固定長の生のバイナリデータバッファーを表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/sharedarraybuffer-constructor.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new SharedArrayBuffer([<var>length</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd>生成する配列バッファーの長さをバイト数で指定します。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された長さの新しい <code>SharedArrayBuffer</code> オブジェクトです。中身は 0 で初期化されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Always_use_the_new_operator_to_create_a_SharedArrayBuffer" name="Always_use_the_new_operator_to_create_a_SharedArrayBuffer">SharedArrayBuffer を生成するには常に new 演算子を使用する</h3>
+
+<p><code>SharedArrayBuffer</code> コンストラクターは {{jsxref("Operators/new", "new")}} 演算子で構築する必要があります。 <code>SharedArrayBuffer</code> コンストラクターを <code>new</code> なしで呼び出すと、 {{jsxref("TypeError")}} が発生します。</p>
+
+<pre class="brush: js example-bad notranslate">var sab = SharedArrayBuffer(1024);
+// TypeError: calling a builtin SharedArrayBuffer constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good notranslate">var sab = new SharedArrayBuffer(1024);</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-sharedarraybuffer-constructor', 'SharedArrayBuffer constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.SharedArrayBuffer.SharedArrayBuffer")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.html b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.html
new file mode 100644
index 0000000000..e283d7605a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.html
@@ -0,0 +1,80 @@
+---
+title: SharedArrayBuffer.prototype.slice()
+slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/slice
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Shared Memory
+ - SharedArrayBuffer
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/slice
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>SharedArrayBuffer.prototype.slice()</code></strong> メソッドは、新しい {{jsxref("SharedArrayBuffer")}} を生成し、その内容にこの <code>SharedArrayBuffer</code> のバイトを先頭位置 (含む) から末尾位置 (含まない) までをコピーして返します。先頭または末尾が負の値であった場合は、配列の先頭からではなく、末尾からのインデックスになります。このメソッドは {{jsxref("Array.prototype.slice()")}} と同じアルゴリズムです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/sharedarraybuffer-slice.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>sab</var>.slice()
+<var>sab</var>.slice(<var>begin</var>)
+<var>sab</var>.slice(<var>begin</var>, <var>end</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>begin</var></code> {{optional_inline}}</dt>
+ <dd>取り出す先頭位置を表す 0 から始まるインデックスです。</dd>
+ <dd>負のインデックスを使用して、配列の末尾からのオフセットを示すことが可能です。 <code>slice(-2)</code> は並びの最後の2つの要素を取り出します。</dd>
+ <dd>If <code><var>begin</var></code> が undefined であった場合は、 <code>slice</code> はインデックス <code>0</code> から取り出し始めます。</dd>
+ <dt><code><var>end</var></code> {{optional_inline}}</dt>
+ <dd>0 から始まるインデックスで、取り出す範囲の末尾の<em>前</em>を示します。 <code>slice</code> はここまでを取り出しますが、 <code><var>end</var></code> は含めません。</dd>
+ <dd>例えば、 <code>slice(1,4)</code> は2番目から4番目までの要素を取り出します (添字が 1, 2, 3 の要素)。</dd>
+ <dd>負のインデックスを使用して、配列の末尾からのオフセットを示すことが可能です。 <code>slice(2,-1)</code> は3番目から、並びの最後から2番目までの要素を取り出します。</dd>
+ <dd><code><var>end</var></code> が省略されると、 <code>slice</code> は並びの最後までの範囲を取り出します。 (<code>sab.byteLength</code>).</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>取り出した要素をが入った新しい {{jsxref("SharedArrayBuffer")}} です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_slice" name="Using_slice">slice() の使用</h3>
+
+<pre class="brush:js notranslate">var sab = new SharedArrayBuffer(1024);
+sab.slice(); // SharedArrayBuffer { byteLength: 1024 }
+sab.slice(2); // SharedArrayBuffer { byteLength: 1022 }
+sab.slice(-2); // SharedArrayBuffer { byteLength: 2 }
+sab.slice(0, 1); // SharedArrayBuffer { byteLength: 1 }
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-sharedarraybuffer.prototype.slice', 'SharedArrayBuffer.prototype.slice')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.SharedArrayBuffer.slice")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("SharedArrayBuffer")}}</li>
+ <li>{{jsxref("Array.prototype.slice()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/stopiteration/index.html b/files/ja/web/javascript/reference/global_objects/stopiteration/index.html
new file mode 100644
index 0000000000..79972224a8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/stopiteration/index.html
@@ -0,0 +1,66 @@
+---
+title: StopIteration
+slug: Web/JavaScript/Reference/Global_Objects/StopIteration
+tags:
+ - JavaScript
+ - Legacy Iterator
+ - Non-standard
+ - Reference
+ - StopItaration
+translation_of: Archive/Web/StopIteration
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<div class="warning"><strong>非標準。</strong> <code><strong>StopIteration</strong></code> オブジェクトはSpiderMonkey特有の機能です。将来向きの用途に対して、<a href="/docs/Web/JavaScript/Reference/Statements/for...of" title="/docs/Web/JavaScript/Reference/Statements/for...of">for..of</a> ループと<a href="/docs/Web/JavaScript/Guide/The_Iterator_protocol">iterator protocol</a>を使用することを検討してください。</div>
+
+<h2 id="概要">概要</h2>
+
+<p><code><strong>StopIteration</strong></code> オブジェクトはレガシーイテレータプロトコルにおける反復の終了を通知するために使用します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">StopIteration</pre>
+
+<h2 id="説明">説明</h2>
+
+<p>使用法の概要は、<a href="/docs/JavaScript/Guide/Iterators_and_Generators" title="/docs/JavaScript/Guide/Iterators_and_Generators">Iterators and Generators</a> ページ上で利用可能です</p>
+
+<h2 id="例">例</h2>
+
+<p><code>StopIteration</code>は<a href="/docs/Web/JavaScript/Reference/Global_Objects/Iterator"><code>Iterator</code></a>によってスローされます。</p>
+
+<pre class="brush: js">var a = {
+ x: 10,
+ y: 20,
+};
+var iter = Iterator(a);
+console.log(iter.next()); // ["x", 10]
+console.log(iter.next()); // ["y", 20]
+console.log(iter.next()); // throws StopIteration
+</pre>
+
+<p><code>StopIteration</code>をスローする。</p>
+
+<pre class="brush: js">function f() {
+ yield 1;
+ yield 2;
+ throw StopIteration;
+ yield 3; // this is not executed.
+}
+
+for (var n in f()) {
+ console.log(n); // 1
+ // 2
+}
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<p>非標準。すべての現在の標準仕様でサポートされていません。</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/docs/JavaScript/Guide/Iterators_and_Generators" title="/en-US/docs/JavaScript/Guide/Iterators_and_Generators">Iterators and Generators</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Global_Objects/Iterator">Iterator</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/@@iterator/index.html b/files/ja/web/javascript/reference/global_objects/string/@@iterator/index.html
new file mode 100644
index 0000000000..23cab0baec
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/@@iterator/index.html
@@ -0,0 +1,82 @@
+---
+title: 'String.prototype[@@iterator]()'
+slug: Web/JavaScript/Reference/Global_Objects/String/@@iterator
+tags:
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/@@iterator
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>[@@iterator]()</code></strong> メソッドは、文字列値のコードポイントを走査し、それぞれのコードポイントを文字列値として返すイテレーターオブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-iterator.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>[Symbol.iterator]</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しいイテレーターオブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_iterator" name="Using_iterator">[@@iterator]() の使用</h3>
+
+<pre class="brush:js notranslate">var str = 'A\uD835\uDC68';
+
+var strIter = str[Symbol.iterator]();
+
+console.log(strIter.next().value); // "A"
+console.log(strIter.next().value); // "\uD835\uDC68"
+</pre>
+
+<h3 id="Using_iterator_with_for..of" name="Using_iterator_with_for..of">[@@iterator]() と for..of の使用</h3>
+
+<pre class="brush:js notranslate">var str = 'A\uD835\uDC68B\uD835\uDC69C\uD835\uDC6A';
+
+for (var v of str) {
+ console.log(v);
+}
+// "A"
+// "\uD835\uDC68"
+// "B"
+// "\uD835\uDC69"
+// "C"
+// "\uD835\uDC6A"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype-@@iterator', 'String.prototype[@@iterator]()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.@@iterator")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復プロトコル</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/anchor/index.html b/files/ja/web/javascript/reference/global_objects/string/anchor/index.html
new file mode 100644
index 0000000000..b64cfb7f0a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/anchor/index.html
@@ -0,0 +1,80 @@
+---
+title: String.prototype.anchor()
+slug: Web/JavaScript/Reference/Global_Objects/String/anchor
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/anchor
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>anchor()</code></strong> メソッドは、 <code>&lt;a name="..."&gt;</code> 開始タグで始まり、いくらかのテキストが続き、 <code>&lt;/a&gt;</code> 終了タグで終わる文字列を生成します。</p>
+
+<div class="blockIndicator warning">
+<p>このメソッドを使用しないでください。代わりに <a href="/ja/docs/Web/API/Document_Object_Model">DOM API</a> を使用してください。また、 HTML 仕様書では {{HTMLElement("a")}} 要素に <code>name</code> 属性を設定することを許容しなくなりましたので、このメソッドが生成するものは妥当なマークアップにもなりません。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.anchor(<var>name</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>name</var></code></dt>
+ <dd><code>name</code> 値を表す文字列で、 <code>&lt;a name="..."&gt;</code> 開始タグに入れられます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>&lt;a name="<var>name</var>"&gt;</code> 開始タグで始まり、 <var>str</var> のテキストが続き、 <code>&lt;/a&gt;</code> 終了タグで終わる文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドを使用しないでください。代わりに <a href="/ja/docs/Web/API/Document_Object_Model">DOM API</a> を使用してください。また、 HTML 仕様書では {{HTMLElement("a")}} 要素に <code>name</code> 属性を設定することを許容しなくなりましたので、このメソッドが生成するものは妥当なマークアップにもなりません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_anchor" name="Using_anchor">anchor() の使用</h3>
+
+<pre class="brush: js notranslate">var myString = 'Table of Contents';
+
+document.body.innerHTML = myString.anchor('contents_anchor');
+</pre>
+
+<p>以下の HTML が生成されます。</p>
+
+<pre class="brush: html notranslate">&lt;a name="contents_anchor"&gt;Table of Contents&lt;/a&gt;
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.anchor', 'String.prototype.anchor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.anchor")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.link()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/big/index.html b/files/ja/web/javascript/reference/global_objects/string/big/index.html
new file mode 100644
index 0000000000..2d7d0c816d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/big/index.html
@@ -0,0 +1,78 @@
+---
+title: String.prototype.big()
+slug: Web/JavaScript/Reference/Global_Objects/String/big
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/big
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>big()</code></strong> メソッドは、文字列が大きなフォントで表示されるように HTML の {{HTMLElement("big")}} 要素を生成します。</p>
+
+<div class="note">
+<p><strong>使用上の注意:</strong> &lt;big&gt; 要素は <a href="/ja/docs/Web/Guide/HTML/HTML5">HTML5</a> で廃止されており、今後使用するべきではありません。代わりにウェブ開発者は <a href="/ja/docs/Web/CSS">CSS</a> プロパティを使用してください。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.big()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("big")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>big()</code> メソッドは、文字列を <code>&lt;big&gt;</code> 要素の中に、 "<code>&lt;big&gt;str&lt;/big&gt;</code>" のように埋め込みます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="big_の使用">big() の使用</h3>
+
+<p>以下の例では文字列のメソッドを使用して、文字列の大きさを変更しています。</p>
+
+<pre class="brush: js notranslate">var worldString = 'Hello, world';
+
+console.log(worldString.small()); // &lt;small&gt;Hello, world&lt;/small&gt;
+console.log(worldString.big()); // &lt;big&gt;Hello, world&lt;/big&gt;
+console.log(worldString.fontsize(7)); // &lt;fontsize=7&gt;Hello, world&lt;/fontsize&gt;
+</pre>
+
+<p>{{domxref("ElementCSSInlineStyle/style", "element.style")}} オブジェクトを使用すると、要素の <code>style</code> 属性を使用して、次のようにもっと汎用的に操作することができます。</p>
+
+<pre class="brush: js notranslate">document.getElementById('yourElemId').style.fontSize = '2em';
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.big', 'String.prototype.big')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.big")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.fontsize()")}}</li>
+ <li>{{jsxref("String.prototype.small()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/blink/index.html b/files/ja/web/javascript/reference/global_objects/string/blink/index.html
new file mode 100644
index 0000000000..129a8c764f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/blink/index.html
@@ -0,0 +1,74 @@
+---
+title: String.prototype.blink()
+slug: Web/JavaScript/Reference/Global_Objects/String/blink
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/blink
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>blink()</code></strong> メソッドは、文字列を点滅させる HTML の {{HTMLElement("blink")}} 要素を生成します。</p>
+
+<div class="warning">
+<p><strong>警告:</strong> 文字列の点滅はアクセシビリティの観点から好ましくありません。また、<code>&lt;blink&gt;</code> 要素は非標準であり非推奨です!</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.blink()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("blink")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>blink()</code> メソッドは、文字列を <code>&lt;blink&gt;</code> 要素の中に、 "<code>&lt;blink&gt;str&lt;/blink&gt;</code>" のように埋め込みます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_blink" name="Using_blink">blink() の使用</h3>
+
+<p>以下の例では文字列のメソッドを使用して、文字列の整形方法を変化させています。</p>
+
+<pre class="brush: js notranslate">var worldString = 'Hello, world';
+
+console.log(worldString.blink()); // &lt;blink&gt;Hello, world&lt;/blink&gt;
+console.log(worldString.bold()); // &lt;b&gt;Hello, world&lt;/b&gt;
+console.log(worldString.italics()); // &lt;i&gt;Hello, world&lt;/i&gt;
+console.log(worldString.strike()); // &lt;strike&gt;Hello, world&lt;/strike&gt;</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.blink', 'String.prototype.blink')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.blink")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.bold()")}}</li>
+ <li>{{jsxref("String.prototype.italics()")}}</li>
+ <li>{{jsxref("String.prototype.strike()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/bold/index.html b/files/ja/web/javascript/reference/global_objects/string/bold/index.html
new file mode 100644
index 0000000000..c916d60ea0
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/bold/index.html
@@ -0,0 +1,70 @@
+---
+title: String.prototype.bold()
+slug: Web/JavaScript/Reference/Global_Objects/String/bold
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/bold
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>bold()</code></strong> メソッドは、文字列を太字で表示させる HTML の {{HTMLElement("b")}} 要素を生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.bold()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("b")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>bold()</code> メソッドは、文字列を <code>&lt;b&gt;</code> 要素の中に、 "<code>&lt;b&gt;str&lt;/b&gt;</code>" のように埋め込みます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_bold" name="Using_bold">bold() の使用</h3>
+
+<p>下記の例は、 <code>fixed</code> メソッドを使用して文字列の表示方法を変更します。</p>
+
+<pre class="brush: js notranslate">var worldString = 'Hello, world';
+
+console.log(worldString.blink()); // &lt;blink&gt;Hello, world&lt;/blink&gt;
+console.log(worldString.bold()); // &lt;b&gt;Hello, world&lt;/b&gt;
+console.log(worldString.italics()); // &lt;i&gt;Hello, world&lt;/i&gt;
+console.log(worldString.strike()); // &lt;strike&gt;Hello, world&lt;/strike&gt;</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.bold', 'String.prototype.bold')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.bold")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.blink()")}}</li>
+ <li>{{jsxref("String.prototype.italics()")}}</li>
+ <li>{{jsxref("String.prototype.strike()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/charat/index.html b/files/ja/web/javascript/reference/global_objects/string/charat/index.html
new file mode 100644
index 0000000000..30d708cad3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/charat/index.html
@@ -0,0 +1,244 @@
+---
+title: String.prototype.charAt()
+slug: Web/JavaScript/Reference/Global_Objects/String/charAt
+tags:
+ - JavaScript
+ - Method
+ - Reference
+ - String
+ - String Methods
+translation_of: Web/JavaScript/Reference/Global_Objects/String/charAt
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary">{{jsxref("String")}} オブジェクトの <strong><code>charAt()</code></strong> メソッドは、文字列の中の指定された位置にある単一の UTF-16 コードユニットからなる新しい文字列を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-charat.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">let <var>character</var> = <var>str</var>.charAt(<var>index</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>index</var></code></dt>
+ <dd><code>0</code> から <code><var>str</var>.length - 1</code> までの間の整数です。 <code><var>index</var></code> が整数に変換できない場合や <code><var>index</var></code> が指定されなかった場合、既定値は <code>0</code> となり、 <code><var>str</var></code> の最初の文字が返されます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた <code><var>index</var></code> の位置にあるコードポイント値を表す数値です。 <code><var>index</var></code> の位置に要素がない場合は {{jsxref("Global_Objects/NaN", "NaN")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>文字列の中の文字は、左から右に向けてインデックス付けされています。最初の文字の添字は <code>0</code> であり、最後の文字の添字は— <code><var>stringName</var></code> という名前の文字列であれば— <code><var>stringName</var>.length - 1</code> です。提供した <code><var>index</var></code> がこの範囲を外れていた場合、 JavaScript は空文字列を返します。</p>
+
+<p><code><var>index</var></code> が <code>charAt()</code> に提供されなかった場合の既定値は <code>0</code> です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Displaying_characters_at_different_locations_in_a_string" name="Displaying_characters_at_different_locations_in_a_string">文字列の中の様々な位置の文字の表示</h3>
+
+<p>次の例は、 "<code>Brave new world</code>" という文字列の中の様々な位置の文字を表示します。</p>
+
+<pre class="brush: js notranslate">var anyString = 'Brave new world';
+console.log("The character at index 0 is '" + anyString.charAt() + "'");
+// index が提供されなかった場合は、既定値として 0 が使われる
+
+console.log("The character at index 0 is '" + anyString.charAt(0) + "'");
+console.log("The character at index 1 is '" + anyString.charAt(1) + "'");
+console.log("The character at index 2 is '" + anyString.charAt(2) + "'");
+console.log("The character at index 3 is '" + anyString.charAt(3) + "'");
+console.log("The character at index 4 is '" + anyString.charAt(4) + "'");
+console.log("The character at index 999 is '" + anyString.charAt(999) + "'");
+</pre>
+
+<p>これらの行は以下のように表示されます。</p>
+
+<pre class="brush: js notranslate">The character at index 0 is 'B'
+
+The character at index 0 is 'B'
+The character at index 1 is 'r'
+The character at index 2 is 'a'
+The character at index 3 is 'v'
+The character at index 4 is 'e'
+The character at index 999 is ''
+</pre>
+
+<h3 id="Getting_whole_characters" name="Getting_whole_characters">文字全体の取得</h3>
+
+<p>以下の例では、文字列に基本多言語面にない文字が含まれていた場合でも、ループで常に文字全体を取得することを保証する方法を紹介します。</p>
+
+<pre class="brush: js notranslate">var str = 'A \uD87E\uDC04 Z'; // We could also use a non-BMP character directly
+for (var i = 0, chr; i &lt; str.length; i++) {
+ if ((chr = getWholeChar(str, i)) === false) {
+ continue;
+ }
+ // Adapt this line at the top of each loop, passing in the whole string and
+ // the current iteration and returning a variable to represent the
+ // individual character
+
+ console.log(chr);
+}
+
+function getWholeChar(str, i) {
+ var code = str.charCodeAt(i);
+
+ if (Number.isNaN(code)) {
+ return ''; // Position not found
+ }
+ if (code &lt; 0xD800 || code &gt; 0xDFFF) {
+ return str.charAt(i);
+ }
+
+ // High surrogate (could change last hex to 0xDB7F to treat high private
+ // surrogates as single characters)
+ if (0xD800 &lt;= code &amp;&amp; code &lt;= 0xDBFF) {
+ if (str.length &lt;= (i + 1)) {
+ throw 'High surrogate without following low surrogate';
+ }
+ var next = str.charCodeAt(i + 1);
+ if (0xDC00 &gt; next || next &gt; 0xDFFF) {
+ throw 'High surrogate without following low surrogate';
+ }
+ return str.charAt(i) + str.charAt(i + 1);
+ }
+ // Low surrogate (0xDC00 &lt;= code &amp;&amp; code &lt;= 0xDFFF)
+ if (i === 0) {
+ throw 'Low surrogate without preceding high surrogate';
+ }
+ var prev = str.charCodeAt(i - 1);
+
+ // (could change last hex to 0xDB7F to treat high private
+ // surrogates as single characters)
+ if (0xD800 &gt; prev || prev &gt; 0xDBFF) {
+ throw 'Low surrogate without preceding high surrogate';
+ }
+ // We can pass over low surrogates now as the second component
+ // in a pair which we have already processed
+ return false;
+}
+</pre>
+
+<p>ECMAScript 2016 環境では分割代入が利用できるため、変数を自動的に増加させることができるもっと簡潔で柔軟な代替案を利用することができます (その文字がサロゲートペアであることを保証している場合)。</p>
+
+<pre class="brush: js notranslate">let str = 'A\uD87E\uDC04Z' // We could also use a non-BMP character directly
+for (let i = 0, chr; i &lt; str.length; i++) {
+ [chr, i] = getWholeCharAndI(str, i)
+
+  // Adapt this line at the top of each loop, passing in the whole string and
+ // the current iteration and returning an array with the individual character
+ // and 'i' value (only changed if a surrogate pair)
+
+ console.log(chr)
+}
+
+function getWholeCharAndI(str, i) {
+ let code = str.charCodeAt(i)
+
+ if (Number.isNaN(code)) {
+ return '' // Position not found
+ }
+ if (code &lt; 0xD800 || code &gt; 0xDFFF) {
+ return [str.charAt(i), i] // Normal character, keeping 'i' the same
+ }
+
+ // High surrogate (could change last hex to 0xDB7F to treat high private
+ // surrogates as single characters)
+ if (0xD800 &lt;= code &amp;&amp; code &lt;= 0xDBFF) {
+ if (str.length &lt;= (i + 1)) {
+ throw 'High surrogate without following low surrogate'
+ }
+ let next = str.charCodeAt(i + 1)
+ if (0xDC00 &gt; next || next &gt; 0xDFFF) {
+ throw 'High surrogate without following low surrogate'
+ }
+ return [str.charAt(i) + str.charAt(i + 1), i + 1]
+ }
+
+  // Low surrogate (0xDC00 &lt;= code &amp;&amp; code &lt;= 0xDFFF)
+ if (i === 0) {
+ throw 'Low surrogate without preceding high surrogate'
+ }
+
+  let prev = str.charCodeAt(i - 1)
+
+ // (could change last hex to 0xDB7F to treat high private surrogates
+ // as single characters)
+ if (0xD800 &gt; prev || prev &gt; 0xDBFF) {
+ throw 'Low surrogate without preceding high surrogate'
+ }
+
+  // Return the next character instead (and increment)
+ return [str.charAt(i + 1), i + 1]
+}
+</pre>
+
+<h3 id="Fixing_charAt_to_support_non-Basic-Multilingual-Plane_BMP_characters" name="Fixing_charAt_to_support_non-Basic-Multilingual-Plane_BMP_characters">charAt() を修正して、基本多言語面 (BMP) 以外の文字に対応させる</h3>
+
+<p>前述の例は、 BMP 以外の文字に対応しなければならないプログラムの方が有用かもしれませんが (呼び出し元が BMP 以外の文字の出現場所を知る必要がないので)、インデックスで文字を選択する際に、文字列内のサロゲートペアをそれらが表す単一の文字として扱いたい場合には、以下のようにして使用できます。</p>
+
+<pre class="brush: js notranslate">function fixedCharAt(str, idx) {
+ let ret = ''
+ str += ''
+ let end = str.length
+
+ let surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g
+ while ((surrogatePairs.exec(str)) != null) {
+ let lastIdx = surrogatePairs.lastIndex
+ if (lastIdx - 2 &lt; idx) {
+ idx++
+ } else {
+ break
+ }
+ }
+
+ if (idx &gt;= end || idx &lt; 0) {
+ return ''
+ }
+
+ ret += str.charAt(idx)
+
+ if (/[\uD800-\uDBFF]/.test(ret) &amp;&amp; /[\uDC00-\uDFFF]/.test(str.charAt(idx + 1))) {
+ // Go one further, since one of the "characters" is part of a surrogate pair
+ ret += str.charAt(idx + 1)
+ }
+ return ret
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.charat', 'String.prototype.charAt')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.charAt")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.indexOf()")}}</li>
+ <li>{{jsxref("String.prototype.lastIndexOf()")}}</li>
+ <li>{{jsxref("String.prototype.charCodeAt()")}}</li>
+ <li>{{jsxref("String.prototype.codePointAt()")}}</li>
+ <li>{{jsxref("String.prototype.split()")}}</li>
+ <li>{{jsxref("String.fromCodePoint()")}}</li>
+ <li><a href="https://mathiasbynens.be/notes/javascript-unicode">JavaScript has a Unicode problem – Mathias Bynens</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/charcodeat/index.html b/files/ja/web/javascript/reference/global_objects/string/charcodeat/index.html
new file mode 100644
index 0000000000..18dcb608de
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/charcodeat/index.html
@@ -0,0 +1,164 @@
+---
+title: String.prototype.charCodeAt()
+slug: Web/JavaScript/Reference/Global_Objects/String/charCodeAt
+tags:
+ - JavaScript
+ - Method
+ - Reference
+ - String
+ - Unicode
+translation_of: Web/JavaScript/Reference/Global_Objects/String/charCodeAt
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>charCodeAt()</code></strong> メソッドは、指定された位置にある UTF-16 コードユニットを表す <code>0</code> から <code>65535</code> までの整数を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-charcodeat.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<p>単一の UTF-16 コードユニットで表現可能なコードポイントであれば、 UTF-16 コードユニットは Unicode コードポイントと一致します。 Unicode コードポイントが単一の UTF-16 コードユニットで表現できない場合 (値が <code>0xFFFF</code> を超える場合)、返されるコードユニットはそのコードポイントの<em>サロゲートペアの最初の部分</em>になります。コードポイント値全体を取得したい場合は、 {{jsxref("Global_Objects/String/codePointAt", "codePointAt()")}} を使用してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.charCodeAt(<var>index</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>index</var></code></dt>
+ <dd>整数で、 <code>0</code> 以上、文字列の <code>length</code> 未満の値です。 <code><var>index</var></code> が数値でない場合は、既定で <code>0</code> になります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた <code><var>index</var></code> の位置にあるコードポイント値を表す数値です。 <code><var>index</var></code> の位置に要素がない場合は {{jsxref("Global_Objects/NaN", "NaN")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>Unicode コードポイントの範囲は、 <code>0</code> から <code>1114111</code> (<code>0x10FFFF</code>) です。最初の 128 の Unicode コードポイントは、 ASCII 文字エンコーディングに直接対応しています。 (Unicode についての詳細は、<a href="/ja/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Unicode">Java Script ガイド</a>を参照してください。)</p>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> <code>charCodeAt()</code> は常に <code>65536</code> より小さい値を返すことに注意してください。これは、より高いコードポイントは、実際の文字を含むように使用されている (下の値) の "代理" 擬似文字のペアで表されているためです。</p>
+
+<p>これにより、 <code>65536</code> 以上の値の個々の文字について完全な文字を検証したり再現したりするためには、 <code>charCodeAt(<var>i</var>)</code> だけではなく、 <code>charCodeAt(<var>i</var>+1)</code> (2 文字の文字列を検証/再現する場合) か <code>codePointAt(<var>i</var>)</code> を代わりに使用する必要があります。下記の例 2 と 3 を見てください。</p>
+</div>
+
+<p>与えられたインデックスが 0 と文字列の長さの間にない場合、<code>charCodeAt()</code> は {{jsxref("Global_Objects/NaN", "NaN")}} を返します。</p>
+
+<p>後方互換: (JavaScript 1.2 などの) 過去のバージョンでは、 <code>charCodeAt()</code> メソッドは、与えられた位置の文字の ISO-Latin-1 コードセットの値を示す数を返します。 ISO-Latin-1 コードセットの範囲は 0 から 255 です。最初の 0 から 127 までは ASCII 文字セットに直接対応しています。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_charCodeAt" name="Using_charCodeAt">charCodeAt() の使用</h3>
+
+<p>以下の例では、 Unicode 文字の A である <code>65</code> を返します。</p>
+
+<pre class="brush: js notranslate">'ABC'.charCodeAt(0) // returns 65
+</pre>
+
+<h3 id="Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown" name="Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown">基本多言語面以外の文字が文字列の前方に存在するかどうか不明な場合に扱えるように charCodeAt() を修正</h3>
+
+<p>このバージョンは、指定された位置の前に BMP 以外の文字が存在するかどうかが不明な場合に、 for ループなどで使用されることがあります。</p>
+
+<pre class="brush: js notranslate">function fixedCharCodeAt(str, idx) {
+ // ex. fixedCharCodeAt('\uD800\uDC00', 0); // 65536
+ // ex. fixedCharCodeAt('\uD800\uDC00', 1); // false
+ idx = idx || 0;
+ var code = str.charCodeAt(idx);
+ var hi, low;
+
+ // High surrogate (could change last hex to 0xDB7F
+ // to treat high private surrogates
+ // as single characters)
+ if (0xD800 &lt;= code &amp;&amp; code &lt;= 0xDBFF) {
+ hi = code;
+ low = str.charCodeAt(idx + 1);
+ if (isNaN(low)) {
+ throw 'High surrogate not followed by ' +
+ 'low surrogate in fixedCharCodeAt()';
+ }
+ return (
+ (hi - 0xD800) * 0x400) +
+ (low - 0xDC00) + 0x10000;
+ }
+ if (0xDC00 &lt;= code &amp;&amp; code &lt;= 0xDFFF) { // Low surrogate
+ // We return false to allow loops to skip
+ // this iteration since should have already handled
+ // high surrogate above in the previous iteration
+ return false;
+ // hi = str.charCodeAt(idx - 1);
+ // low = code;
+ // return ((hi - 0xD800) * 0x400) +
+ // (low - 0xDC00) + 0x10000;
+ }
+ return code;
+}
+</pre>
+
+<h3 id="文字列の前方に基本多言語面以外の文字が存在することが分かっている場合に扱えるように_charCodeAt_を修正">文字列の前方に基本多言語面以外の文字が存在することが分かっている場合に扱えるように charCodeAt() を修正</h3>
+
+<pre class="brush: js notranslate">function knownCharCodeAt(str, idx) {
+ str += '';
+ var code,
+ end = str.length;
+
+ var surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
+ while ((surrogatePairs.exec(str)) != null) {
+ var li = surrogatePairs.lastIndex;
+ if (li - 2 &lt; idx) {
+ idx++;
+ }
+ else {
+ break;
+ }
+ }
+
+ if (idx &gt;= end || idx &lt; 0) {
+ return NaN;
+ }
+
+ code = str.charCodeAt(idx);
+
+ var hi, low;
+ if (0xD800 &lt;= code &amp;&amp; code &lt;= 0xDBFF) {
+ hi = code;
+ low = str.charCodeAt(idx + 1);
+ // Go one further, since one of the "characters"
+ // is part of a surrogate pair
+ return ((hi - 0xD800) * 0x400) +
+ (low - 0xDC00) + 0x10000;
+ }
+ return code;
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.charcodeat', 'String.prototype.charCodeAt')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.charCodeAt")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.fromCharCode()")}}</li>
+ <li>{{jsxref("String.prototype.charAt()")}}</li>
+ <li>{{jsxref("String.fromCodePoint()")}}</li>
+ <li>{{jsxref("String.prototype.codePointAt()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/codepointat/index.html b/files/ja/web/javascript/reference/global_objects/string/codepointat/index.html
new file mode 100644
index 0000000000..1c01aac633
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/codepointat/index.html
@@ -0,0 +1,146 @@
+---
+title: String.prototype.codePointAt()
+slug: Web/JavaScript/Reference/Global_Objects/String/codePointAt
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/codePointAt
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>codePointAt()</code></strong> メソッドは、 Unicode コードポイント値である負ではない整数を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-codepointat.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.codePointAt(<var>pos</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>pos</var></code></dt>
+ <dd>コードポイント値を返す <code><var>str</var></code> の中の要素の位置です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた <code><var>pos</var></code> の位置にあるコードポイント値を表す数値です。 <code>pos</code> の位置に要素がない場合は {{jsxref("undefined")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>指定された位置に要素が存在しない場合は {{jsxref("undefined")}} を返します。 <code><var>pos</var></code> の位置から UTF-16 サロゲートペアが始まらない場合は、 <code><var>pos</var></code> の位置のコードユニットを返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_codePointAt" name="Using_codePointAt">codePointAt() の使用</h3>
+
+<pre class="brush: js notranslate">'ABC'.codePointAt(1) // 66
+'\uD800\uDC00'.codePointAt(0) // 65536
+
+'XYZ'.codePointAt(42) // undefined
+</pre>
+
+<h3 id="Looping_with_codePointAt" name="Looping_with_codePointAt">codePointAt() の繰り返し</h3>
+
+<pre class="brush: js notranslate">for (let codePoint of '\ud83d\udc0e\ud83d\udc71\u2764') {
+ console.log(codePoint.codePointAt(0).toString(16))
+}
+// '1f40e', '1f471', '2764'
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>次のプログラムは、 ECMAScript 2015 で定義された <code>codePointAt()</code> をネイティブで対応していないブラウザーで利用できるよう String を拡張します。</p>
+
+<pre class="brush: js notranslate">/*! https://mths.be/codepointat v0.2.0 by @mathias */
+if (!String.prototype.codePointAt) {
+ (function() {
+ 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
+ var defineProperty = (function() {
+ // IE 8 only supports `Object.defineProperty` on DOM elements
+ try {
+ var object = {};
+ var $defineProperty = Object.defineProperty;
+ var result = $defineProperty(object, object, object) &amp;&amp; $defineProperty;
+ } catch(error) {}
+ return result;
+ }());
+ var codePointAt = function(position) {
+ if (this == null) {
+ throw TypeError();
+ }
+ var string = String(this);
+ var size = string.length;
+ // `ToInteger`
+ var index = position ? Number(position) : 0;
+ if (index != index) { // better `isNaN`
+ index = 0;
+ }
+ // Account for out-of-bounds indices:
+ if (index &lt; 0 || index &gt;= size) {
+ return undefined;
+ }
+ // Get the first code unit
+ var first = string.charCodeAt(index);
+ var second;
+ if ( // check if it’s the start of a surrogate pair
+ first &gt;= 0xD800 &amp;&amp; first &lt;= 0xDBFF &amp;&amp; // high surrogate
+ size &gt; index + 1 // there is a next code unit
+ ) {
+ second = string.charCodeAt(index + 1);
+ if (second &gt;= 0xDC00 &amp;&amp; second &lt;= 0xDFFF) { // low surrogate
+ // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+ return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
+ }
+ }
+ return first;
+ };
+ if (defineProperty) {
+ defineProperty(String.prototype, 'codePointAt', {
+ 'value': codePointAt,
+ 'configurable': true,
+ 'writable': true
+ });
+ } else {
+ String.prototype.codePointAt = codePointAt;
+ }
+ }());
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.codepointat', 'String.prototype.codePointAt')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.codePointAt")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.fromCodePoint()")}}</li>
+ <li>{{jsxref("String.fromCharCode()")}}</li>
+ <li>{{jsxref("String.prototype.charCodeAt()")}}</li>
+ <li>{{jsxref("String.prototype.charAt()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/concat/index.html b/files/ja/web/javascript/reference/global_objects/string/concat/index.html
new file mode 100644
index 0000000000..70bcf90e76
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/concat/index.html
@@ -0,0 +1,93 @@
+---
+title: String.prototype.concat()
+slug: Web/JavaScript/Reference/Global_Objects/String/concat
+tags:
+ - JavaScript
+ - Prototype
+ - Reference
+ - String
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/String/concat
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>concat()</code></strong> メソッドは、文字列引数を呼び出し文字列に連結して、新しい文字列を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-concat.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>str</var>.concat(<var>str2</var> [, ...<var>strN</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>str2</var> [, ...<var>strN</var>]</code></dt>
+ <dd><code><var>str</var></code> に連結する文字列。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>提供された文字列を結合したテキストを含む新しい文字列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>concat()</code> 関数は、文字列引数を呼び出し文字列に連結し、新しい文字列を返します。元の文字列または返された文字列の変更は、他の文字列には影響しません。</p>
+
+<p>引数が文字列型でない場合は、連結前に文字列値に変換されます。</p>
+
+<h2 id="Performance" name="Performance">性能</h2>
+
+<p><code>concat()</code> メソッドの代わりに {{jsxref("Operators/Assignment_Operators", "代入演算子", "", 1)}} (<code>+</code> または <code>+=</code>) を使用する事を強くお勧めします。<br>
+ この<a href="https://jsperf.com/concat-vs-plus-vs-join">性能試験</a>によれば、{{jsxref("Operators/Assignment_Operators", "代入演算子", "", 1)}}のほうが数倍高速です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_concat" name="Using_concat">concat() の使用</h3>
+
+<p>複数の文字列を連結してコンソールに表示する例を以下に示します。</p>
+
+<pre class="brush: js">let hello = 'こんにちは、'
+console.log(hello.concat('鈴木さん', '。よい1日を。'))
+/* こんにちは、鈴木さん。よい1日を。*/
+
+let greetList = ['こんにちは', ' ', '佐藤さん', '!']
+"".concat(...greetList) // "こんにちは 佐藤さん!"
+
+"".concat({}) // [object Object]
+"".concat([]) // ""
+"".concat(null) // "null"
+"".concat(true) // "true"
+"".concat(4, 5) // "45"
+
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.concat', 'String.prototype.concat')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.concat")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.concat()")}}</li>
+ <li>{{jsxref("Operators/Assignment_Operators", "Assignment operators", "", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/endswith/index.html b/files/ja/web/javascript/reference/global_objects/string/endswith/index.html
new file mode 100644
index 0000000000..3020f5c05c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/endswith/index.html
@@ -0,0 +1,94 @@
+---
+title: String.prototype.endsWith()
+slug: Web/JavaScript/Reference/Global_Objects/String/endsWith
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/endsWith
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>endsWith()</code></strong> メソッドは文字列が引数で指定された文字列で終わるかを判定して <code>true</code> か <code>false</code> を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-endswith.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.endsWith(<var>searchString</var>[, <var>length</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>searchString</var></code></dt>
+ <dd><code><var>str</var></code> の末尾で検索される文字の集合です。</dd>
+ <dt><code><var>length</var></code> {{optional_inline}}</dt>
+ <dd>指定された場合、 <code><var>str</var></code> の長さとして使用されます。既定値は <code><var>str</var>.length</code> です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>文字列が指定された文字列で終わる場合は <strong><code>true</code></strong>、それ以外の場合は <strong><code>false</code></strong> です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>文字列が特定の文字列で終わるかどうかを判断できます。このメソッドでは (英文字の) 大文字・小文字は区別されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_endsWith" name="Using_endsWith">endsWith() の使用</h3>
+
+<pre class="brush: js notranslate">let str = 'To be, or not to be, that is the question.'
+
+console.log(str.endsWith('question.')) // true
+console.log(str.endsWith('to be')) // false
+console.log(str.endsWith('to be', 19)) // true
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>このメソッドは ECMAScript 6 で追加されました。すべての JavaScript の実装でまだ利用可能ではないかもしれません。しかしながら、次のコードで <code>String.prototype.endsWith()</code> をエミュレートできます。</p>
+
+<pre class="brush: js notranslate">if (!String.prototype.endsWith) {
+ String.prototype.endsWith = function(search, this_len) {
+ if (this_len === undefined || this_len &gt; this.length) {
+ this_len = this.length;
+ }
+ return this.substring(this_len - search.length, this_len) === search;
+ };
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.endswith', 'String.prototype.endsWith')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.endsWith")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.startsWith()")}}</li>
+ <li>{{jsxref("String.prototype.includes()")}}</li>
+ <li>{{jsxref("String.prototype.indexOf()")}}</li>
+ <li>{{jsxref("String.prototype.lastIndexOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/fixed/index.html b/files/ja/web/javascript/reference/global_objects/string/fixed/index.html
new file mode 100644
index 0000000000..ed7e2d2576
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/fixed/index.html
@@ -0,0 +1,67 @@
+---
+title: String.prototype.fixed()
+slug: Web/JavaScript/Reference/Global_Objects/String/fixed
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/fixed
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>fixed()</code></strong> メソッドは、文字列を等幅フォントで表示させる HTML の {{HTMLElement("tt")}} 要素を生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.fixed()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("tt")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>fixed()</code> メソッドは、文字列を <code>&lt;tt&gt;</code> 要素の中に、 "<code>&lt;tt&gt;str&lt;/tt&gt;</code>" のように埋め込みます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_fixed" name="Using_fixed">fixed() の使用</h3>
+
+<p>下記の例は、 <code>fixed</code> メソッドを使用して文字列の表示方法を変更します。</p>
+
+<pre class="brush: js notranslate">var worldString = '世界のみなさん、こんにちは!';
+console.log(worldString.fixed()); // "&lt;tt&gt;世界のみなさん、こんにちは!&lt;/tt&gt;"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.fixed', 'String.prototype.fixed')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.fixed")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.bold()")}}</li>
+ <li>{{jsxref("String.prototype.italics()")}}</li>
+ <li>{{jsxref("String.prototype.strike()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/fontcolor/index.html b/files/ja/web/javascript/reference/global_objects/string/fontcolor/index.html
new file mode 100644
index 0000000000..aa768ff89c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/fontcolor/index.html
@@ -0,0 +1,86 @@
+---
+title: String.prototype.fontcolor()
+slug: Web/JavaScript/Reference/Global_Objects/String/fontcolor
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/fontcolor
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>fontcolor()</code></strong> メソッドは、文字列を指定された色で表示させる HTML の {{HTMLElement("font")}} 要素を生成します。</p>
+
+<div class="note">
+<p><strong>使用上の注意:</strong> &lt;font&gt; 要素は <a href="/ja/docs/Web/Guide/HTML/HTML5">HTML5</a> で廃止されており、今後使用するべきではありません。代わりにウェブ開発者は <a href="/ja/docs/Web/CSS">CSS</a> プロパティを使用してください。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.fontcolor(<var>color</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>color</var></code></dt>
+ <dd>16進数の RGB 値または文字列リテラルで色を表す文字列です。 <a href="/ja/docs/Web/CSS/color_value">CSS 色リファレンス</a>に、色名の文字列リテラルの一覧があります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("font")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>色を16進数の RGB 値で表現する場合は、 <code>rrggbb</code> の書式を使用する必要があります。例えば、サーモン色は red=FA, green=80, blue=72 であるため、サーモン色の RGB 値は "<code>FA8072</code>" です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_fontcolor" name="Using_fontcolor">fontcolor() の使用</h3>
+
+<p>以下の例は <code>fontcolor()</code> メソッドを使用して、 HTML の <code>&lt;font&gt;</code> 要素を伴う文字列を生成することで文字列の色を変更しています。</p>
+
+<pre class="brush: js notranslate">var worldString = 'Hello, world';
+
+console.log(worldString.fontcolor('red') + ' is red in this line');
+// '&lt;font color="red"&gt;Hello, world&lt;/font&gt; is red in this line'
+
+console.log(worldString.fontcolor('FF00') + ' is red in hexadecimal in this line');
+// '&lt;font color="FF00"&gt;Hello, world&lt;/font&gt; is red in hexadecimal in this line'
+</pre>
+
+<p>{{domxref("ElementCSSInlineStyle/style", "element.style")}} オブジェクトを使用すると、要素の <code>style</code> 属性を使用して、次のようにもっと汎用的に操作することができます。</p>
+
+<pre class="brush: js notranslate">document.getElementById('yourElemId').style.color = 'red';
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.fontcolor', 'String.prototype.fontcolor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.fontcolor")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.fontsize()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/fontsize/index.html b/files/ja/web/javascript/reference/global_objects/string/fontsize/index.html
new file mode 100644
index 0000000000..244c332279
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/fontsize/index.html
@@ -0,0 +1,85 @@
+---
+title: String.prototype.fontsize()
+slug: Web/JavaScript/Reference/Global_Objects/String/fontsize
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/fontsize
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>fontsize()</code></strong> メソッドは、文字列を指定された大きさで表示させる HTML の {{HTMLElement("font")}} 要素を生成します。</p>
+
+<div class="note">
+<p><strong>使用上の注意:</strong> &lt;font&gt; 要素は <a href="/ja/docs/Web/Guide/HTML/HTML5">HTML5</a> で廃止されており、今後使用するべきではありません。代わりにウェブ開発者は <a href="/ja/docs/Web/CSS">CSS</a> プロパティを使用してください。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.fontsize(<var>size</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>size</var></code></dt>
+ <dd>1 ~ 7 の整数、 1 ~ 7 の符号付き整数を表す文字列です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("font")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>大きさを整数で指定した場合は、 <code>str</code> のフォントの大きさを7つの定義済みの大きさで設定します。 <code>size</code> を "-2" のような文字列で指定すると、 <code>str</code> のフォントの大きさを {{HTMLElement("basefont")}} 要素からの相対的な大きさを設定します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_fontsize" name="Using_fontsize">fontsize() の使用</h3>
+
+<p>以下の例では文字列のメソッドを使用して、文字列の大きさを変更しています。</p>
+
+<pre class="brush: js notranslate">var worldString = 'Hello, world';
+
+console.log(worldString.small()); // &lt;small&gt;Hello, world&lt;/small&gt;
+console.log(worldString.big()); // &lt;big&gt;Hello, world&lt;/big&gt;
+console.log(worldString.fontsize(7)); // &lt;font size="7"&gt;Hello, world&lt;/fontsize&gt;
+</pre>
+
+<p>{{domxref("ElementCSSInlineStyle/style", "element.style")}} オブジェクトを使用すると、要素の <code>style</code> 属性を使用して、次のようにもっと汎用的に操作することができます。</p>
+
+<pre class="brush: js notranslate">document.getElementById('yourElemId').style.fontSize = '0.7em';
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.fontsize', 'String.prototype.fontsize')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.fontsize")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.big()")}}</li>
+ <li>{{jsxref("String.prototype.small()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/fromcharcode/index.html b/files/ja/web/javascript/reference/global_objects/string/fromcharcode/index.html
new file mode 100644
index 0000000000..82829c8cd7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/fromcharcode/index.html
@@ -0,0 +1,98 @@
+---
+title: String.fromCharCode()
+slug: Web/JavaScript/Reference/Global_Objects/String/fromCharCode
+tags:
+ - JavaScript
+ - Method
+ - Reference
+ - String
+ - UTF-16
+ - Unicode
+translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCharCode
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>String.fromCharCode()</code></strong> 静的メソッドは、指定された UTF-16 コードユニットの並びから生成された文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-fromcharcode.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">String.fromCharCode(<var>num1</var>[, ...[, <var>numN</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>num1, ..., num<em>N</em></code></dt>
+ <dd>UTF-16 コードユニットを表す数値の並びです。範囲は <code>0</code> から <code>65535</code> (<code>0xFFFF</code>) までです。数値が <code>0xFFFF</code> を超えた場合は切り捨てられます。妥当性チェックは行われません。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された <code><var>N</var></code> 個の UTF-16 コードユニットから生成された、長さ <code><var>N</var></code> の文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドは {{jsxref("String")}} オブジェクトではなく文字列を返します。</p>
+
+<p><code>fromCharCode()</code> は {{jsxref("String")}} の静的メソッドなので、自分で生成した {{jsxref("String")}} オブジェクトのメソッドではなく、常に、 <code>String.fromCharCode()</code> として使用するようにしてください。</p>
+
+<h3 id="Returning_supplementary_characters" name="Returning_supplementary_characters">補助文字の返却</h3>
+
+<p>UTF-16 では、もっとも一般的な文字は単一の 16 ビット値 (すなわちコードユニット) で表現することができます。しかし、この種の文字は、基本多言語面 (BMP) と呼ばれていますが、全体で指すことができる Unicode コードポイントの <sup>1</sup>/<sub>17</sub> でしかありません。残りのコードポイント、 <code>65536</code> (<code>0x010000</code>) から <code>1114111</code> (<code>0x10FFFF</code>) までは、補助文字と呼ばれています。 UTF-16 では、補助文字はサロゲートと呼ばれる 2 つの 16 ビットコードユニットで表現され、この目的のために予約されていました。2つのサロゲートの妥当な組み合わせを使用して、サロゲートペアと呼ばれる補助文字を表現します。</p>
+
+<p><code>fromCharCode()</code> は 16 ビット値のみで動作するため (<code>\u</code> エスケープシーケンスと同様)、補助文字を返すためにはサロゲートペアが必要です。例えば、 <code>String.fromCharCode(0xD83C, 0xDF03)</code> と <code>\uD83C\uDF03</code> はコードポイント <code>U+1F303</code> "Night with Stars" です。</p>
+
+<p>補助コードポイントの値 (例: 0x1F303) とそれを表す両方のサロゲート値 (例: 0xD83C や 0xDF03) との間には数学的な関係がありますが、補助コードポイントを使用するたびにサロゲートペアの値を計算したり参照したりする、余分なステップが必要になります。このため、実際のコードポイント値に基づいて補助文字を返すことができる {{jsxref("String.fromCodePoint()")}} (ES2015 標準の一部) を使用した方が便利です。例えば、 <code>String.fromCodePoint(0x1F303)</code> はコードポイント <code>U+1F303</code> "Night with Stars" を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_fromCharCode" name="Using_fromCharCode">fromCharCode() の使用</h3>
+
+<p>BMP 文字は、 UTF-16 では単一のコードユニットを使用します。</p>
+
+<pre class="brush: js notranslate">String.fromCharCode(65, 66, 67); // returns "ABC"
+String.fromCharCode(0x2014); // returns "—"
+String.fromCharCode(0x12014); // also returns "—"; the digit 1 is truncated and ignored
+String.fromCharCode(8212); // also returns "—"; 8212 is the decimal form of 0x2014
+</pre>
+
+<p>補助文字は、 UTF-16 では、 2 つのコードユニット (すなわちサロゲートペア) を必要とします。</p>
+
+<pre class="brush: js notranslate">String.fromCharCode(0xD83C, 0xDF03); // Code Point U+1F303 "Night with
+String.fromCharCode(55356, 57091); // Stars" == "\uD83C\uDF03"
+
+String.fromCharCode(0xD834, 0xDF06, 0x61, 0xD834, 0xDF07); // "\uD834\uDF06a\uD834\uDF07"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.fromcharcode', 'String.fromCharCode')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.fromCharCode")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.fromCodePoint()")}}</li>
+ <li>{{jsxref("String.prototype.charAt()")}}</li>
+ <li>{{jsxref("String.prototype.charCodeAt()")}}</li>
+ <li>{{jsxref("String.prototype.codePointAt()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/fromcodepoint/index.html b/files/ja/web/javascript/reference/global_objects/string/fromcodepoint/index.html
new file mode 100644
index 0000000000..c8bcbf6ae3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/fromcodepoint/index.html
@@ -0,0 +1,149 @@
+---
+title: String.fromCodePoint()
+slug: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>String.fromCodePoint()</code></strong> 静的メソッドは指定されたコードポイントのシーケンスを使って生成された文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-fromcodepoint.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code>String.fromCodePoint(<var>num1</var>[, ...[, <var>numN</var>]])</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>num1, ..., num<em>N</em></code></dt>
+ <dd>コードポイントのシーケンスです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>指定されたコードポイントのシーケンスを使って生成された文字列です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li>無効な Unicode コードポイントを与えられた場合、{{jsxref("Errors/Not_a_codepoint", "RangeError")}} (例: "RangeError: NaN is not a valid code point" )がスローされます。</li>
+</ul>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>このメソッドは {{jsxref("String")}} オブジェクトではなく文字列を返します。</p>
+
+<p><code>fromCodePoint()</code> メソッドは {{jsxref("String")}} の静的なメソッドなので、自ら生成した {{jsxref("String")}} オブジェクトのメソッドとしてではなく、常に <code>String.fromCodePoint()</code> として使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_fromCharCode" name="Using_fromCharCode"><code>fromCodePoint()</code> を使う</h3>
+
+<pre class="brush: js">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"
+
+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
+</pre>
+
+<pre class="brush: js">// String.fromCharCode() alone cannot get the character at such a high code point
+// The following, on the other hand, can return a 4-byte character as well as the
+// usual 2-byte ones (i.e., it can return a single character which actually has
+// a string length of 2 instead of 1!)
+console.log(String.fromCodePoint(0x2F804)); // or 194564 in decimal
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><code>String.fromCodePoint</code> メソッドは ECMAScript 2015 で追加されました。まだすべての Web ブラウザーや環境でサポートされていないかもしれません。互換性のために次のコードを使用してください。</p>
+
+<pre class="brush: js">if (!String.fromCodePoint) (function(stringFromCharCode) {
+ var fromCodePoint = function(_) {
+ var codeUnits = [], codeLen = 0, result = "";
+ for (var index=0, len = arguments.length; index !== len; ++index) {
+ var codePoint = +arguments[index];
+ // correctly handles all cases including `NaN`, `-Infinity`, `+Infinity`
+ // The surrounding `!(...)` is required to correctly handle `NaN` cases
+ // The (codePoint&gt;&gt;&gt;0) === codePoint clause handles decimals and negatives
+ if (!(codePoint &lt; 0x10FFFF &amp;&amp; (codePoint&gt;&gt;&gt;0) === codePoint))
+ throw RangeError("Invalid code point: " + codePoint);
+ if (codePoint &lt;= 0xFFFF) { // BMP code point
+ codeLen = codeUnits.push(codePoint);
+ } else { // Astral code point; split in surrogate halves
+ // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+ codePoint -= 0x10000;
+ codeLen = codeUnits.push(
+ (codePoint &gt;&gt; 10) + 0xD800, // highSurrogate
+ (codePoint % 0x400) + 0xDC00 // lowSurrogate
+ );
+ }
+ if (codeLen &gt;= 0x3fff) {
+ result += stringFromCharCode.apply(null, codeUnits);
+ codeUnits.length = 0;
+ }
+ }
+ return result + stringFromCharCode.apply(null, codeUnits);
+ };
+ try { // IE 8 only supports `Object.defineProperty` on DOM elements
+ Object.defineProperty(String, "fromCodePoint", {
+ "value": fromCodePoint, "configurable": true, "writable": true
+ });
+ } catch(e) {
+ String.fromCodePoint = fromCodePoint;
+ }
+}(String.fromCharCode));
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-string.fromcodepoint', 'String.fromCodePoint')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>初期定義</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.fromcodepoint', 'String.fromCodePoint')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.String.fromCodePoint")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.fromCharCode()")}}</li>
+ <li>{{jsxref("String.prototype.charAt()")}}</li>
+ <li>{{jsxref("String.prototype.codePointAt()")}}</li>
+ <li>{{jsxref("String.prototype.charCodeAt()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/includes/index.html b/files/ja/web/javascript/reference/global_objects/string/includes/index.html
new file mode 100644
index 0000000000..c705c8f454
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/includes/index.html
@@ -0,0 +1,123 @@
+---
+title: String.prototype.includes()
+slug: Web/JavaScript/Reference/Global_Objects/String/includes
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/includes
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>includes()</code></strong> メソッドは、1 つの文字列を別の文字列の中に見出すことができるかどうかを判断し、必要に応じて <code>true</code> か <code>false</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-includes.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>str</var>.includes(<var>searchString</var>[, <var>position</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>searchString</var></code></dt>
+ <dd><code><var>str</var></code> 内で検索される文字列。</dd>
+ <dt><code><var>position</var></code> {{optional_inline}}</dt>
+ <dd>文字列内で <code>searchString</code> を検索し始める位置。既定値は 0 です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>文字列が検索値を含む場合、<strong><code>true</code></strong>。含まなければ、<strong><code>false</code></strong>。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このメソッドによってある文字列内に別の文字列を含んでいるかどうか判断できます。</p>
+
+<h3 id="Case-sensitivity" name="Case-sensitivity">大文字・小文字の区別</h3>
+
+<p><code>includes()</code> メソッドは大文字と小文字が区別します。例えば、次のコードでは <code>false</code> を返します:</p>
+
+<pre class="brush: js">'Blue Whale'.includes('blue') // returns false
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_includes" name="Using_includes"><code>includes()</code>を使う</h3>
+
+<pre class="brush: js">const str = 'To be, or not to be, that is the question.'
+
+console.log(str.includes('To be')) // true
+console.log(str.includes('question')) // true
+console.log(str.includes('nonexistent')) // false
+console.log(str.includes('To be', 1)) // false
+console.log(str.includes('TO BE')) // false
+console.log(str.includes('')) // true
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>このメソッドは ECMAScript 2015 で追加されました。まだ、すべての JavaScript の実装で利用できるとは限りません。</p>
+
+<p>しかしながら、このメソッドを簡単にエミュレートできます。</p>
+
+<pre class="brush: js">if (!String.prototype.includes) {
+ String.prototype.includes = function(search, start) {
+ 'use strict';
+
+ if (search instanceof RegExp) {
+ throw TypeError('first argument must not be a RegExp');
+ }
+ if (start === undefined) { start = 0; }
+ return this.indexOf(search, start) !== -1;
+ };
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.includes', 'String.prototype.includes')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.includes")}}</p>
+
+<h2 id="String.prototype.contains">String.prototype.contains</h2>
+
+<p>Firefox 18–39 では、このメソッドの名称は <code>contains()</code> でした。以下の理由により、 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1102219">bug 1102219</a> で <code>includes()</code> に名称が変更されました。</p>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=789036">報告</a>されたところによると、 MooTools 1.2 を使用したいくつかのウェブサイトが Firefox 17 で壊れました。この版の MooTools は、 <code>String.prototype.contains()</code> が存在するかどうか調べ、存在しない場合は MooTools が独自の関数を追加するようになっています。</p>
+
+<p>この関数が Firefox 17 で導入されたことで、このチェックの動作が変わり、 MooTools の <code>String.prototype.contains()</code> の実装に基づくコードが壊れることになりました。結果的に、 Firefox 17 では実装が<a href="https://hg.mozilla.org/releases/mozilla-aurora/rev/086db97198a8">無効化</a>され、 <code>String.prototype.contains()</code> が利用できるようになったのは一つ後のバージョンである Firefox 18 で、 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=789036#c32">MooTools への働きかけ</a>によって <a href="http://mootools.net/blog/2013/02/19/mootools-1-2-6-released">MooTools バージョン 1.2.6 がリリース</a>されてからでした。</p>
+
+<p>MooTools 1.3 では <code>String.prototype.contains()</code> を強制的に自分自身のものに強制したため、これに依存するウェブサイトは壊れません。しかし、このメソッドに対する <a href="http://mootools.net/core/docs/1.3.2/Types/String#String-method:-contains">MooTools 1.3 のシグニチャ</a> と ECMAScript 2015 のシグニチャでは (第 2 引数に) 違いがあることに注意して下さい。後に、 <a href="https://github.com/mootools/mootools-core/blob/master/Docs/Types/String.md#note">MooTools 1.5 以降で ES2015 仕様に一致させるためにシグニチャを変更しました。</a></p>
+
+<p>Firefox 48 で、<code>String.prototype.contains()</code> は削除されました。 <code>String.prototype.includes()</code> だけを使用してください。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.includes()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.includes()")}}</li>
+ <li>{{jsxref("String.prototype.indexOf()")}}</li>
+ <li>{{jsxref("String.prototype.lastIndexOf()")}}</li>
+ <li>{{jsxref("String.prototype.startsWith()")}}</li>
+ <li>{{jsxref("String.prototype.endsWith()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/index.html b/files/ja/web/javascript/reference/global_objects/string/index.html
new file mode 100644
index 0000000000..d9932e4302
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/index.html
@@ -0,0 +1,384 @@
+---
+title: String
+slug: Web/JavaScript/Reference/Global_Objects/String
+tags:
+ - Class
+ - ECMAScript 2015
+ - JavaScript
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>String</code></strong> オブジェクトは文字の並びを表したり操作したりするために使用されます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>文字列は、テキスト形式で表現可能なデータを保持するのに便利です。最もよく使われる操作として、文字列の長さをチェックする {{jsxref("String.length", "length")}} プロパティ、 <a href="/ja/docs/Web/JavaScript/Reference/Operators/String_Operators">文字列に対する + および += 演算子</a>を用いた文字列の連結、文字列の中の部分文字列の存在や位置をチェックする {{jsxref("String.prototype.indexOf()", "indexOf()")}} メソッド、部分文字列を取り出す {{jsxref("String.prototype.substring()", "substring()")}} メソッドが挙げられます。</p>
+
+<h3 id="Creating_strings" name="Creating_strings">文字列の生成</h3>
+
+<p>文字列は文字列リテラルからプリミティブとして、または {{jsxref("String/String", "String()")}} コンストラクターを使用して文字列として生成することができます。</p>
+
+<pre class="syntaxbox notranslate">const string1 = "文字列プリミティブ";
+const string2 = 'これも文字列プリミティブ';
+const string3 = `別な文字列プリミティブ`;</pre>
+
+<pre class="syntaxbox notranslate">const string4 = new String("文字列オブジェクト");
+</pre>
+
+<p>文字列プリミティブと文字列オブジェクトは、ほとんどの場合は交換して使用することができます。下記の「<a href="#String_primitives_and_String_objects">文字列プリミティブと String オブジェクト</a>」を参照してください。</p>
+
+<p>文字列リテラルは単一引用符または二重引用符を使用して指定することができ、どちらでも同様に扱われますが、逆引用符文字 <kbd>`</kbd> を使用することもできます。最後の形は<a href="/ja/docs/Web/JavaScript/Reference/Template_literals">テンプレートリテラル</a>を指定し、この形式では式を補完することができます。</p>
+
+<h3 id="Character_access" name="Character_access">文字へのアクセス</h3>
+
+<p>文字列内の個々の文字へのアクセス方法には、二通りの方法があります。そのひとつは {{jsxref("String.prototype.charAt()", "charAt()")}} メソッドです。</p>
+
+<pre class="brush: js notranslate">return 'ねこ'.charAt(1) // "こ" が返される
+</pre>
+
+<p>そしてもうひとつは、文字列を配列のようなオブジェクトとして扱い、数値の添字を用いる方法です。 (ECMAScript 5 で導入)</p>
+
+<pre class="brush: js notranslate">return 'ねこ'[1] // "こ" が返される。
+</pre>
+
+<p>ブラケット記法を使用した文字アクセスでは、これらのプロパティに値を設定したり削除したりすることはできません。関連したプロパティを書き込んだり設定したりすることもできません。 (より詳細な情報は {{jsxref("Object.defineProperty()")}} を参照してください。)</p>
+
+<h3 id="Comparing_strings" name="Comparing_strings">文字列の比較</h3>
+
+<p>C 言語では 文字列の比較の為に <code>strcmp()</code> 関数を用います。 JavaScript では単純に <a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators">小なり / 大なり演算子</a>を用います。</p>
+
+<pre class="brush: js notranslate">let a = 'a'
+let b = 'b'
+if (a &lt; b) { // true
+ console.log(a + ' は ' + b + ' より小さい')
+} else if (a &gt; b) {
+ console.log(a + ' は ' + b + ' より大きい')
+} else {
+ console.log(a + ' と ' + b + ' は等しい')
+}
+</pre>
+
+<p><code>String</code> インスタンスから継承される {{jsxref("String.prototype.localeCompare()", "localeCompare()")}} メソッドを使用して同等の結果を得ることもできます。</p>
+
+<p>なお、 <code>a == b</code> は <code><var>a</var></code> と <code><var>b</var></code> の文字列が等しいかどうかを、通常の大文字小文字を区別して比較します。大文字小文字に関係なく比較したい場合は、次のように関数を使用してください。</p>
+
+<pre class="notranslate">function isEqual(str1, str2)
+{
+ return str1.toUpperCase() === str2.toUpperCase()
+} // isEqual
+</pre>
+
+<p>この関数では、特定の UTF-8 文字の変換に問題があるため、小文字の代わりに大文字を使用します。</p>
+
+<h3 id="String_primitives_and_String_objects" name="String_primitives_and_String_objects">文字列プリミティブと String オブジェクト</h3>
+
+<p>JavaScript では、 <code>String</code> オブジェクトと{{Glossary("Primitive", "プリミティブ文字列")}}は区別されることに注意してください。 ({{jsxref("Boolean")}} や {{jsxref("Global_Objects/Number", "Number")}} にも同じことが言えます。)</p>
+
+<p>文字列リテラル (二重引用符または単一引用符で示されます)、および <code>String</code> 関数をコンストラクター以外の場面で (すなわち {{jsxref("Operators/new", "new")}} キーワードを使わずに) 呼び出した場合はプリミティブの文字列になります。 JavaScript では、必要に応じてプリミティブの文字列が自動的に <code>String</code> オブジェクトに変換されるので、プリミティブの文字列に対して <code>String</code> オブジェクトのメソッドを使用することができます。プリミティブの文字列に対して、メソッドの呼び出しやプロパティの参照が行われようとした場合、 JavaScript は自動的にプリミティブの文字列をオブジェクトでラップし、メソッドを呼び出したりプロパティの参照を行ったりします。</p>
+
+<pre class="brush: js notranslate">let s_prim = 'foo'
+let s_obj = new String(s_prim)
+
+console.log(typeof s_prim) // Logs "string"
+console.log(typeof s_obj) // Logs "object"
+</pre>
+
+<p>プリミティブの文字列と <code>String</code> オブジェクトは {{jsxref("Global_Objects/eval", "eval()")}} を使用すると異なる結果となります。 <code>eval</code> に渡されたプリミティブは、ソースコードとして扱われます。 <code>String</code> オブジェクトは他のオブジェクトと同様に、オブジェクトとしてそのままの文字列を返します。</p>
+
+<pre class="brush: js notranslate">let s1 = '2 + 2' // 文字列プリミティブを生成
+var s2 = new String('2 + 2') // String オブジェクトを生成
+console.log(eval(s1)) // 数値の 4 を返す
+console.log(eval(s2)) // 文字列の "2 + 2" を返す
+</pre>
+
+<p>こういった理由から、プリミティブの文字列を期待して実装されたコードは <code>String</code> オブジェクトでうまく動作しないことがあります。しかし、一般的にはこれらの違いを考慮しなければならないことはあまりありません。</p>
+
+<p>なお、 <code>String</code> オブジェクトは {{jsxref("String.prototype.valueOf()", "valueOf()")}} メソッドを用いることで、プリミティブの文字列に変換することができます。</p>
+
+<pre class="brush: js notranslate">console.log(eval(s2.valueOf())) // 数値の 4 を返す
+</pre>
+
+<h3 id="Escape_notation" name="Escape_notation">エスケープ表記</h3>
+
+<p>通常の文字列とは異なる特殊な文字を表示するためには、エスケープ表記を使用します。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">コード</th>
+ <th scope="col">出力</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>\<var>XXX</var></code><br>
+ (<code><var>XXX</var></code> = 1~3桁の8進数、 <code>0</code>~<code>377</code> の範囲)</td>
+ <td>ISO-8859-1 の文字または U+0000 から U+00FF の間の Unicode コードポイントです。</td>
+ </tr>
+ <tr>
+ <td><code>\'</code></td>
+ <td>単一引用符</td>
+ </tr>
+ <tr>
+ <td><code>\"</code></td>
+ <td>二重引用符</td>
+ </tr>
+ <tr>
+ <td><code>\\</code></td>
+ <td>バックスラッシュ (\文字)</td>
+ </tr>
+ <tr>
+ <td><code>\n</code></td>
+ <td>改行</td>
+ </tr>
+ <tr>
+ <td><code>\r</code></td>
+ <td>復帰</td>
+ </tr>
+ <tr>
+ <td><code>\v</code></td>
+ <td>垂直タブ</td>
+ </tr>
+ <tr>
+ <td><code>\t</code></td>
+ <td>水平タブ</td>
+ </tr>
+ <tr>
+ <td><code>\b</code></td>
+ <td>バックスペース</td>
+ </tr>
+ <tr>
+ <td><code>\f</code></td>
+ <td>ページ送り</td>
+ </tr>
+ <tr>
+ <td><code>\u<var>XXXX</var></code> (<code><var>XXXX</var></code> = 4桁の16進数、 <code>0x0000</code>~<code>0xFFFF</code> の範囲)</td>
+ <td>UTF-16 のコード単位 / <code>U+0000</code> から <code>U+FFFF</code> の間の Unicode コードポイント</td>
+ </tr>
+ <tr>
+ <td><code>\u{<var>X</var>}</code> ... <code>\u{<var>XXXXXX</var>}</code><br>
+ (<code><var>X</var>…<var>XXXXXX</var></code> = 1~6桁の16進数、 <code>0x0</code>–<code>0x10FFFF</code> の範囲)</td>
+ <td>UTF-32 のコード単位 / <code>U+0000</code> から <code>U+10FFFF</code> の間の Unicode コードポイント</td>
+ </tr>
+ <tr>
+ <td><code>\x<var>XX</var></code><br>
+ (<code><var>XX</var></code> = 2桁の16進数、 <code>0x00</code>~<code>0xFF</code> の範囲)</td>
+ <td>ISO-8859-1 の文字 / <code>U+0000</code> から <code>U+00FF</code> の間の Unicode コードポイント</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Long_literal_strings" name="Long_literal_strings">長い文字列リテラル</h3>
+
+<p>時には、コードに非常に長い文字列が含まれる場合があります。行を延々と長くしたり、エディターに任せて折り返したりするよりも、実際の文字列の内容に影響を与えずに文字列をソースコード内で複数行に分割したいことがあります。これを行うには2つの方法があります。</p>
+
+<h4 id="Method_1" name="Method_1">方法 1</h4>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/Addition">+</a> 演算子を使用して、次のように複数の文字列を追加することができます。</p>
+
+<pre class="brush: js notranslate">let longString = "This is a very long string which needs " +
+ "to wrap across multiple lines because " +
+ "otherwise my code is unreadable."
+</pre>
+
+<h4 id="Method_2" name="Method_2">方法 2</h4>
+
+<p>各行の末尾にバックスラッシュ文字 (<code>\</code>) を使用して、文字列が次の行に続くことを示すことができます。バックスラッシュの後に、 (改行を除いて) 空白やその他の文字を置いたり、インデントを置いたりしていないか確認してください。さもないと動作しません。</p>
+
+<p>この形式は以下のようになります。</p>
+
+<pre class="brush: js notranslate">let longString = "This is a very long string which needs \
+to wrap across multiple lines because \
+otherwise my code is unreadable."
+</pre>
+
+<p>これらの結果はともに同じ文字列が生成されます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("String/String", "String()")}}</dt>
+ <dd>新しい <code>String</code> オブジェクトを生成するために使用します。コンストラクターではなく関数として呼び出されたときは型変換を行うので、普通はより有用です。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("String.fromCharCode()", "String.fromCharCode(<var>num1</var> [, ...[, <var>numN</var>]])")}}</dt>
+ <dd>指定された Unicode 値の列から生成した文字列を返します。</dd>
+ <dt>{{jsxref("String.fromCodePoint()", "String.fromCodePoint(<var>num1</var> [, ...[, <var>numN</var>)")}}</dt>
+ <dd>指定された Unicode コードポイントの列から生成した文字列を返します。</dd>
+ <dt>{{jsxref("String.raw()")}}</dt>
+ <dd>生のテンプレート文字列から生成した文字列を返します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("String.prototype.length")}}</dt>
+ <dd>文字列の <code>length</code> を反映します。読み取り専用です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("String.prototype.charAt()", "String.prototype.charAt(<var>index</var>)")}}</dt>
+ <dd><code><var>index</var></code> で指定された位置の文字 (UTF-16 コード 1 つから成ります) を返します。</dd>
+ <dt>{{jsxref("String.prototype.charCodeAt()", "String.prototype.charCodeAt(<var>index</var>)")}}</dt>
+ <dd><code><var>index</var></code> で与えられた位置の文字の UTF-16 の値を示す数を返します。</dd>
+ <dt>{{jsxref("String.prototype.codePointAt()", "String.prototype.codePointAt(<var>pos</var>)")}}</dt>
+ <dd><code><var>pos</var></code> で指定された位置から始まる UTF-16 エンコードされた際のコードポイントの、コードポイントの値である正の整数を返します。</dd>
+ <dt>{{jsxref("String.prototype.concat()", "String.prototype.concat(<var>str </var>[, ...<var>strN </var>])")}}</dt>
+ <dd>2 つ (以上) の文字列を連結し、新しい文字列を返します。</dd>
+ <dt>{{jsxref("String.prototype.includes()", "String.prototype.includes(<var>searchString</var> [, <var>position</var>])")}}</dt>
+ <dd>文字列中に <code><var>searchString</var></code> が含まれているかを返します。</dd>
+ <dt>{{jsxref("String.prototype.endsWith()", "String.prototype.endsWith(<var>searchString</var> [, <var>length</var>])")}}</dt>
+ <dd>文字列の末尾に指定された文字列 <code><var>searchString</var></code> が含まれているかを返します。</dd>
+ <dt>{{jsxref("String.prototype.indexOf()", "String.prototype.indexOf(<var>searchValue</var> [, <var>fromIndex</var>])")}}</dt>
+ <dd>呼び出す {{jsxref("String")}} オブジェクト中で、 <code><var>searchValue</var></code> が最初に現れる位置を返します。見つからなかった場合は <code>-1</code> を返します。</dd>
+ <dt>{{jsxref("String.prototype.lastIndexOf()", "String.prototype.lastIndexOf(<var>searchValue</var> [, <var>fromIndex</var>])")}}</dt>
+ <dd>呼び出す {{jsxref("String")}} オブジェクト中で、 <code><var>searchValue</var></code> が最後に現れる位置を返します。見つからない場合は <code>-1</code> を返します。</dd>
+ <dt>{{jsxref("String.prototype.localeCompare()", "String.prototype.localeCompare(<var>compareString</var> [, <var>locales</var> [, <var>options</var>]])")}}</dt>
+ <dd>参照文字列 <code><var>compareString</var></code> が、並べ替え順において、与えられた文字列の前になるか後になるか、あるいは、同じかどうかを示す数値を返します。</dd>
+ <dt>{{jsxref("String.prototype.match()", "String.prototype.match(<var>regexp</var>)")}}</dt>
+ <dd>文字列に対して正規表現 <code><var>regexp</var></code> を一致させるために使用されます。</dd>
+ <dt>{{jsxref("String.prototype.matchAll()", "String.prototype.matchAll(<var>regexp</var>)")}}</dt>
+ <dd><code><var>regexp</var></code> が一致するものすべてのイテレーターを返します。</dd>
+ <dt>{{jsxref("String.prototype.normalize()", "String.prototype.normalize([<var>form</var>])")}}</dt>
+ <dd>呼び出された文字列の値の Unicode 正規化形式を返します。</dd>
+ <dt>{{jsxref("String.prototype.padEnd()", "String.prototype.padEnd(<var>targetLength</var> [, <var>padString</var>])")}}</dt>
+ <dd>現在の文字列の末尾から指定された文字列で埋めた、長さ <code><var>targetLength</var></code> 文字の新たな文字列を返します。</dd>
+ <dt>{{jsxref("String.prototype.padStart()", "String.prototype.padStart(<var>targetLength</var> [, <var>padString</var>])")}}</dt>
+ <dd>現在の文字列の先頭から指定した文字列で埋めた、長さ <code><var>targetLength</var></code> 文字の新たな文字列を作成します。</dd>
+ <dt>{{jsxref("String.prototype.repeat()", "String.prototype.repeat(<var>count</var>)")}}</dt>
+ <dd>オブジェクトの要素を <code><var>count</var></code> 回繰り返した文字列を返します。</dd>
+ <dt>{{jsxref("String.prototype.replace()" , "String.prototype.replace(<var>searchFor</var>, <var>replaceWith</var>)")}}</dt>
+ <dd><code><var>searchFor</var></code> が現れたところを <code><var>replaceWith</var></code> で置換するために使用します。 <code><var>searchFor</var></code> は文字列または正規表現であり、 <code><var>replaceWith</var></code> は文字列または関数です。</dd>
+ <dt>{{jsxref("String.prototype.replaceAll()" , "String.prototype.replaceAll(<var>searchFor</var>, <var>replaceWith</var>)")}}</dt>
+ <dd><code><var>searchFor</var></code> が現れたところすべてを <code><var>replaceWith</var></code> で置換するために使用します。 <code><var>searchFor</var></code> は文字列または正規表現であり、 <code><var>replaceWith</var></code> は文字列または関数です。</dd>
+ <dt>{{jsxref("String.prototype.search()", "String.prototype.search(<var>regexp</var>)")}}</dt>
+ <dd>正規表現 <code><var>regexp</var></code> と呼び出された文字列が一致するところを検索します。</dd>
+ <dt>{{jsxref("String.prototype.slice()", "String.prototype.slice(<var>beginIndex</var>[, <var>endIndex</var>])")}}</dt>
+ <dd>文字列の一区間を取り出し、新しい文字列を返します。</dd>
+ <dt>{{jsxref("String.prototype.split()", "String.prototype.split([<var>sep</var> [, <var>limit</var>] ])")}}</dt>
+ <dd>呼び出した文字列を、部分文字列 <code><var>sep</var></code> が現れるところで分割し、文字列の配列を生成して返します。</dd>
+ <dt>{{jsxref("String.prototype.startsWith()", "String.prototype.startsWith(<var>searchString</var> [, <var>length</var>])")}}</dt>
+ <dd>呼び出した文字列が文字列 <code><var>searchString</var></code> で開始されているかを判断します。</dd>
+ <dt>{{jsxref("String.prototype.substr()")}}</dt>
+ <dd>文字列において、指定された位置から指定された文字数の文字を返します。</dd>
+ <dt>{{jsxref("String.prototype.substring()", "String.prototype.substring(<var>indexStart</var> [, <var>indexEnd</var>])")}}</dt>
+ <dd>呼び出した文字列の指定された位置以降 (または区間) にある文字が入った新しい文字列を返します。</dd>
+ <dt>{{jsxref("String.prototype.toLocaleLowerCase()", "String.prototype.toLocaleLowerCase( [<var>locale</var>, ...<var>locales</var>])")}}</dt>
+ <dd>
+ <p>文字列内の文字が、現在のロケールに沿って小文字に変換されます。</p>
+
+ <p>ほとんどの言語では、これは {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}} と同じものを返します。</p>
+ </dd>
+ <dt>{{jsxref("String.prototype.toLocaleUpperCase()", "String.prototype.toLocaleUpperCase( [<var>locale</var>, ...<var>locales</var>])")}}</dt>
+ <dd>
+ <p>文字列内の文字が、現在のロケールに沿って大文字に変換されます。</p>
+
+ <p>ほとんどの言語では、これは {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}} と同じものを返します。</p>
+ </dd>
+ <dt>{{jsxref("String.prototype.toLowerCase()")}}</dt>
+ <dd>小文字に変換された文字列の値を呼び出して返します。</dd>
+ <dt>{{jsxref("String.prototype.toString()")}}</dt>
+ <dd>指定されたオブジェクトの文字列を返します。{{jsxref("Object.prototype.toString()")}} メソッドを上書きします。</dd>
+ <dt>{{jsxref("String.prototype.toUpperCase()")}}</dt>
+ <dd>大文字に変換された文字列の値を呼び出して返します。</dd>
+ <dt>{{jsxref("String.prototype.trim()")}}</dt>
+ <dd>文字列の先頭と末尾にある空白を削除します。 ECMAScript 5 標準の一部です。</dd>
+ <dt>{{jsxref("String.prototype.trimStart()")}}</dt>
+ <dd>文字列の先頭にある空白を削除します。</dd>
+ <dt>{{jsxref("String.prototype.trimEnd()")}}</dt>
+ <dd>文字列の末尾にある空白を削除します。</dd>
+ <dt>{{jsxref("String.prototype.valueOf()")}}</dt>
+ <dd>指定されたオブジェクトのプリミティブ値を返します。 {{jsxref("Object.prototype.valueOf()")}} メソッドを上書きします。</dd>
+ <dt>{{jsxref("String.prototype.@@iterator()")}}</dt>
+ <dd>文字列値のコードポイントを反復処理し、文字列値として各コードポイントを返す、新しい <code>Iterator</code> オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="HTML_wrapper_methods" name="HTML_wrapper_methods">HTML ラッパーメソッド</h2>
+
+<div>
+<div class="blockIndicator note">
+<p><strong>非推奨です。これらのメソッドは避けてください。</strong></p>
+
+<p>以下のメソッドは、それぞれ、特定の HTML タグでラップされた文字列のコピーを返します。</p>
+</div>
+
+<dl>
+ <dt>{{jsxref("String.prototype.anchor()")}}</dt>
+ <dd>{{htmlattrxref("name", "a", "&lt;a name=\"name\"&gt;")}} (ハイパーテキストのターゲット)</dd>
+ <dt>{{jsxref("String.prototype.big()")}}</dt>
+ <dd>{{HTMLElement("big")}}</dd>
+ <dt>{{jsxref("String.prototype.blink()")}}</dt>
+ <dd>{{HTMLElement("blink")}}</dd>
+ <dt>{{jsxref("String.prototype.bold()")}}</dt>
+ <dd>{{HTMLElement("b")}}</dd>
+ <dt>{{jsxref("String.prototype.fixed()")}}</dt>
+ <dd>{{HTMLElement("tt")}}</dd>
+ <dt>{{jsxref("String.prototype.fontcolor()")}}</dt>
+ <dd>{{htmlattrxref("color", "font", "&lt;font color=\"color\"&gt;")}}</dd>
+ <dt>{{jsxref("String.prototype.fontsize()")}}</dt>
+ <dd>{{htmlattrxref("size", "font", "&lt;font size=\"size\"&gt;")}}</dd>
+ <dt>{{jsxref("String.prototype.italics()")}}</dt>
+ <dd>{{HTMLElement("i")}}</dd>
+ <dt>{{jsxref("String.prototype.link()")}}</dt>
+ <dd>{{htmlattrxref("href", "a", "&lt;a href=\"url\"&gt;")}} (URL へのリンク)</dd>
+ <dt>{{jsxref("String.prototype.small()")}}</dt>
+ <dd>{{HTMLElement("small")}}</dd>
+ <dt>{{jsxref("String.prototype.strike()")}}</dt>
+ <dd>{{HTMLElement("strike")}}</dd>
+ <dt>{{jsxref("String.prototype.sub()")}}</dt>
+ <dd>{{HTMLElement("sub")}}</dd>
+ <dt>{{jsxref("String.prototype.sup()")}}</dt>
+ <dd>{{HTMLElement("sup")}}</dd>
+</dl>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="String_conversion" name="String_conversion">文字列変換</h3>
+
+<p><code>String</code> を使用すると、 {{jsxref("String.prototype.toString()", "toString()")}} よりも信頼性の高い代替手段となり、 {{jsxref("null")}}, {{jsxref("undefined")}}, {{jsxref("Symbol", "symbols")}} に対して使用することもできます。</p>
+
+<pre class="brush: js notranslate">let outputStrings = []
+for (let i = 0, n = inputValues.length; i &lt; n; ++i) {
+ outputStrings.push(String(inputValues[i]));
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string-objects', 'String')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Text_formatting">JavaScript ガイドのテキスト処理</a></li>
+ <li>{{jsxref("RegExp")}}</li>
+ <li>{{domxref("DOMString")}}</li>
+ <li><a href="/ja/Add-ons/Code_snippets/StringView"><code>StringView</code> — 型付き配列に基づいた C 風の文字列の表現</a></li>
+ <li><a href="/ja/docs/Web/API/DOMString/Binary">バイナリ文字列</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/indexof/index.html b/files/ja/web/javascript/reference/global_objects/string/indexof/index.html
new file mode 100644
index 0000000000..a2db982f65
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/indexof/index.html
@@ -0,0 +1,169 @@
+---
+title: String.prototype.indexOf()
+slug: Web/JavaScript/Reference/Global_Objects/String/indexOf
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/String/indexOf
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>indexOf()</code></strong> メソッドは、呼び出す {{jsxref("String")}} オブジェクト中で、 <code>fromIndex</code> から検索を始め、指定された値が最初に現れたインデックスを返します。値が見つからない場合は <code>-1</code> を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-indexof.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div class="note"><strong>メモ:</strong> 配列メソッドについては {{jsxref("Array.prototype.indexOf()")}} を参照してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>str</var>.indexOf(<var>searchValue [</var>, <var>fromIndex]</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>searchValue</var></code></dt>
+ <dd>
+ <p>検索する値を表す文字列です。</p>
+
+ <p>文字列が明示的に提供されなかった場合は、 <a href="https://tc39.github.io/ecma262/#sec-tostring"><var>searchValue</var> は "<code>undefined</code>" となり</a>、この値が <code><var>str</var></code> の中から検索されます。</p>
+
+ <p>ですから、例えば <code>'undefined'.indexOf()</code> は <code>undefined</code> が <code>undefined</code> という文字列の中の <code>0</code> の位置に見つかるため、 <code>0</code> を返します。しかし、 <code>'undefine'.indexOf()</code> は <code>undefined</code> が <code>undefine</code> という文字列の中で見つからないため、 <code>-1</code> を返します。</p>
+ </dd>
+ <dt><var><code>fromIndex</code></var> {{optional_inline}}</dt>
+ <dd>
+ <p>整数値で、検索を始める位置を表します。既定値は <code>0</code> です。</p>
+
+ <p><var><code>fromIndex</code></var> の値が <code>0</code> より小さい場合や <code><var>str</var>.length</code> より大きい場合は、それぞれ <code>0</code> の位置、 <code><var>str</var>.length</code> の位置から検索を始めます。</p>
+
+ <p>例えば、 <code>'hello world'.indexOf('o', -5)</code> は、 <code>0</code> の位置から検索を始め、 <code>o</code> が <code>4</code> の位置にあるので <code>4</code> を返します。一方、 <code>'hello world'.indexOf('o', 11)</code> (および <code>fromIndex</code> の値が <code>11</code> よりも大きな場合) は、 <code>11</code> が文字列の末尾よりも<em>後</em>の位置であるため、 <code>-1</code> を返します。</p>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code><var>searchValue</var></code> が初めて出現した位置です。見つからなかった場合は、 <strong>-1</strong> になります。</p>
+
+<p><code><var>searchValue</var></code> が空文字列であった場合は奇妙な結果になります。 <code><var>fromIndex</var></code> の値がなかった場合や、 <code><var>fromIndex</var></code> の値が文字列の <code>length</code> よりも小さかった場合は、返値は <code><var>fromIndex</var></code> と同じになります。</p>
+
+<pre class="brush: js">'hello world'.indexOf('') // 0 を返す
+'hello world'.indexOf('', 0) // 0 を返す
+'hello world'.indexOf('', 3) // 3 を返す
+'hello world'.indexOf('', 8) // 8 を返す</pre>
+
+<p>しかし、 <code><var>fromIndex</var></code> の値が文字列の <code>length</code> 以上であった場合、返値は文字列の <code>length</code> になります。</p>
+
+<pre class="brush: js">'hello world'.indexOf('', 11) // 11 を返す
+'hello world'.indexOf('', 13) // 11 を返す
+'hello world'.indexOf('', 22) // 11 を返す</pre>
+
+<p>前者の例では、 JS は指定された位置の直後に空文字列を見つけているようです。後者の例では、 JS は検索される文字列の末尾で空文字列を見つけているようです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>文字列における文字は左から右にインデックス化されます。一番最初の文字の位置は <code>0</code> で、 <code><var>stringName</var></code> として呼び出された文字列における一番最後の文字は <code><var>stringName</var>.length - 1</code> です。</p>
+
+<pre class="brush:js">'Blue Whale'.indexOf('Blue') // 0 を返します
+'Blue Whale'.indexOf('Blute') // -1 を返します
+'Blue Whale'.indexOf('Whale', 0) // 5 を返します
+'Blue Whale'.indexOf('Whale', 5) // 5 を返します
+'Blue Whale'.indexOf('Whale', 7) // -1 を返します
+'Blue Whale'.indexOf('') // 0 を返します
+'Blue Whale'.indexOf('', 9) // 9 を返します
+'Blue Whale'.indexOf('', 10) // 10 を返します
+'Blue Whale'.indexOf('', 11) // 10 を返します
+</pre>
+
+<p><code>indexOf()</code> メソッドは大文字と小文字を区別します。例えば、以下の式は <code>-1</code> を返します。</p>
+
+<pre class="brush: js">'Blue Whale'.indexOf('blue') // -1 を返します
+</pre>
+
+<h3 id="Checking_occurrences" name="Checking_occurrences">出現のチェック</h3>
+
+<p><code>0</code> は <code>true</code> と評価されず、 <code>-1</code> は <code>false</code> と評価されないことに注意してください。そのため、特定の文字列がほかの文字列に含まれているかをチェックする正確な方法は次のようになります。</p>
+
+<pre class="brush: js">'Blue Whale'.indexOf('Blue') !== -1 // true
+'Blue Whale'.indexOf('Bloe') !== -1 // false
+~('Blue Whale'.indexOf('Bloe')) // 0, which is falsy
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_indexOf" name="Using_indexOf"><code>indexOf()</code> を使う</h3>
+
+<p>以下の例は、<code>"Brave new world"</code> という文字列において、与えられた値の位置を求めるために、<code>indexOf()</code> を使用しています。</p>
+
+<pre class="brush: js">const str = 'Brave new world'
+
+console.log('Index of first w from start is ' + str.indexOf('w')) // 8 を表示
+console.log('Index of "new" from start is ' + str.indexOf('new')) // 6 を表示
+</pre>
+
+<h3 id="indexOf_and_case-sensitivity" name="indexOf_and_case-sensitivity"><code>indexOf()</code> と 大文字と小文字の区別</h3>
+
+<p>以下の例は 2 つの文字列の変数を定義しています。</p>
+
+<p>それらの変数は、2 番目の文字列が大文字を含んでいることを除けば、同じ文字列を含んでいます。1 番目の {{domxref("console.log()")}} メソッドは <code>19</code> を表示します。しかし、 <code>indexOf()</code> メソッドは大文字と小文字を区別するので、 "<code>cheddar</code>" という文字列は <code>myCapString</code> では見つけられません。ですから、 <code>console.log()</code> メソッドは <code>-1</code> を表示します。</p>
+
+<pre class="brush: js">const myString = 'brie, pepper jack, cheddar'
+const myCapString = 'Brie, Pepper Jack, Cheddar'
+
+console.log('myString.indexOf("cheddar") is ' + myString.indexOf('cheddar'))
+// 19 を表示します
+console.log('myCapString.indexOf("cheddar") is ' + myCapString.indexOf('cheddar'))
+// -1 を表示します
+</pre>
+
+<h3 id="Using_indexOf_to_count_occurrences_of_a_letter_in_a_string" name="Using_indexOf_to_count_occurrences_of_a_letter_in_a_string"><code>indexOf()</code> を使って文字列中である文字が現れる回数を数える</h3>
+
+<p>以下の例は、 <code>count</code> に、 <code>str</code> という文字列中で <code>e</code> という文字が出現する回数を設定します。</p>
+
+<pre class="brush: js">const str = 'To be, or not to be, that is the question.'
+let count = 0
+let position = str.indexOf('e')
+
+while (position !== -1) {
+ count++
+ position = str.indexOf('e', position + 1)
+}
+
+console.log(count) // 4 を表示
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.indexof', 'String.prototype.indexOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.indexOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.charAt()")}}</li>
+ <li>{{jsxref("String.prototype.lastIndexOf()")}}</li>
+ <li>{{jsxref("String.prototype.includes()")}}</li>
+ <li>{{jsxref("String.prototype.split()")}}</li>
+ <li>{{jsxref("Array.prototype.indexOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/italics/index.html b/files/ja/web/javascript/reference/global_objects/string/italics/index.html
new file mode 100644
index 0000000000..41fb0f5202
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/italics/index.html
@@ -0,0 +1,69 @@
+---
+title: String.prototype.italics()
+slug: Web/JavaScript/Reference/Global_Objects/String/italics
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/italics
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>italics()</code></strong> メソッドは、文字列がイタリックになるように HTML の {{HTMLElement("i")}} 要素を生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.italics()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("i")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>italics()</code> メソッドは、文字列を <code>&lt;i&gt;</code> 要素の中に、 "<code>&lt;i&gt;str&lt;/i&gt;</code>" のように埋め込みます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="italics_の使用">italics() の使用</h3>
+
+<p>以下の例では文字列のメソッドを使用して、文字列を整形しています。</p>
+
+<pre class="brush: js notranslate">var worldString = 'Hello, world';
+console.log(worldString.blink()); // &lt;blink&gt;Hello, world&lt;/blink&gt;
+console.log(worldString.bold()); // &lt;b&gt;Hello, world&lt;/b&gt;
+console.log(worldString.italics()); // &lt;i&gt;Hello, world&lt;/i&gt;
+console.log(worldString.strike()); // &lt;strike&gt;Hello, world&lt;/strike&gt;
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.italics', 'String.prototype.italics')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.italics")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.blink()")}}</li>
+ <li>{{jsxref("String.prototype.bold()")}}</li>
+ <li>{{jsxref("String.prototype.strike()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/lastindexof/index.html b/files/ja/web/javascript/reference/global_objects/string/lastindexof/index.html
new file mode 100644
index 0000000000..d9ae2f8260
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/lastindexof/index.html
@@ -0,0 +1,110 @@
+---
+title: String.prototype.lastIndexOf()
+slug: Web/JavaScript/Reference/Global_Objects/String/lastIndexOf
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+ - lastIndexOf
+translation_of: Web/JavaScript/Reference/Global_Objects/String/lastIndexOf
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>lastIndexOf()</code></strong> メソッドは、呼び出した {{jsxref("String")}} オブジェクトの中で、 <code>fromIndex</code> から前方向に検索を始め、指定された値が最後に現れたインデックスを返します。値が見つからない場合は <code>-1</code> を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-lastindexof.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.lastIndexOf(<var>searchValue</var>[, <var>fromIndex</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>searchValue</var></code></dt>
+ <dd>検索する値を表す文字列です。 <code><var>searchValue</var></code> が空文字列であった場合は、 <code><var>fromIndex</var></code> を返します。
+ </dd><dt><code><var>fromIndex</var></code> {{optional_inline}}</dt>
+ <dd>比較の先頭とみなされる文字列の最後の文字の位置です。既定値は <code>+Infinity</code> です。 <code><var>fromIndex</var> &gt;= <var>str</var>.length</code> の場合、文字列全体が検索されます。 <code><var>fromIndex</var> &lt; 0</code> の場合は、 <code>0</code> の場合と同じ動作になります。
+</dd></dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code><var>searchValue</var></code> が最後に出現した位置です。見つからなかった場合は、 <code>-1</code> になります。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>文字列における文字は左から右にインデックス化されます。一番最初の文字の位置は <code>0</code> で、一番最後の文字は <code><var>str</var>.length - 1</code> です。</p>
+
+<pre class="brush: js notranslate">'canal'.lastIndexOf('a'); // returns 3
+'canal'.lastIndexOf('a', 2); // 1 を返す
+'canal'.lastIndexOf('a', 0); // -1 を返す
+'canal'.lastIndexOf('x'); // -1 を返す
+'canal'.lastIndexOf('c', -5); // 0 を返す
+'canal'.lastIndexOf('c', 0); // 0 を返す
+'canal'.lastIndexOf(''); // 5 を返す
+'canal'.lastIndexOf('', 2); // 2 を返す
+</pre>
+
+<div class="note">
+<p><strong>注:</strong> <code>'abab'.lastIndexOf('ab', 2)</code> は <code>2</code> を返し、 <code>0</code> にはなりません。 <code><var>fromIndex</var></code> は検索の開始位置を制約するものだからです。</p>
+</div>
+
+<h3 id="Case-sensitivity" name="Case-sensitivity">大文字と小文字の区別</h3>
+
+<p><code>lastIndexOf()</code> メソッドは大文字と小文字を区別します。例えば、以下の式は <code>-1</code> を返します。</p>
+
+<pre class="brush: js notranslate">'Blue Whale, Killer Whale'.lastIndexOf('blue'); // -1 を返す
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_indexOf_and_lastIndexOf" name="Using_indexOf_and_lastIndexOf">indexOf() と lastIndexOf() の使用</h3>
+
+<p>以下の例は、 {{jsxref("String.prototype.indexOf()", "indexOf()")}} と <code>lastIndexOf()</code> を使用して文字列 "<code>Brave new world</code>" の中の値の位置を示します。</p>
+
+<pre class="brush: js notranslate">let anyString = 'Brave new world';
+
+console.log('先頭から見て最初に w が出現する位置: ' + anyString.indexOf('w'));
+// 8 と出力
+console.log('末尾から見て最初に w が出現する位置: ' + anyString.lastIndexOf('w'));
+// 10 と出力
+console.log('先頭から見た "new" の位置: ' + anyString.indexOf('new'));
+// 6 と出力
+console.log('末尾から見た "new" の位置: ' + anyString.lastIndexOf('new'));
+// 6 と出力
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.lastindexof', 'String.prototype.lastIndexOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.lastIndexOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.charAt()")}}</li>
+ <li>{{jsxref("String.prototype.indexOf()")}}</li>
+ <li>{{jsxref("String.prototype.split()")}}</li>
+ <li>{{jsxref("Array.prototype.indexOf()")}}</li>
+ <li>{{jsxref("Array.prototype.lastIndexOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/length/index.html b/files/ja/web/javascript/reference/global_objects/string/length/index.html
new file mode 100644
index 0000000000..62c3016f34
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/length/index.html
@@ -0,0 +1,103 @@
+---
+title: String length
+slug: Web/JavaScript/Reference/Global_Objects/String/length
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - Reference
+ - String
+ - String Length
+ - length
+translation_of: Web/JavaScript/Reference/Global_Objects/String/length
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>length</code></strong> プロパティは {{jsxref("String")}} オブジェクトの文字列長を UTF-16 コードユニットの数で表します。 <code>length</code> は、 string インスタンスの読み取り専用データプロパティです。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-length.html", "shorter")}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>このプロパティは、文字列内のコード単位の数を返します。 JavaScript で使用される文字列書式である {{interwiki("wikipedia", "UTF-16")}} は、ほとんどの一般の文字は単一の16ビットコードユニットで表しますが、あまり使われない文字に対しては2つのコードユニットを使用する必要があり、 <code>length</code> で返される値が文字列の実際の文字数と一致しなくなる可能性があります。</p>
+
+<p>ECMAScript 2016 (ed. 7) では最大長が <code>2^53 - 1</code> 要素と制定されました。それ以前は最大長は定まっていませんでした。 Firefox 内にある文字列の最大長は <code>2**30 - 2</code> (~1GB) です。Firefox 65 以前での最大長は <code>2**28 - 1</code> (~256MB) でした。</p>
+
+<p>空の文字列の場合、<code>length</code> は 0 になります。</p>
+
+<p>静的プロパティの <code>String.length</code> は文字列の長さとは関係なく、 <code>String</code> 関数のアリティ (ゆるく言えば、それが持つ形式的な引数の数) であり、 1 です。</p>
+
+<h2 id="Unicode">Unicode</h2>
+
+<p>`length` は文字数ではなくコードユニットの数を数えるため、文字数を知りたい場合はこのようなことをする必要があります。</p>
+
+<pre class="brush: js notranslate">function getCharacterLength (str) {
+ // The string iterator that is used here iterates over characters,
+ // not mere code units
+ return [...str].length;
+}
+
+console.log(getCharacterLength('A\uD87E\uDC04Z')); // 3
+
+// While not recommended, you could add this to each string as follows:
+
+Object.defineProperty(String.prototype, 'charLength', {
+ get () {
+ return getCharacterLength(this);
+ }
+});
+
+console.log('A\uD87E\uDC04Z'.charLength); // 3
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_usage" name="Basic_usage">基本的な使い方</h3>
+
+<pre class="brush: js notranslate">let x = 'Mozilla';
+let empty = '';
+
+console.log(x + ' の文字数:' + x.length + ' 文字(コード個数)' );
+/* "Mozilla の文字数:7 文字(コード個数)" */
+
+console.log('空文字の文字数:' + empty.length + ' 文字' );
+/* "空文字の文字数:0 文字" */</pre>
+
+<h3 id="Assigning_to_length" name="Assigning_to_length">length プロパティへの代入</h3>
+
+<pre class="brush: js notranslate">let myString = "bluebells";
+
+// Attempting to assign a value to a string's .length property has no observable effect.
+myString.length = 4;
+console.log(myString);
+// expected output: "bluebells"
+console.log(myString.length);
+// expected output: 9
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-properties-of-string-instances-length')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.length")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://downloads.teradata.com/blog/jasonstrimpel/2011/11/javascript-string-length-and-internationalizing-web-applications">JavaScript <code>String.length</code> and Internationalizing Web Applications</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/link/index.html b/files/ja/web/javascript/reference/global_objects/string/link/index.html
new file mode 100644
index 0000000000..0401a2f8f6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/link/index.html
@@ -0,0 +1,77 @@
+---
+title: String.prototype.link()
+slug: Web/JavaScript/Reference/Global_Objects/String/link
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/link
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>link()</code></strong> メソッドは、他の URL へのハイパーテキストリンクとして使用される HTML の {{HTMLElement("a")}} 要素を生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.link(<var>url</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>url</var></code></dt>
+ <dd><code>&lt;a&gt;</code> 要素の <code>href</code> 属性を指定する任意の文字列です。これは妥当な (相対または絶対) URL を、すべての <code>&amp;</code> の文字を <code>&amp;amp;</code> でエスケープし、すべての <code>"</code> の文字を <code>&amp;quot;</code> でエスケープしたものにしてください。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("a")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>link()</code> メソッドを使用すると、ハイパーリンクを表す HTML スニペットを生成することができます。返値の文字列はその後、 {{domxref("document.write()")}} または {{domxref("element.innerHTML")}} を通して文書に追加することができます。</p>
+
+<p><code>link()</code> メソッドで生成したリンクは、 <code>document</code> オブジェクトの <code>links</code> 配列の要素になります。 {{domxref("document.links")}} を参照してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="small_の使用">small() の使用</h3>
+
+<p>以下の例では文字列のメソッドを使用して、文字列の大きさを変更しています。</p>
+
+<pre class="brush: js notranslate">var hotText = 'MDN';
+var URL = 'https://developer.mozilla.org/';
+
+console.log('Click to return to ' + hotText.link(URL));
+// Click to return to &lt;a href="https://developer.mozilla.org/"&gt;MDN&lt;/a&gt;
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.link', 'String.prototype.link')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.link")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.anchor()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/localecompare/index.html b/files/ja/web/javascript/reference/global_objects/string/localecompare/index.html
new file mode 100644
index 0000000000..58a9b5d692
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/localecompare/index.html
@@ -0,0 +1,170 @@
+---
+title: String.prototype.localeCompare()
+slug: Web/JavaScript/Reference/Global_Objects/String/localeCompare
+tags:
+ - Internationalization
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/localeCompare
+---
+<div>{{JSRef("Global_Objects", "String")}}</div>
+
+<p><strong><code>localeCompare()</code></strong> メソッドは参照文字列がソート順で引数で与えられた文字列と大なり、小なり、等しいとなるかどうかを示す数値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-localecompare.html")}}</div>
+
+
+
+<p>新しい<code>locales</code> と <code>options</code> 引数によってアプリケーションはソート順で使われる言語を指定し関数の振る舞いをカスタマイズできます。古い実装では、<code>locales</code>引数と<code>options</code>引数は無視されます。使用されるローケルとソート順は完全に実装依存しています。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>referenceStr</var>.localeCompare(<var>compareString</var>[, <var>locales</var>[, <var>options</var>]])</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>compareString</var></code></dt>
+ <dd>
+ <p><code><var>referenceStr</var></code> と比較される文字列。</p>
+ </dd>
+ <dt><code><var>locales</var></code> 、 <code><var>options</var></code></dt>
+ <dd>
+ <p>これらの引数は関数の振る舞いをカスタマイズし、使用されるべきフォーマット規約の言語をアプリケーションに決めさせます。引数 <code><var>locales</var></code> 、 <code><var>options</var></code> を無視する実装においては、使用されるロケールと返却される文字列の書式は完全に実装依存となります。</p>
+
+ <p>これらのパラメーターの詳細及び使用方法については <a href="https://wiki.developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/Collator"><code>Intl.Collator()</code> コンストラクター</a> を見てください。</p>
+ </dd>
+</dl>
+
+<div>{{page('/docs/Web/JavaScript/Reference/Global_Objects/Collator', 'Parameters')}}</div>
+
+<div>
+<h3 id="戻り値">戻り値</h3>
+
+<p><code><var>referenceStr</var></code> が <code><var>compareString</var></code> より前に出現する場合は負数、 <code><var>referenceStr</var></code> が <code><var>compareString</var></code> より後に出現する場合は正数、等しい場合は 0 。</p>
+</div>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code><var>referenceStr</var></code> が <code><var>compareString</var></code> より辞書順で先に来るか、後に来るか、あるいは等しいかを示す整数を返します。</p>
+
+<ul>
+ <li><code><var>referenceStr</var></code> が <code><var>compareString</var></code> より先に出現する場合は負数</li>
+ <li><code><var>referenceStr</var></code> が <code><var>compareString</var></code> より後に出現する場合は正数</li>
+ <li>等しい場合は <code>0</code></li>
+</ul>
+
+<div class="blockIndicator warning">
+<p><strong>戻り値が厳密に -1 や 1 であると考えないように</strong></p>
+
+<p>負数と正数が結果としてどんな数値になるかはブラウザー間(及びブラウザーのバージョン間)で異なります。これは W3C の仕様が負の値か正の値かとだけ指定しているためです。ブラウザーによっては<code>-2</code> や <code>2</code> を、あるいはまた別の負の値、正の値を返却するかもしれません。</p>
+</div>
+
+<h2 id="パフォーマンス">パフォーマンス</h2>
+
+<p>巨大な配列のソートなど大量の文字列を比較する場合は {{jsxref("Global_Objects/Collator", "Intl.Collator")}} オブジェクトを作成し、 {{jsxref("Collator.prototype.compare", "compare")}} プロパティで提供される関数を利用すると良いでしょう。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Example_Using_localeCompare" name="Example:_Using_localeCompare"><code>localeCompare()</code>を使う</h3>
+
+<pre class="brush: js notranslate">// 文字 "a" は "c" は負数になります
+'a'.localeCompare('c'); // -2 や -1 (あるいはまた別の負数)
+
+// 単語 "check" はアルファベット順に "against" より後ろなので正数になります
+'check'.localeCompare('against'); // 2 や -1 (あるいはまた別の正数)
+
+// "a" と"a" は等しいので自然数 0 になります
+'a'.localeCompare('a'); // 0
+</pre>
+
+<h3 id="配列のソート">配列のソート</h3>
+
+<p><code>localeCompare()</code> は case-insensitive な配列のソートを行います。</p>
+
+<pre class="notranslate">let items = ['réservé', 'Premier', 'Cliché', 'communiqué', 'café', 'Adieu'];
+items.sort( (a, b) =&gt; a.localeCompare(b, 'fr', {ignorePunctuation: true}));
+// ['Adieu', 'café', 'Cliché', 'communiqué', 'Premier', 'réservé']
+</pre>
+
+<h3 id="Example_Checking_for_support_for_locales_and_options_arguments" name="Example:_Checking_for_support_for_locales_and_options_arguments">拡張された引数をブラウザーがサポートしているか調べる</h3>
+
+<p>引数 <code><var>locales</var></code> と <code><var>options</var></code> はすべてのプラウザでまだサポートされていません。</p>
+
+<p>実装がこれらをサポートしているか調べるため引数  <code>"i"</code> (不正な言語タグが除外される要件)を利用し、例外 {{jsxref("RangeError")}} を調べます。</p>
+
+<pre class="brush: js notranslate">function localeCompareSupportsLocales() {
+ try {
+ 'a'.localeCompare​('b', 'i');
+ } catch (e) {
+ return e​.name === 'RangeError';
+ }
+ return false;
+}
+</pre>
+
+<h3 id="Example_Using_locales" name="Example:_Using_locales"><code>locales</code>を使う</h3>
+
+<p><code>localeCompare()</code>によって得られる結果は言語間で違います。アプリケーションのユーザインターフェイスで使用される言語のソート順を得るために、 <code>locales</code>引数を使用してその言語(そしておそらくいくつかのフォールバック言語)を指定していることを確かめて下さい。:</p>
+
+<pre class="brush: js notranslate">console.log('ä'.localeCompare('z', 'de')); // 負数: ドイツ語で ä は a に分類される
+console.log('ä'.localeCompare('z', 'sv')); // 正数: スウェーデン語では ä は z の後になる
+</pre>
+
+<h3 id="Example_Using_options" name="Example:_Using_options"><code>options</code>を使う</h3>
+
+<p><code>localeCompare()</code>によって得られる結果は<code>options</code>引数を使用することによってカスタマイズできます。:</p>
+
+<pre class="brush: js notranslate">// ドイツ語では ä の base letter は a
+console.log('ä'.localeCompare('a', 'de', { sensitivity: 'base' })); // 0
+
+// スウェーデン語では ä と a は異なる base letters
+console.log('ä'.localeCompare('a', 'sv', { sensitivity: 'base' })); // a positive value
+</pre>
+
+<h3 id="数字のソート">数字のソート</h3>
+
+<pre class="brush: js notranslate">// デフォルトでは "2" &gt; "10"
+console.log(<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body">"2".localeCompare("10")</span></span></span>); // 1
+
+// オプションを使った数字
+console.log(<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body">"2".localeCompare("10", undefined, {numeric: true})</span></span></span>); // -1
+
+// ロケールタグを使った数字
+console.log(<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body">"2".localeCompare("10", "en-u-kn-true")</span></span></span>); // -1
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table>
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.localecompare', 'String.prototype.localeCompare')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sup-String.prototype.localeCompare', 'String.prototype.localeCompare')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<div>
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.String.localeCompare")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Global_Objects/Collator", "Intl.Collator")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/match/index.html b/files/ja/web/javascript/reference/global_objects/string/match/index.html
new file mode 100644
index 0000000000..df07b7ee93
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/match/index.html
@@ -0,0 +1,188 @@
+---
+title: String.prototype.match()
+slug: Web/JavaScript/Reference/Global_Objects/String/match
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - Regular Expressions
+ - String
+ - メソッド
+ - 正規表現
+translation_of: Web/JavaScript/Reference/Global_Objects/String/match
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>match()</code></strong> メソッドは、<a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a>に対する<em>文字列</em>のマッチングの結果を受け取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-match.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>str</var>.match(<var>regexp</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>regexp</var></code></dt>
+ <dd>正規表現オブジェクトです。</dd>
+ <dd><code><var>regexp</var></code> が <code>RegExp</code> ではないオブジェクトであった場合、 {{jsxref("RegExp")}} への暗黙的な変換が <code>new RegExp(<var>regexp</var>)</code> を使用して行われます。</dd>
+ <dd>一切引数を与えずに <code>match()</code> メソッドを使った場合、空の文字列 1 つを持つ {{jsxref("Array")}}、 <code>[""]</code> が得られます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>グローバル (<code>g</code>) フラグの有無によって内容が変わる {{jsxref("Array")}} を返します。一致するものが見つからなかった場合は {{jsxref("null")}} を返します。</p>
+
+<ul>
+ <li><code>g</code> フラグがあった場合は、正規表現全体に一致したすべての結果を返しますが、キャプチャグループは返しません。</li>
+ <li><code>g</code> フラグがなかった場合、最初に完全に一致したものと、それに関するキャプチャグループを返します。この場合、返される要素には下記の追加のプロパティが存在します。</li>
+</ul>
+
+<h4 id="Additional_properties" name="Additional_properties">追加のプロパティ</h4>
+
+<p>上記の説明にある通り、結果は追加のプロパティを含むことがあります。</p>
+
+<dl>
+ <dt><code>groups</code></dt>
+ <dd>名前付きキャプチャグループのオブジェクトで、キーは名前、値はキャプチャグループ、または名前付きキャプチャグループが定義されていない場合は {{jsxref("undefined")}} です。詳細は<a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges">グループと範囲</a>を見てください。</dd>
+ <dt><code>index</code></dt>
+ <dd>結果が見つかった検索のインデックスです。</dd>
+ <dt><code>input</code></dt>
+ <dd>検索された文字列のコピーです。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>正規表現が <code>g</code> フラグを含んでいない場合、 <code>str.match()</code> は {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}} と同じ結果を返します。</p>
+
+<h3 id="Other_methods" name="Other_methods">その他のメソッド</h3>
+
+<ul>
+ <li>ある文字列が正規表現 {{jsxref("RegExp")}} に一致するかどうかを知る必要がある場合は、 {{jsxref("RegExp.prototype.test()", "RegExp.test()")}} を使用してください。</li>
+ <li>一番最初に一致したものだけが欲しい場合、代わりに {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}} を使ったほうが良いかもしれません。</li>
+ <li>キャプチャグループを取得する場合でグローバルフラグが設定されていた場合は、 {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}} を使用してください。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_match" name="Using_match">match() の使用</h3>
+
+<p>以下の例において、 <code>match()</code> は '<code>Chapter</code>' とそれに続く 1 桁以上の数字、それに続く 0 回以上の小数点と数字を見つけるために使われています。</p>
+
+<p>正規表現が <code>i</code> フラグを含んでいるので、大文字と小文字の違いは無視されます。</p>
+
+<pre class="brush: js">let str = 'For more information, see Chapter 3.4.5.1';
+let re = /see (chapter \d+(\.\d)*)/i;
+let found = str.match(re);
+
+console.log(found);
+
+// logs [ 'see Chapter 3.4.5.1',
+// 'Chapter 3.4.5.1',
+// '.1',
+// index: 22,
+// input: 'For more information, see Chapter 3.4.5.1' ]
+
+// 'see Chapter 3.4.5.1' is the whole match.
+// 'Chapter 3.4.5.1' was captured by '(chapter \d+(\.\d)*)'.
+// '.1' was the last value captured by '(\.\d)'.
+// The 'index' property (22) is the zero-based index of the whole match.
+// The 'input' property is the original string that was parsed.</pre>
+
+<h3 id="Using_global_and_ignore_case_flags_with_match" name="Using_global_and_ignore_case_flags_with_match">match() での g と i フラグの使用</h3>
+
+<p>以下の例は、 g と i フラグを <code>match()</code> で使用した実例です。 <code>A</code> から <code>E</code> までと、 <code>a</code> から <code>e</code> までのすべての文字が返され、それぞれが配列の個々の要素に入ります。</p>
+
+<pre class="brush: js">let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+let regexp = /[A-E]/gi;
+let matches_array = str.match(regexp);
+
+console.log(matches_array);
+// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>メモ:</strong> {{jsxref("String.prototype.matchAll()")}} と<a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions#Advanced_Searching_With_Flags">フラグを用いた高度な検索</a>も参照してください。</p>
+</div>
+
+<h3 id="Using_named_capturing_groups" name="Using_named_capturing_groups">名前付きキャプチャグループの使用</h3>
+
+<p>名前付きキャプチャグループに対応しているブラウザーでは、次のコードは "<code>fox</code>" または "<code>cat</code>" を "<code>animal</code>" という名前のグループに入れます。</p>
+
+<pre class="brush: js">let paragraph = 'The quick brown fox jumps over the lazy dog. It barked.';
+
+let capturingRegex = /(?&lt;animal&gt;fox|cat) jumps over/;
+found = paragraph.match(capturingRegex);
+console.log(found.groups); // {animal: "fox"}
+</pre>
+
+<h3 id="Using_match_with_no_parameter" name="Using_match()_with_no_parameter">引数なしの match() の使用</h3>
+
+<pre class="brush: js">let str = "Nothing will come of nothing.";
+
+str.match(); // returns [""]</pre>
+
+<h3 id="A_non-RegExp_object_as_the_parameter" name="A_non-RegExp_object_as_the_parameter">RegExp ではないオブジェクトを引数にする</h3>
+
+<p>引数 <code><var>regexp</var></code> が文字列または数値である場合、暗黙に <code>new RegExp(<var>regexp</var>)</code> を使用して {{jsxref("RegExp")}} に変換されます。</p>
+
+<p>正の符号がついた正の数であった場合、 <code>RegExp()</code> は正の符号を無視します。</p>
+
+<pre class="brush: js">let str1 = "NaN means not a number. Infinity contains -Infinity and +Infinity in JavaScript.",
+ str2 = "My grandfather is 65 years old and My grandmother is 63 years old.",
+ str3 = "The contract was declared null and void.";
+str1.match("number"); // "number" is a string. returns ["number"]
+str1.match(NaN); // the type of NaN is the number. returns ["NaN"]
+str1.match(Infinity); // the type of Infinity is the number. returns ["Infinity"]
+str1.match(+Infinity); // returns ["Infinity"]
+str1.match(-Infinity); // returns ["-Infinity"]
+str2.match(65); // returns ["65"]
+str2.match(+65); // A number with a positive sign. returns ["65"]
+str3.match(null); // returns ["null"]</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.match', 'String.prototype.match')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<h3 id="Basic_support_for_match" name="Basic_support_for_match"><code>match()</code> の基本対応</h3>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.match")}}</p>
+
+<h3 id="Support_for_named_capture_groups" name="Support_for_named_capture_groups">名前付きキャプチャグループの対応</h3>
+
+<p>{{Compat("javascript.builtins.RegExp.named_capture_groups")}}</p>
+
+<h2 id="Firefox-specific_notes" name="Firefox-specific_notes">Firefox 特有のメモ</h2>
+
+<ul>
+ <li>標準外の第二引数 <code>flags</code> が Firefox のみで <code><var>str</var>.match(<var>regexp, flags</var>)</code> のように使用できました。 Firefox 49 以降では削除されています。</li>
+ <li>Firefox 27 において、このメソッドは ECMAScript 仕様書に合うように調整されました。 <code>match()</code> がグローバルの正規表現で呼び出された場合、 {{jsxref("RegExp.lastIndex")}} プロパティは (もしあれば) <code>0</code> にリセットされるようになりました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=501739">bug 501739</a>)。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.matchAll()")}}</li>
+ <li>{{jsxref("RegExp")}}</li>
+ <li>{{jsxref("RegExp.prototype.exec()")}}</li>
+ <li>{{jsxref("RegExp.prototype.test()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/matchall/index.html b/files/ja/web/javascript/reference/global_objects/string/matchall/index.html
new file mode 100644
index 0000000000..12332968b5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/matchall/index.html
@@ -0,0 +1,145 @@
+---
+title: String.prototype.matchAll()
+slug: Web/JavaScript/Reference/Global_Objects/String/matchAll
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - Regular Expressions
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/matchAll
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>matchAll()</code></strong> は<a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges">キャプチャグループ</a>を含む<em><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a></em>に一致するすべての<var>文字列</var>をイテレーターで返すメソッドです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-matchall.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.matchAll(<var>regexp</var>)</pre>
+
+<h3 id="Parameters">Parameters</h3>
+
+<dl>
+ <dt><code><var>regexp</var></code></dt>
+ <dd>
+ <p>正規表現オブジェクトです。</p>
+
+ <p><code>RegExp</code> でないオブジェクト <code><var>obj</var></code> が渡された場合は {{jsxref("RegExp")}} オブジェクトに <code>new RegExp(<var>obj</var>)</code> を使用して暗黙的に変換されます。</p>
+
+ <p><code>RegExp</code> オブジェクトには <code>/g</code> フラグが必須であり、ない場合は <code>TypeError</code> が発生します。</p>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators">イテレーター</a> (再起動不可能なもの)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Regexp.exec_and_matchAll" name="Regexp.exec_and_matchAll">Regexp.exec() と matchAll()</h3>
+
+<p><code>matchAll</code> が JavaScript に追加される前は、 <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec">regexp.exec</a> (および <code>/g</code> フラグ付きの正規表現) をループの中で呼び出すことですべての一致結果を取得することができました。</p>
+
+<pre class="brush: js notranslate">const regexp = RegExp('foo[a-z]*','g');
+const str = 'table football, foosball';
+let match;
+
+while ((match = regexp.exec(str)) !== null) {
+ console.log(`Found ${match[0]} start=${match.index} end=${regexp.lastIndex}.`);
+ // expected output: "Found football start=6 end=14."
+ // expected output: "Found foosball start=16 end=24."
+}</pre>
+
+<p><code>matchAll</code> が使えるようになったことで、 {{jsxref("Statements/while", "while")}} によるループと、 <code>g</code> 付きの <code>exec</code> を避けることができます。</p>
+
+<p>また代わりに <code>matchAll</code> を使うことで、 {{jsxref("Statements/for...of", "for...of")}}、 {{jsxref("Operators/Spread_syntax", "配列スプレッド", "", 1)}}、 {{jsxref("Array.from()")}} 構造と効率よく組み合わせることができます。</p>
+
+<pre class="brush: js notranslate">const regexp = RegExp('foo[a-z]*','g');
+const str = 'table football, foosball';
+const matches = str.matchAll(regexp);
+
+for (const match of matches) {
+ console.log(`Found ${match[0]} start=${match.index} end=${match.index + match[0].length}.`);
+}
+// expected output: "Found football start=6 end=14."
+// expected output: "Found foosball start=16 end=24."
+
+// matches iterator is exhausted after the for..of iteration
+// Call matchAll again to create a new iterator
+Array.from(str.matchAll(regexp), m =&gt; m[0]);
+// Array [ "football", "foosball" ]</pre>
+
+<p><code>matchAll</code> は、グローバル (<code>g</code>) フラグがない場合は例外が発生します。</p>
+
+<pre class="brush: js notranslate">const regexp = RegExp('[a-c]','');
+const str = 'abc';
+str.matchAll(regexp);
+// TypeError
+</pre>
+
+<p><code>matchAll</code> では内部的に {{jsxref("RegExp")}} オブジェクトをクローンします。そのため {{jsxref("Global_Objects/RegExp/exec", "regexp.exec()")}} とは違って文字列をスキャンした際に <code>lastIndex</code> が変わることはありません。</p>
+
+<pre class="brush: js notranslate">const regexp = RegExp('[a-c]','g');
+regexp.lastIndex = 1;
+const str = 'abc';
+Array.from(str.matchAll(regexp), m =&gt; `${regexp.lastIndex} ${m[0]}`);
+// Array [ "1 b", "1 c" ]</pre>
+
+<h3 id="Better_access_to_capturing_groups_than_String.prototype.match" name="Better_access_to_capturing_groups_than_String.prototype.match">キャプチャリンググループへのより良いアクセス(String.prototype.match()との比較)</h3>
+
+<p><code>matchAll</code> はキャプチャグループへのよりよいアクセスを実現します。</p>
+
+<p>{{jsxref("Global_Objects/String/match", "match()")}} では、グローバル <code>/g</code> フラグを使用するとキャプチャグループが無視されてしまいます。</p>
+
+<pre class="brush: js notranslate">let regexp = /t(e)(st(\d?))/g;
+let str = 'test1test2';
+
+str.match(regexp);
+// Array ['test1', 'test2']</pre>
+
+<p><code>matchAll</code> を使えば簡単にキャプチャグループにアクセスできます。</p>
+
+<pre class="brush: js notranslate">let array = [...str.matchAll(regexp)];
+
+array[0];
+// ['test1', 'e', 'st1', '1', index: 0, input: 'test1test2', length: 4]
+array[1];
+// ['test2', 'e', 'st2', '2', index: 5, input: 'test1test2', length: 4]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.matchall', 'String.prototype.matchAll')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.matchAll")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.match()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">JavaScript での正規表現の使用</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges">Capturing groups</a></li>
+ <li>{{jsxref("RegExp")}}</li>
+ <li>{{jsxref("RegExp.prototype.exec()")}}</li>
+ <li>{{jsxref("RegExp.prototype.test()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/normalize/index.html b/files/ja/web/javascript/reference/global_objects/string/normalize/index.html
new file mode 100644
index 0000000000..27fc061f8c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/normalize/index.html
@@ -0,0 +1,229 @@
+---
+title: String.prototype.normalize()
+slug: Web/JavaScript/Reference/Global_Objects/String/normalize
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+ - Unicode
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/String/normalize
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>normalize()</code></strong> メソッドは、文字列の Unicode 正規化形式を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-normalize.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><var>str</var>.normalize([<var>form</var>])</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>form</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p>Unicode 正規化形式を示す "<code>NFC</code>", "<code>NFD</code>", "<code>NFKC</code>", "<code>NFKD</code>" のうちの一つです。省略されたり {{jsxref("undefined")}} であったりした場合は "<code>NFC</code>" が使われます。</p>
+
+ <p>これらの値には以下の意味があります。</p>
+
+ <dl>
+ <dt>"<code>NFC</code>"</dt>
+ <dd>正規化形式 C。正準等価性によって分解され、再度合成される。</dd>
+ <dt>"<code>NFD</code>"</dt>
+ <dd>正規化形式 D。正準等価性によって分解される。</dd>
+ <dt>"<code>NFKC</code>"</dt>
+ <dd>正規化形式 KC。互換等価性によって分解され、正準等価性によって再度合成される。</dd>
+ <dt>"<code>NFKD</code>"</dt>
+ <dd>正規化形式 KD。互換等価性によって分解される。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた文字列の Unicode 正規化形式を含む文字列です。</p>
+
+<h3 id="Errors_thrown" name="Errors_thrown">発生するエラー</h3>
+
+<dl>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd><code>form</code> が上記で指定された値のいずれでもない場合は {{jsxref("RangeError")}} が発生します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>Unicode は個々の文字に対して、<em>コードポイント</em>と呼ばれる固有の値を割り当てています。例えば、 "<code>A</code>" のコードポイントは U+0041 が割り当てられています。しかし、複数のコードポイントや、コードポイントの一連の並びが、同一の抽象文字を表すことがあります。 — 例えば、 "<code>ñ</code>" の文字は以下のいずれかで表すことができます。</p>
+
+<ul>
+ <li>単一のコードポイント U+00F1</li>
+ <li>"<code>n</code>" のコードポイント (U+006E) に続いて組み合わせチルダのコードポイント (U+0303)</li>
+</ul>
+
+<pre class="brush: js">let string1 = '\u00F1';
+let string2 = '\u006E\u0303';
+
+console.log(string1); // ñ
+console.log(string2); // ñ
+</pre>
+
+<p>しかし、コードポイントが異なるため、文字列の比較ではこれらが同じものとして扱われません。また、それぞれのコードポイントの数が異なるため、長さすら異なります。</p>
+
+<pre class="brush: js">let string1 = '\u00F1'; // ñ
+let string2 = '\u006E\u0303'; // ñ
+
+console.log(string1 === string2); // false
+console.log(string1.length); // 1
+console.log(string2.length); // 2
+</pre>
+
+<p><code>normalize()</code> メソッドは、同じ文字を表すコードポイントのすべての並びを共通の正規化された形式に文字列を変換することで、この問題を解決するのに役立ちます。正規化の方法は主に二つがあり、一つは<strong>正準等価性</strong>に、もう一つは<strong>互換等価性</strong>に基づきます。</p>
+
+<h3 id="Canonical_equivalence_normalization" name="Canonical_equivalence_normalization">正準等価性による正規化</h3>
+
+<p>Unicode では、二つのコードポイントの並びが同じ抽象文字を表していれば、正準等価性があるとされ、常に同じ外見表示と動作をするべきです (例えば、並べ替えで常に同じものとして扱うべきです)。</p>
+
+<p><code>normalize()</code> を "<code>NFD</code>" または "<code>NFC</code>" の引数で使用することで、すべてが正準等価な文字列となる文字列の形を生成することができます。以下の例では、文字 "<code>ñ</code>" の二つの表現を正規化しています。</p>
+
+<pre class="brush: js">let string1 = '\u00F1'; // ñ
+let string2 = '\u006E\u0303'; // ñ
+
+string1 = string1.normalize('NFD');
+string2 = string2.normalize('NFD');
+
+console.log(string1 === string2); // true
+console.log(string1.length); // 2
+console.log(string2.length); // 2
+</pre>
+
+<h4 id="Composed_and_decomposed_forms" name="Composed_and_decomposed_forms">合成形と分解形</h4>
+
+<p>"<code>NFD</code>" で正規化された形の長さが <code>2</code> であることに注意してください。 "<code>NFD</code>" は<strong>分解</strong>正規形を生成するからであり、これは単一のコードポイントを複数のコードポイントの組み合わせに分解します。 "<code>ñ</code>" の分解正規形は "<code>\u006E\u0303</code>" です。</p>
+
+<p>"<code>NFC</code>" を指定すると<strong>合成</strong>正規形を取得することができ、これは複数のコードポイントを可能な限り単一のコードポイントで置き換えます。 "<code>ñ</code>" の合成正規形は "<code>\u00F1</code>" です。</p>
+
+<pre class="brush: js">let string1 = '\u00F1'; // ñ
+let string2 = '\u006E\u0303'; // ñ
+
+string1 = string1.normalize('NFC');
+string2 = string2.normalize('NFC');
+
+console.log(string1 === string2); // true
+console.log(string1.length); // 1
+console.log(string2.length); // 1
+console.log(string2.codePointAt(0).toString(16)); // f1</pre>
+
+<h3 id="Compatibility_normalization" name="Compatibility_normalization">互換正規形</h3>
+
+<p>Unicode では、二つのコードポイントの並びが、同じ抽象文字を表す場合に互換性があり、場合によっては同じ文字として扱われるべきですが、すべてのアプリケーションでそうするべきとは限らないことがあります。</p>
+
+<p>すべての正準等価な並びは互換といえますが、逆はそうとはいえません。</p>
+
+<p>例を挙げます。</p>
+
+<ul>
+ <li>コードポイント U+FB00 は{{Glossary("ligature", "合字")}} "<code>ff</code>" を表します。これは二つの連続したコードポイント U+0066 ("<code>ff</code>") と互換性があります。</li>
+ <li>コードポイント U+24B9 は、記号 <code>"Ⓓ"</code> を表します。これは U+0044 のコードポイント ("<code>D</code>") と互換性があります。</li>
+</ul>
+
+<p>場面によっては (並べ替えなど) 同じものとしてみなされるべきであり、その他の場合は (外見など) 同じとするべきではないので、これらは厳密には等しくありません。</p>
+
+<p><code>normalize()</code> を "<code>NFKD</code>" または "<code>NFKC</code>" を引数にして使用することで、互換等価な文字列が同じになる形の文字列を生成することができます。</p>
+
+<pre class="brush: js">let string1 = '\uFB00';
+let string2 = '\u0066\u0066';
+
+console.log(string1); // ff
+console.log(string2); // ff
+console.log(string1 === string2); // false
+console.log(string1.length); // 1
+console.log(string2.length); // 2
+
+string1 = string1.normalize('NFKD');
+string2 = string2.normalize('NFKD');
+
+console.log(string1); // ff &lt;- 外見が変わった
+console.log(string2); // ff
+console.log(string1 === string2); // true
+console.log(string1.length); // 2
+console.log(string2.length); // 2
+</pre>
+
+<p>互換等価な正規化を適用する際には、正規化された形式がすべてのアプリケーションに適しているとは限らないので、文字列で何をしようとしているのかを考慮することが重要です。上の例では、ユーザーが "<code>f</code>" を検索すれば文字列を見つけることができるので、正規化は検索に適しています。しかし、視覚的な表現が異なるため、表示には適切ではないかもしれません。</p>
+
+<p>正準等価な正規化のように、分解形または合成形の互換等価形式は、それぞれ "<code>NFKD</code>" または "<code>NFKC</code>" を渡すことで問い合わせることができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_normalize" name="Using_normalize"><code>normalize()</code> を使う</h3>
+
+<pre class="brush: js">// 最初の文字列
+
+// U+1E9B: LATIN SMALL LETTER LONG S WITH DOT ABOVE
+// U+0323: COMBINING DOT BELOW
+let str = '\u1E9B\u0323';
+
+
+// Canonically-composed form (NFC)
+
+// U+1E9B: LATIN SMALL LETTER LONG S WITH DOT ABOVE
+// U+0323: COMBINING DOT BELOW
+str.normalize('NFC'); // '\u1E9B\u0323'
+str.normalize(); // same as above
+
+
+// Canonically-decomposed form (NFD)
+
+// U+017F: LATIN SMALL LETTER LONG S
+// U+0323: COMBINING DOT BELOW
+// U+0307: COMBINING DOT ABOVE
+str.normalize('NFD'); // '\u017F\u0323\u0307'
+
+
+// Compatibly-composed (NFKC)
+
+// U+1E69: LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+str.normalize('NFKC'); // '\u1E69'
+
+
+// Compatibly-decomposed (NFKD)
+
+// U+0073: LATIN SMALL LETTER S
+// U+0323: COMBINING DOT BELOW
+// U+0307: COMBINING DOT ABOVE
+str.normalize('NFKD'); // '\u0073\u0323\u0307'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.normalize', 'String.prototype.normalize')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.normalize")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.unicode.org/reports/tr15/">Unicode Standard Annex #15, Unicode Normalization Forms</a></li>
+ <li><a href="http://en.wikipedia.org/wiki/Unicode_equivalence">Unicode equivalence</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/padend/index.html b/files/ja/web/javascript/reference/global_objects/string/padend/index.html
new file mode 100644
index 0000000000..feb714c3ca
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/padend/index.html
@@ -0,0 +1,71 @@
+---
+title: String.prototype.padEnd()
+slug: Web/JavaScript/Reference/Global_Objects/String/padEnd
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/padEnd
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>padEnd()</code></strong> メソッドは、結果の文字列が指定した長さになるように、現在の文字列を他の文字列で (必要に応じて繰り返して) 延長します。延長は、現在の文字列の末尾から適用されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-padend.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.padEnd(<var>targetLength</var> [, <var>padString</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>targetLength</var></code></dt>
+ <dd>現在の文字列の延長後に返される文字列の長さです。この値が現在の文字列の長さよりも短い場合、現在の文字列が返されます。</dd>
+ <dt><code><var>padString</var></code> {{optional_inline}}</dt>
+ <dd>現在の文字列を延長するための文字列です。この文字列が <code><var>targetLength</var></code> に収まらないほど長い場合は、左書きの言語では最も左の部分が、右書きの言語では最も右の部分が使用され、残りは切り捨てられます。この引数の既定値は、 "<code> </code>" (<code>U+0020</code> 空白) です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("String")}} で、 <code><var>targetLength</var></code> で指定された長さにするために、 <code><var>padString</var></code> を現在の <code><var>str</var></code> の末尾に適用したものです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_padEnd" name="Using_padEnd">padEnd の使用</h3>
+
+<pre class="brush: js notranslate">'abc'.padEnd(10); // "abc       "
+'abc'.padEnd(10, "foo"); // "abcfoofoof"
+'abc'.padEnd(6, "123456"); // "abc123"
+'abc'.padEnd(1); // "abc"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.padend', 'String.prototype.padEnd')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.padEnd")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.padStart()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/padstart/index.html b/files/ja/web/javascript/reference/global_objects/string/padstart/index.html
new file mode 100644
index 0000000000..7aca37f9a2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/padstart/index.html
@@ -0,0 +1,88 @@
+---
+title: String.prototype.padStart()
+slug: Web/JavaScript/Reference/Global_Objects/String/padStart
+tags:
+ - Advanced
+ - Intermediate
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/padStart
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>padStart()</code></strong> メソッドは、結果の文字列が指定した長さになるように、現在の文字列を他の文字列で (必要に応じて繰り返して) 延長します。</span>延長は、現在の文字列の先頭から適用されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-padstart.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.padStart(<var>targetLength</var> [, <var>padString</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>targetLength</var></code></dt>
+ <dd>現在の <code><var>str</var></code> の延長後に返される文字列の長さです。この値が <code><var>str.</var>length</code> よりも短い場合、 <code><var>str</var></code> がそのまま返されます。</dd>
+ <dt><code><var>padString</var></code> {{optional_inline}}</dt>
+ <dd>現在の <code><var>str</var></code> を延長するための文字列です。 <code><var>padString</var></code> が <code><var>targetLength</var></code> より長い場合は、右からその長さ分が切り捨てられます。この引数の既定値は、 "<code> </code>" (<code>U+0020 'SPACE'</code>) です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>現在の文字列の先頭に <code><var>padString</var></code> が適用された、指定された <code><var>targetLength</var></code> の長さの {{jsxref("String")}} です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_examples" name="Basic_examples">基本的な例</h3>
+
+<pre class="brush: js notranslate">'abc'.padStart(10); // " abc"
+'abc'.padStart(10, "foo"); // "foofoofabc"
+'abc'.padStart(6,"123465"); // "123abc"
+'abc'.padStart(8, "0"); // "00000abc"
+'abc'.padStart(1); // "abc"</pre>
+
+<h3 id="Fixed_width_string_number_conversion" name="Fixed_width_string_number_conversion">数値を固定長文字列へ変換</h3>
+
+<pre class="brush: js notranslate">// Javascript version of: (unsigned)
+// printf "%0*d" width num
+function leftFillNum(num, targetLength) {
+ return num.toString().padStart(targetLength, 0);
+}
+
+const num = 123;
+console.log(leftFillNum(num, 5));
+// expected output: "00123"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.padstart', 'String.prototype.padStart')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.padStart")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.padEnd()")}}</li>
+ <li><a href="https://github.com/uxitten/polyfill/blob/master/string.polyfill.js">A polyfill</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/quote/index.html b/files/ja/web/javascript/reference/global_objects/string/quote/index.html
new file mode 100644
index 0000000000..2a074faf32
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/quote/index.html
@@ -0,0 +1,75 @@
+---
+title: String.prototype.quote()
+slug: Web/JavaScript/Reference/Global_Objects/String/quote
+tags:
+ - String
+ - String Methods
+translation_of: Archive/Web/JavaScript/String.quote
+---
+<div>{{JSRef}} {{obsolete_header("37")}} {{non-standard_header}}</div>
+
+<p>特殊文字をエスケープシーケンスで置換しダブル・クォーテーション(<code>"</code>)でラップした文字列のコピーを返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><em>str</em>.quote()</code></pre>
+
+<h3 id="Return_value">Return value</h3>
+
+<p>A new string representing the original string wrapped in double-quotes, with any special characters escaped.</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>In the table below thequote()method replaces any special characters and wraps the strings in double-quotes. Also note the third column where a wrapped {{jsxref("Global_Objects/eval", "eval()")}} evaluates the escape sequences again.</p>
+
+<table class="fullwidth-table" style="width: 100%;">
+ <thead>
+ <tr>
+ <th class="header" scope="col"><code>str</code></th>
+ <th class="header" scope="col"><code>str.quote()</code></th>
+ <th class="header" scope="col"><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/eval" title="JavaScript/Reference/Global_Objects/eval">eval</a>( str.quote() )</code></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>Hello world!</code></td>
+ <td><code>"Hello world!"</code></td>
+ <td><code>Hello world!</code></td>
+ </tr>
+ <tr>
+ <td><code>Hello<br>
+         world!</code></td>
+ <td><code>"Hello\n\tworld!"</code></td>
+ <td><code>Hello<br>
+         world!</code></td>
+ </tr>
+ <tr>
+ <td><code>" \ — '</code></td>
+ <td><code>"\" \\ \u2014 '"</code></td>
+ <td><code>" \ — '</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="仕様">仕様</h2>
+
+<p>Not part of any standard. Implemented in JavaScript 1.3.</p>
+
+<h2 id="ポリフィル">ポリフィル</h2>
+
+<pre class="syntaxbox"><code>if (!String.prototype.quote)
+ String.prototype.quote = function(){
+  return JSON.stringify( this ); // since IE8
+</code> }</pre>
+
+<h2 id="ブラウザ互換性情報">ブラウザ互換性情報</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.String.quote")}}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("JSON.stringify()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/raw/index.html b/files/ja/web/javascript/reference/global_objects/string/raw/index.html
new file mode 100644
index 0000000000..520def68d3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/raw/index.html
@@ -0,0 +1,118 @@
+---
+title: String.raw()
+slug: Web/JavaScript/Reference/Global_Objects/String/raw
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/raw
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>String.raw()</code></strong> 静的メソッドは、<a href="/ja/docs/Web/JavaScript/Reference/template_strings">文字列リテラル</a>のためのタグ関数です。この関数は Python の文字列リテラルの <code>r</code> 接頭辞や C# の文字列リテラルの <code>@</code> 接頭辞に似ています (それでも違いがあります。<a href="https://bugs.chromium.org/p/v8/issues/detail?id=5016">この問題に関するスレッド</a>の説明を参照してください)。この関数は、テンプレート文字列の生の文字列形式を取得するために使用されます。つまり、置換 (例えば <code>${foo}</code>) は行われますが、エスケープ (例えば <code>\n</code>) は実行されません。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-raw.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code>String.raw(<var>callSite</var>, <var>...substitutions</var>)
+
+String.raw`<var>templateString</var>`
+</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callSite</var></code></dt>
+ <dd><code>{ raw: 'string' }</code> のような、よく形成されたテンプレート呼び出しサイトオブジェクトです。</dd>
+ <dt><code><var>...substitutions</var></code></dt>
+ <dd>置換される値が含まれます。</dd>
+ <dt><code><var>templateString</var></code></dt>
+ <dd>{{jsxref("template_strings", "テンプレート文字列", "", 1)}}です。必要に応じて置換します (<code>${...}</code>)。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられたテンプレート文字列の生の文字列形式です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<dl>
+ <dt>{{jsxref("TypeError")}}</dt>
+ <dd>第1 引数が正常に形成されていないオブジェクトの場合、{{jsxref("TypeError")}} が発生します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>ほとんどの場合、<code>String.raw()</code> はテンプレート文字列とともに使用されます。上記の最初の構文は、JavaScript エンジンが (他の<a href="/ja/docs/Web/JavaScript/Reference/template_strings#Tagged_template_strings">タグ関数</a>のように) 適切な引数で呼び出すので、実際に使用されます。</p>
+
+<p><code>String.raw()</code> はテンプレート文字列の唯一の組込みタグ関数です。既定のテンプレート関数のように動作し、連結を行います。通常の JavaScript コードで再実装することができます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_String.raw" name="Using_String.raw">String.raw() の使用</h3>
+
+<pre class="brush: js notranslate">String.raw`Hi\n${2+3}!`;
+// 'Hi\n5!', the character after 'Hi'
+// is not a newline character,
+// '\' and 'n' are two characters.
+
+String.raw`Hi\u000A!`;
+// 'Hi\u000A!', same here, this time we will get the
+// \, u, 0, 0, 0, A, 6 characters.
+// All kinds of escape characters will be ineffective
+// and backslashes will be present in the output string.
+// You can confirm this by checking the .length property
+// of the string.
+
+let name = 'Bob';
+String.raw`Hi\n${name}!`;
+// 'Hi\nBob!', substitutions are processed.
+
+// Normally you would not call String.raw() as a function,
+// but to simulate `foo${2 + 3}bar${'Java' + 'Script'}baz` you can do:
+String.raw({
+ raw: ['foo', 'bar', 'baz']
+}, 2 + 3, 'Java' + 'Script'); // 'foo5barJavaScriptbaz'
+// Notice the first argument is an object with a 'raw' property,
+// whose value is an iterable representing the separated strings
+// in the template literal.
+// The rest of the arguments are the substitutions.
+
+// The first argument’s 'raw' value can be any iterable, even a string!
+// For example, 'test' is treated as ['t', 'e', 's', 't'].
+// The following is equivalent to
+// `t${0}e${1}s${2}t`:
+String.raw({ raw: 'test' }, 0, 1, 2); // 't0e1s2t'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.raw', 'String.raw')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.raw")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/template_strings">テンプレート文字列</a></li>
+ <li>{{jsxref("String")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar">字句文法</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/repeat/index.html b/files/ja/web/javascript/reference/global_objects/string/repeat/index.html
new file mode 100644
index 0000000000..4304fd9786
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/repeat/index.html
@@ -0,0 +1,128 @@
+---
+title: String.prototype.repeat()
+slug: Web/JavaScript/Reference/Global_Objects/String/repeat
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/repeat
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>repeat()</code></strong> メソッドは、呼び出し元の文字列を指定した数だけコピーして結合した新しい文字列を構築して返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-repeat.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.repeat(<var>count</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>count</var></code></dt>
+ <dd><code>0</code> から{{jsxref("Global_Objects/Number/POSITIVE_INFINITY", "正の無限大")}}までの間の整数で、文字列を繰り返す数を示します。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた文字列の指定した回数分のコピーを含む新しい文字列です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li>{{jsxref("Errors/Negative_repetition_count", "RangeError")}}: 繰り返し数は非負数でなければなりません。</li>
+ <li>{{jsxref("Errors/Resulting_string_too_large", "RangeError")}}: 繰り返し数は無限大よりも小さく、文字列の最大長を超えないようにしなければなりません。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_repeat" name="Using_repeat">repeat() の使用</h3>
+
+<pre class="brush: js notranslate">'abc'.repeat(-1) // RangeError
+'abc'.repeat(0) // ''
+'abc'.repeat(1) // 'abc'
+'abc'.repeat(2) // 'abcabc'
+'abc'.repeat(3.5) // 'abcabcabc' (小数は丸められ、整数の結果が返されます)
+'abc'.repeat(1/0) // RangeError
+
+({ toString: () =&gt; 'abc', repeat: String.prototype.repeat }).repeat(2)
+// 'abcabc' (repeat() は汎用メソッドです)
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>このメソッドは ECMAScript 2015 仕様で追加されたため、まだすべての JavaScript の実装で使用できるわけではありません。しかし、次のスニペットで <code>String.prototype.repeat()</code> を代替することができます。</p>
+
+<pre class="notranslate">if (!String.prototype.repeat) {
+ String.prototype.repeat = function(count) {
+ 'use strict';
+ if (this == null)
+ throw new TypeError('can\'t convert ' + this + ' to object');
+
+ var str = '' + this;
+ // To convert string to integer.
+ count = +count;
+ // Check NaN
+ if (count != count)
+ count = 0;
+
+ if (count &lt; 0)
+ throw new RangeError('repeat count must be non-negative');
+
+ if (count == Infinity)
+ throw new RangeError('repeat count must be less than infinity');
+
+ count = Math.floor(count);
+ if (str.length == 0 || count == 0)
+ return '';
+
+ // Ensuring count is a 31-bit integer allows us to heavily optimize the
+ // main part. But anyway, most current (August 2014) browsers can't handle
+ // strings 1 &lt;&lt; 28 chars or longer, so:
+ if (str.length * count &gt;= 1 &lt;&lt; 28)
+ throw new RangeError('repeat count must not overflow maximum string size');
+
+ var maxCount = str.length * count;
+ count = Math.floor(Math.log(count) / Math.log(2));
+ while (count) {
+ str += str;
+ count--;
+ }
+ str += str.substring(0, maxCount - str.length);
+ return str;
+ }
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.repeat")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.concat()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/replace/index.html b/files/ja/web/javascript/reference/global_objects/string/replace/index.html
new file mode 100644
index 0000000000..4145550f59
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/replace/index.html
@@ -0,0 +1,296 @@
+---
+title: String.prototype.replace()
+slug: Web/JavaScript/Reference/Global_Objects/String/replace
+tags:
+ - Expressions
+ - JavaScript
+ - Methods
+ - Prototype
+ - Reference
+ - Regular
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/replace
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>replace()</code></strong> メソッドは、<code>pattern</code> にマッチした文字列の一部またはすべてを <code>replacement</code> で置き換えた新しい文字列を返します。</span><code>pattern</code> は文字列または {{jsxref("RegExp")}}、<code>replacement</code> は文字列または各マッチで呼び出される関数です。<code>pattern</code> が文字列の場合、最初に一致した箇所のみを置き換えます。</p>
+
+<p>元の文字列は変更されません。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-replace.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>str</var>.replace(<var>regexp</var>|<var>substr</var>, <var>newSubstr</var>|<var>function</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>regexp</code> (pattern)</dt>
+ <dd>{{jsxref("RegExp")}} オブジェクト、またはリテラルです。マッチすると、第2引数の <code>newSubStr</code> または <code>function</code> の戻り値と置き換えられます。</dd>
+ <dt><code>substr</code> (pattern)</dt>
+ <dd><code>newSubStr</code> に置き換えられる {{jsxref("String")}} です。これは逐次的な文字列として扱われ、正規表現としては解釈されません。最初に出てきたものだけが置き換えられます。</dd>
+ <dt><code>newSubStr</code> (replacement)</dt>
+ <dd><code>regexp</code> や <code>substr</code> パラメーターで指定される部分文字列を置換する {{jsxref("String")}} です。数々の特別な置換パターンがサポートされます。下記の「{{anch("Specifying_a_string_as_a_parameter", "引数としての文字列の指定")}}」節を見てください。</dd>
+ <dt><code>function</code> (replacement)</dt>
+ <dd>新しい部分文字列を生成するために実行される関数で、<code>regexp</code> や <code>substr</code> でマッチしたものを置き換えるのに使われます。この関数に渡される引数は下記の「{{anch("Specifying_a_function_as_a_parameter", "引数としての関数の指定")}}」で述べられています。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>パターンにマッチした部分文字列の一部またはすべてを置換文字列で置き換えた新しい文字列です。</p>
+
+<h2 id="Description" name="Description">詳細</h2>
+
+<p>このメソッドは、それを呼び出した {{jsxref("String")}} オブジェクトを変化させません。戻り値として新しい文字列を返します。</p>
+
+<p>グローバルな検索と置換を動作させるためには、正規表現に <code>g</code> フラグを含める必要があります。</p>
+
+<h3 id="Specifying_a_string_as_a_parameter" name="Specifying_a_string_as_a_parameter">引数としての文字列の指定</h3>
+
+<p>置換文字列には以下の特殊な置換パターンを含めることができます。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">パターン</td>
+ <td class="header">挿入</td>
+ </tr>
+ <tr>
+ <td><code>$$</code></td>
+ <td>"$" を挿入します。</td>
+ </tr>
+ <tr>
+ <td><code>$&amp;</code></td>
+ <td>マッチした部分文字列を挿入します。</td>
+ </tr>
+ <tr>
+ <td><code>$`</code></td>
+ <td>マッチした部分文字列の直前の文字列の部分を挿入します。</td>
+ </tr>
+ <tr>
+ <td><code>$'</code></td>
+ <td>マッチした部分文字列の直後の文字列の部分を挿入します。</td>
+ </tr>
+ <tr>
+ <td><code>$<em>n</em></code></td>
+ <td><code><em>n</em></code> は 100 未満の正の整数です。第一引数が {{jsxref("RegExp")}} オブジェクトだった場合に <em>n</em> 番目の括弧でキャプチャされた文字列を挿入します。1, 2, ... でインデックスされることに注意してください。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Specifying_a_function_as_a_parameter" name="Specifying_a_function_as_a_parameter">引数としての関数の指定</h3>
+
+<p>第二引数として関数を指定することができます。このとき、関数はマッチが完了された後に実行されます。関数呼び出しの結果(返り値)は、置換文字列として使われます(注記: 上記の特殊な置換パターンはこの場合には適用<strong>されません</strong>)。第一引数の正規表現がグローバルだと、置換されるべきマッチごとに関数が複数回実行されうることに注意してください。</p>
+
+<p>関数に与えられる引数は次の通りです。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">名前</td>
+ <td class="header">与えられる値</td>
+ </tr>
+ <tr>
+ <td><code>match</code></td>
+ <td>マッチした部分文字列(上記の <code>$&amp;</code> に対応)です。</td>
+ </tr>
+ <tr>
+ <td><code>p1, p2, ...</code></td>
+ <td><code>replace()</code> の第一引数が {{jsxref("RegExp")}} オブジェクトだった場合、<em>n</em> 番目の括弧でキャプチャされたグループの文字列(上記の <code>$1</code>, <code>$2</code>, などに対応)です。例えば <code>/(\a+)(\b+)/</code> が与えられた場合、<code>p1</code> は <code>\a+</code> に対するマッチ、<code>p2</code> は <code>\b+</code> に対するマッチとなります。</td>
+ </tr>
+ <tr>
+ <td><code>offset</code></td>
+ <td>マッチした部分文字列の、分析中の文字列全体の中でのオフセットです(例えば、文字列全体が <code>'abcd'</code> で、マッチした部分文字列が <code>'bc'</code> ならば、この引数は 1 となります)。</td>
+ </tr>
+ <tr>
+ <td><code>string</code></td>
+ <td>分析中の文字列全体です。</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>(引数の正確な個数は、第一引数が {{jsxref("RegExp")}} オブジェクトかどうか、そうならばさらに括弧でキャプチャされるサブマッチがいくつ指定されているかに依ります。)</p>
+
+<p>以下の例は <code>newString</code> に <code>'abc - 12345 - #$*%'</code> をセットします。</p>
+
+<pre class="brush: js">function replacer(match, p1, p2, p3, offset, string) {
+ // p1 is nondigits, p2 digits, and p3 non-alphanumerics
+ return [p1, p2, p3].join(' - ');
+}
+var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
+console.log(newString); // abc - 12345 - #$*%
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Defining_the_regular_expression_in_replace()" name="Defining_the_regular_expression_in_replace()"><code>replace()</code> で正規表現を利用する</h3>
+
+<p>以下の例では、<code>replace</code> メソッドで正規表現を利用しています。</p>
+
+<pre class="brush: js">var str = 'Twas the night before Xmas...';
+var newstr = str.replace(/xmas/i, 'Christmas');
+console.log(newstr); // Twas the night before Christmas...
+</pre>
+
+<h3 id="Using_global_and_ignore_with_replace()" name="Using_global_and_ignore_with_replace()"><code>ignore</code> フラグと <code>global</code> フラグの利用</h3>
+
+<p>グローバルな置換は正規表現だけで行われます。以下の例では、正規表現で大文字と小文字の違いを無視するフラグ (<code>i</code>) とグローバルマッチのフラグ (<code>g</code>)を利用し <code>replace()</code> は'apples'が出てくるたびに'oranges'に置換します。</p>
+
+<pre class="brush: js">var re = /apples/gi;
+var str = 'Apples are round, and apples are juicy.';
+var newstr = str.replace(re, 'oranges');
+console.log(newstr); // oranges are round, and oranges are juicy.
+</pre>
+
+<p>この出力は 'oranges are round, and oranges are juicy' となります。</p>
+
+<h3 id="Switching_words_in_a_string" name="Switching_words_in_a_string">文字列内の単語の交換</h3>
+
+<p>文字列内の単語の位置を交換します。<code>$1</code> と <code>$2</code> を置き換えるパターンを使用しています。</p>
+
+<pre class="brush: js">var re = /(\w+)\s(\w+)/;
+var str = 'John Smith';
+var newstr = str.replace(re, '$2, $1');
+console.log(newstr); // Smith, John
+</pre>
+
+<p>この出力は 'Smith, John' となります。</p>
+
+<h3 id="Using_an_inline_function_that_modifies_the_matched_characters" name="Using_an_inline_function_that_modifies_the_matched_characters">マッチした文字を修正するインライン関数の使用</h3>
+
+<p>次の例では、文字列内に出現する大文字のすべては小文字に変換され、ハイフンがマッチした位置の直前に挿入されます。ここで重要なことは、追加の操作は、マッチしたアイテムが置換されて戻される前に必要とされるということです。</p>
+
+<p>置換する関数はマッチした断片をその関数の引数として適用します。そして、その引数を大文字小文字変形し、戻り値の直前にハイフンを連結します。</p>
+
+<pre class="brush: js">function styleHyphenFormat(propertyName) {
+ function upperToHyphenLower(match, offset, string) {
+ return (offset &gt; 0 ? '-' : '') + match.toLowerCase();
+ }
+ return propertyName.replace(/[A-Z]/g, upperToHyphenLower);
+}
+</pre>
+
+<p><code>styleHyphenFormat('borderTop')</code>を入力すると 'border-top'を返します。</p>
+
+<p>最終的な置換が作成される前にサブマッチの<em>結果</em> をさらに変形したい場合、関数を使わなくてはなりません。これは、<code>toLowerCase()</code> メソッドの前にマッチを評価することを強制します。関数無しにこれをマッチに使用した場合、その <code>toLowerCase()</code> メソッドは効果がないでしょう。</p>
+
+<pre class="brush:js">var newString = propertyName.replace(/[A-Z]/, '-' + '$&amp;'.toLowerCase()); // 動作しないでしょう</pre>
+
+<p>これは、<code>'$&amp;'.toLowerCase()</code> は、まずその文字がパターンとして使用される前に (<code>'$&amp;'</code> という結果である ) 文字列リテラルとして評価されるだろうからです。</p>
+
+<h3 id="Replacing_a_Fahrenheit_degree_with_its_Celsius_equivalent" name="Replacing_a_Fahrenheit_degree_with_its_Celsius_equivalent">華氏温度を同等の摂氏温度と置き換える</h3>
+
+<p>以下の例は、ある華氏温度をそれと同等の摂氏温度と置き換えます。その華氏温度は F で終わる数でなければなりません。その関数は C で終わる摂氏を返します。例えば、入力される数が 212F である場合、その関数は 100C を返します。入力される数が 0F であった場合、その関数は -17.77777777777778C を返します。</p>
+
+<p>その正規表現 <code>test</code> は、任意の数が F で終わっているかチェックします。華氏温度の数は、関数の 第二引数 <code>p1</code> を通して、その関数にアクセスできます。その関数は文字列内で渡された華氏温度をベースとした摂氏の数を <code>f2c</code> にセットします。それから、<code>f2c</code> は、摂氏の数を返します。この関数は Perl の s///e フラグ {{訳注('s は substitute (置換する)の略。e は evaluate(評価する)の略です。詳細は <a href="http://perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operators" title="perlop - perldoc.perl.org">perlop の Regexp Quote-Like Operators の項</a>(<a href="http://perldoc.jp/docs/perl/perlop.pod#Regexp32Quote-Like32Operators" title="perlop - Perl の演算子と優先順位 - perldoc.jp - #正規表現のクォート風の演算子">※perldoc.jp による日本語訳</a>)を参照してください。')}} と似ています。</p>
+
+<pre class="brush: js">function f2c(x) {
+ function convert(str, p1, offset, s) {
+ return ((p1 - 32) * 5/9) + 'C';
+ }
+ var s = String(x);
+ var test = /(-?\d+(?:\.\d*)?)F\b/g;
+ return s.replace(test, convert);
+}
+</pre>
+
+<h3 id="Use_an_inline_function_with_a_regular_expression_to_avoid_for_loops" name="Use_an_inline_function_with_a_regular_expression_to_avoid_for_loops">インライン関数と正規表現で <code>for</code> ループを回避する</h3>
+
+<p>次の例では、あるパターンを持つ文字列を解析してオブジェクトの配列に変換します。</p>
+
+<p><strong>入力:</strong></p>
+
+<p><code>x</code>, <code>-</code>, <code>_</code> からなる文字列です。</p>
+
+<pre class="line-numbers language-html"><code class="language-html">x-x_
+x---x---x---x---
+x-xxx-xx-x-
+x_x_x___x___x___</code></pre>
+
+<p><strong>出力ルール:</strong></p>
+
+<p><code>'x'</code> は <code>'on'</code> への切り替えを、<code>'-'</code> (ハイフン) は <code>'off'</code> への切り替えを表すとし、<code>'_'</code> (アンダースコア) は x の後に続いて <code>'on'</code> の長さを表すものとします。on と off の切り替わりをオブジェクトの配列で返します。</p>
+
+<pre class="brush: json">[
+ { on: true, length: 1 }, // 一番最初の "x" で on になります。
+ { on: false, length: 1 }, // その次の "-" で off になります。
+ { on: true, length: 2 } // その次の "x" で on になり、"_" が一つ続いているため、長さは 2 になります。
+ ...
+]
+</pre>
+
+<p><strong>スニペット</strong><strong>:</strong></p>
+
+<pre class="brush: js">var str = 'x-x_';
+var retArr = [];
+str.replace(/(x_*)|(-)/g, function(match, p1, p2) {
+ if (p1) { retArr.push({ on: true, length: p1.length }); }
+ if (p2) { retArr.push({ on: false, length: 1 }); }
+});
+
+console.log(retArr);
+</pre>
+
+<p>このスニペットは <code>for</code> を使わずに、上記の入出力ルールを満たす 3 オブジェクトからなる配列を生成します。</p>
+
+<h2 id="See_also" name="See_also">仕様</h2>
+
+<ul>
+</ul>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES3')}}</td>
+ <td>{{Spec2('ES3')}}</td>
+ <td>初期定義。JavaScript 1.2 で実装される。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-15.5.4.11', 'String.prototype.replace')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-string.prototype.replace', 'String.prototype.replace')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.replace', 'String.prototype.replace')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.String.replace")}}</p>
+
+<h2 id="Firefox-specific_notes" name="Firefox-specific_notes">Firefox 固有の注記</h2>
+
+<ul>
+ <li><code>flags</code> は Gecko のみで利用できる非標準の第3引数です : <var>str</var>.replace(<var>regexp</var>|<var>substr</var>, <var>newSubStr</var>|<var>function, flags</var>)</li>
+ <li>Gecko 27 {{geckoRelease(27)}} 以降、このメソッドは ECMAScript 標準に準拠するために補正されました。<code>replace()</code> がグローバルの正規表現とともに呼び出された場合、{{jsxref("RegExp.lastIndex")}} プロパティが(もし指定されていたなら)<code>0</code> にリセットされます ({{bug(501739)}})。</li>
+ <li>Gecko 39 {{geckoRelease(39)}} 以降、<code>flags</code> 引数は非推奨となり、コンソールに警告を投げます ({{bug(1142351)}})。</li>
+ <li>Gecko 47 {{geckoRelease(47)}} 以降、非標準の <code>flags</code> 引数は非リリース版でサポートされず、もうすぐ完全に削除されます ({{bug(1245801)}}).</li>
+ <li>Gecko 49 {{geckoRelease(49)}} 以降、非標準の <code>flags</code> 引数はもうサポートされません ({{bug(1108382)}}).</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.match()")}}</li>
+ <li>{{jsxref("RegExp.prototype.exec()")}}</li>
+ <li>{{jsxref("RegExp.prototype.test()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/search/index.html b/files/ja/web/javascript/reference/global_objects/string/search/index.html
new file mode 100644
index 0000000000..4ec081e9ad
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/search/index.html
@@ -0,0 +1,82 @@
+---
+title: String.prototype.search()
+slug: Web/JavaScript/Reference/Global_Objects/String/search
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - Regular Expressions
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/search
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>search()</code></strong> メソッドは、対象の {{jsxref("String")}} オブジェクトが正規表現で一致するかどうかを調べるためのメソッドです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-search.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.search(<var>regexp</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>regexp</var></code></dt>
+ <dd><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">regular expression</a>正規表現オブジェクトです。</dd>
+ <dd>正規表現でないオブジェクト <code><var>regexp</var></code> が渡された場合は {{jsxref("RegExp")}} オブジェクトに <code>new RegExp(<var>regexp</var>)</code> を使用して暗黙的に変換されます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた文字列と正規表現の間で最初にマッチした箇所のインデックスを返します。マッチしなかった場合は <code>-1</code> を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>あるパターンが見つかるかどうかを知りたい場合<em>や</em>、文字列の中の位置を知りたい場合は、 <code>search()</code> メソッドを利用してください。 (存在するかどうかを知りたいだけの場合は、 <code>RegExp</code> に同様のメソッドである {{jsxref("RegExp.prototype.test()", "test()")}} メソッドがあり、これは論理値を返します。</p>
+
+<p>より多くの情報が欲しい場合は (実行速度が遅くなりますが) {{jsxref("String.prototype.match()", "match()")}} メソッドを使用してください (同様のメソッドとして、{{jsxref("RegExp.prototype.exec()", "exec()")}} メソッドがあります)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_search" name="Using_search">search() の使用</h3>
+
+<p>次の例は、2つの異なる正規表現オブジェクトで文字列を検索し、成功した検索 (正の値) と失敗した検索 (<code>-1</code>) を表示します。</p>
+
+<pre class="brush: js notranslate">let str = "hey JudE"
+let re = /[A-Z]/g
+let reDot = /[.]/g
+console.log(str.search(re)) // 最初の大文字 "J" の位置である 4 を返します
+console.log(str.search(reDot)) // '.' ドット記号が見つからないので -1 を返します</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.search', 'String.prototype.search')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.search")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">JavaScript の正規表現の使用</a></li>
+ <li>{{jsxref("String.prototype.match()")}}</li>
+ <li>{{jsxref("RegExp.prototype.exec()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/slice/index.html b/files/ja/web/javascript/reference/global_objects/string/slice/index.html
new file mode 100644
index 0000000000..aeea092161
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/slice/index.html
@@ -0,0 +1,120 @@
+---
+title: String.prototype.slice()
+slug: Web/JavaScript/Reference/Global_Objects/String/slice
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/String/slice
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>slice()</code></strong> メソッドは、元の文字列を変更せず、文字列の一部分を取り出し、それを新しい文字列として返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-slice.html", "taller")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>str</var>.slice(<var>beginIndex</var>[, <var>endIndex</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>beginIndex</var></code></dt>
+ <dd>
+ <p>取り出しを開始する位置を示す 0 から始まるインデックスです。負の値の場合、 <code><var>str</var>.length + <var>beginIndex</var></code> として扱われます。 (例えば <code><var>beginIndex</var></code> が <code>-3</code> の場合、 <code><var>str</var>.length - 3</code> として扱われます。)</p>
+
+ <p><code><var>beginIndex</var></code> が <code><var>str</var>.length</code> 以上である場合、 <code>slice()</code> は空文字列を返します。</p>
+ </dd>
+ <dt><code><var>endIndex</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p>取り出しを終える<em>前の</em> 0 から始まるインデックスです。このインデックスにある文字は含まれません。</p>
+
+ <p><code><var>endIndex</var></code> を省略した場合、 <code>slice()</code> は文字列の末尾までを取り出します。負の値の場合、 <code><var>str</var>.length + <var>endIndex</var></code> として扱われます。 (例えば <code><var>endIndex</var></code> が <code>-3</code> の場合、 <code><var>str</var>.length - 3</code> として扱われます。)</p>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>文字列の取り出された部分を含んだ新しい文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>slice()</code> は 1 つの文字列からテキストを取り出し、新しい文字列を返します。一方の文字列におけるテキストへの変更は、他の文字列に影響を与えません。</p>
+
+<p><code>slice()</code> は <code><var>endIndex</var></code> を含まずにテキストを取り出します。 <code><var>str</var>.slice(1, 4)</code> は、 2 番目から 4 番目までの文字 (<code>1</code>, <code>2</code>, <code>3</code> のインデックスの文字) を取り出します。</p>
+
+<p>例えば <code><var>str</var>.slice(2, -1)</code> は、文字列から 3 番目の文字から最後から 2 番目の文字までを取り出します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_slice_to_create_a_new_string" name="Using_slice_to_create_a_new_string"><code>slice()</code> を使って新しい文字列をつくる</h3>
+
+<p>以下の例は、新しい文字列を生成するために <code>slice()</code> を使っています。</p>
+
+<pre class="brush: js">let str1 = 'The morning is upon us.', // the length of str1 is 23.
+ str2 = str1.slice(1, 8),
+ str3 = str1.slice(4, -2),
+ str4 = str1.slice(12),
+ str5 = str1.slice(30);
+console.log(str2) // OUTPUT: he morn
+console.log(str3) // OUTPUT: morning is upon u
+console.log(str4) // OUTPUT: is upon us.
+console.log(str5) // OUTPUT: ""
+</pre>
+
+<h3 id="Using_slice_with_negative_indexes" name="Using_slice_with_negative_indexes">負のインデックスで <code>slice()</code> を使う</h3>
+
+<p>下記の例は負のインデックスで <code>slice()</code> を使っています。</p>
+
+<pre class="brush: js">let str = 'The morning is upon us.'
+str.slice(-3) // returns 'us.'
+str.slice(-3, -1) // returns 'us'
+str.slice(0, -1) // returns 'The morning is upon us'
+</pre>
+
+<p>この例は、文字列の末尾から前方に <code>11</code> 番目を開始インデックスとし、先頭から後方に <code>16</code> 番目を終了インデックスとします。</p>
+
+<pre class="brush: js">console.log(str.slice(-11, 16)) // =&gt; "is u"</pre>
+
+<p>こちらは先頭から後方に <code>11</code> 番目を開始インデックスとし、末尾から前方に <code>7</code> 番目を終了インデックスとします。</p>
+
+<pre class="brush: js">console.log(str.slice(11, -7)) // =&gt; " is u"</pre>
+
+<p>これらの引数は、末尾から前方に <code>5</code> 番目を開始インデックスとし、末尾から前方に <code>1</code> 番目を終了インデックスとします。</p>
+
+<pre class="brush: js">console.log(str.slice(-5, -1)) // =&gt; "n us"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.slice', 'String.prototype.slice')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.slice")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.substr()")}}</li>
+ <li>{{jsxref("String.prototype.substring()")}}</li>
+ <li>{{jsxref("Array.prototype.slice()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/small/index.html b/files/ja/web/javascript/reference/global_objects/string/small/index.html
new file mode 100644
index 0000000000..a826ac6df3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/small/index.html
@@ -0,0 +1,74 @@
+---
+title: String.prototype.small()
+slug: Web/JavaScript/Reference/Global_Objects/String/small
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/small
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>small()</code></strong> メソッドは、文字列が小さなフォントで表示されるように HTML の {{HTMLElement("small")}} 要素を生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.small()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("small")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>small()</code> メソッドは、文字列を <code>&lt;small&gt;</code> 要素の中に、 "<code>&lt;small&gt;str&lt;/small&gt;</code>" のように埋め込みます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="small_の使用">small() の使用</h3>
+
+<p>以下の例では文字列のメソッドを使用して、文字列の大きさを変更しています。</p>
+
+<pre class="brush: js notranslate">var worldString = 'Hello, world';
+
+console.log(worldString.small()); // &lt;small&gt;Hello, world&lt;/small&gt;
+console.log(worldString.big()); // &lt;big&gt;Hello, world&lt;/big&gt;
+console.log(worldString.fontsize(7)); // &lt;font size="7"&gt;Hello, world&lt;/fontsize&gt;
+</pre>
+
+<p>{{domxref("ElementCSSInlineStyle/style", "element.style")}} オブジェクトを使用すると、要素の <code>style</code> 属性を使用して、次のようにもっと汎用的に操作することができます。</p>
+
+<pre class="brush: js notranslate">document.getElementById('yourElemId').style.fontSize = '0.7em';
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.small', 'String.prototype.small')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.small")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.fontsize()")}}</li>
+ <li>{{jsxref("String.prototype.big()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/split/index.html b/files/ja/web/javascript/reference/global_objects/string/split/index.html
new file mode 100644
index 0000000000..a62cb1ce48
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/split/index.html
@@ -0,0 +1,226 @@
+---
+title: String.prototype.split()
+slug: Web/JavaScript/Reference/Global_Objects/String/split
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - Regular Expressions
+ - String
+ - プロトタイプ
+ - メソッド
+ - 正規表現
+translation_of: Web/JavaScript/Reference/Global_Objects/String/split
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>split()</code></strong> メソッドは、 {{jsxref("String")}} を指定した区切り文字列で分割することにより、文字列の配列に分割します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-split.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>str</var>.split([<var>separator</var>[, <var>limit</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>separator</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p>分割を行うところにある文字列です。文字列または{{jsxref("Global_Objects/RegExp", "正規表現", "", 1)}}を指定することができます。</p>
+
+ <ul>
+ <li><code><var>separator</var></code> が複数の文字を含んだ文字列である場合、分割にはその文字列の並び全体が見つかることが必要です。</li>
+ <li><code><var>separator</var></code> が省略されたり <code><var>str</var></code> の中に現れなかったりした場合は、返却される配列には文字列全体から成る要素が1つだけ含まれます。</li>
+ <li><code><var>separator</var></code> が文字列の先頭または末尾、またはその両方に現れた場合、配列の先頭、末尾、または先頭と末尾の両方が、それぞれ空文字列になります。</li>
+ <li><code><var>separator</var></code> が空文字列 (<code>""</code>) の場合、 <code><var>str</var></code> は個々の UTF-16 「文字」の配列になります。</li>
+ </ul>
+
+ <div class="blockIndicator warning">
+ <p><strong>警告:</strong> 空文字列 (<code>""</code>) を区切り文字列として使用すると、文字列が<em>ユーザーが知覚可能な文字</em> (<a href="https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries">書記素クラスター</a>) に分割されるわけでは<strong>なく</strong>、 Unicode 文字 (コードポイント)、ただし UTF-16 コード単位です。これは<a href="http://unicode.org/faq/utf_bom.html#utf16-2">サロゲートペア</a>を破壊します。 <a href="https://stackoverflow.com/a/34717402">StackOverflow の “How do you get a string to a character array in JavaScript?”</a> を参照してください。</p>
+ </div>
+ </dd>
+ <dt><code>limit</code> {{optional_inline}}</dt>
+ <dd>
+ <p>非負の整数で、分割する数を制限します。指定された場合、文字列は <code>separator</code> が現れるたびに分割されますが、 <code>limit</code> の数の項目が配列に配置されると停止します。残りのテキストは配列に入りません。</p>
+
+ <ul>
+ <li>制限数に達する以前に文字列の末尾に達した場合は、配列の要素が <code>limit</code> よりも少なくなることがあります。</li>
+ <li><code>limit</code> が <code>0</code> の場合は、分割は行われません。</li>
+ </ul>
+ </dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>文字列の {{jsxref("Array")}} で、指定された文字列で <code>separator</code> が現れるたびに分割されたものです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>separator</code> は見つかると文字列から削除され、部分文字列が配列に入って返されます。</p>
+
+<p><code>separator</code> が、キャプチャする括弧を含む正規表現だった場合、 <code>separator</code> が一致するごとに、キャプチャする括弧の結果が (未定義の結果であった場合を含め) 出力配列に追加されます。</p>
+
+<p><code>separator</code> が配列であった場合、その配列が String に変換された上で区切り文字列として使用されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_split" name="Using_split"><code>split()</code> の使用</h3>
+
+<div id="split_empty_string">
+<p>文字列が空の場合、 <code>split()</code> は空の配列ではなく、1つの空文字列を含む配列を返します。文字列と区切り文字列が共に空文字列の場合、空の配列が返ります。</p>
+
+<pre class="brush: js">const myString = ''
+const splits = myString.split()
+
+console.log(splits)
+
+// ↪ [""]
+</pre>
+</div>
+
+<p>以下の例は、指定された区切りを使って、文字列を文字列の配列に分割する関数を定義します。文字列を分割した後、その関数は元の文字列(分割する前)、使用した区切り、配列中の要素の数、そして、個々の配列要素を示すメッセージを表示します。</p>
+
+<pre class="brush: js">function splitString(stringToSplit, separator) {
+ const arrayOfStrings = stringToSplit.split(separator)
+
+ console.log('元の文字列: ', stringToSplit)
+ console.log('区切り文字列: ' , separator)
+ console.log('配列の要素数は', arrayOfStrings.length, '件: ', arrayOfStrings.join(' / '))
+}
+
+const tempestString = 'Oh brave new world that has such people in it.'
+const monthString = 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'
+
+const space = ' '
+const comma = ','
+
+splitString(tempestString, space)
+splitString(tempestString)
+splitString(monthString, comma)
+</pre>
+
+<p>この例は次のような出力結果を生み出します。</p>
+
+<pre>元の文字列: "Oh brave new world that has such people in it."
+区切り: " "
+配列は 10 要素: Oh / brave / new / world / that / has / such / people / in / it.
+
+元の文字列: "Oh brave new world that has such people in it."
+区切り: "undefined"
+配列は 1 要素: Oh brave new world that has such people in it.
+
+元の文字列: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
+区切り: ","
+配列は 12 要素: Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec
+</pre>
+
+<h3 id="Removing_spaces_from_a_string" name="Removing_spaces_from_a_string">文字列からの空白の削除</h3>
+
+<p>以下の例では、<code>split()</code> は、0 回以上の空白とそれに続くセミコロン、それにさらに続く 0 回以上の空白を探し、それらが見つかったとき、文字列から空白を削除します。<code>nameList</code> は、<code>split()</code> の結果として返された配列です。</p>
+
+<pre class="brush: js">const names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand '
+
+console.log(names)
+
+const re = /\s*(?:;|$)\s*/
+const nameList = names.split(re)
+
+console.log(nameList)
+</pre>
+
+<p>これは 2 つの行を出力します。1 行目は元の文字列を出力し、2 行目は <code>split</code> メソッドの実行結果の配列を出力します。</p>
+
+<pre>Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand
+[ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand", "" ]
+</pre>
+
+<h3 id="Returning_a_limited_number_of_splits" name="Returning_a_limited_number_of_splits">限られた数の分割結果を返す</h3>
+
+<p>以下の例では、<code>split()</code> は 文字列中の 0 回以上の空白を探し、見つかった最初の 3 つの分割結果を返します。</p>
+
+<pre class="brush: js">const myString = 'Hello World. How are you doing?'
+const splits = myString.split(' ', 3)
+
+console.log(splits)
+</pre>
+
+<p>このスクリプトは以下の例を出力します。</p>
+
+<pre>["Hello", "World.", "How"]
+</pre>
+
+<h3 id="Splitting_with_a_RegExp_to_include_parts_of_the_separator_in_the_result" name="Splitting_with_a_RegExp_to_include_parts_of_the_separator_in_the_result"><code>RegExp</code> で分割して結果に区切り文字列の一部を含める</h3>
+
+<p><code>separator</code> がキャプチャの括弧 <code>(</code><code>)</code> を含む正規表現である場合、一致した結果が配列に含まれます。</p>
+
+<pre class="brush: js">const myString = 'Hello 1 word. Sentence number 2.'
+const splits = myString.split(/(\d)/)
+
+console.log(splits)
+</pre>
+
+<p>このスクリプトは、以下を表示します。</p>
+
+<pre>[ "Hello ", "1", " word. Sentence number ", "2", "." ]
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>メモ: </strong><code>\d</code> は<a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions/Character_Classes">文字クラス</a>で、0から9の数字に一致します。</p>
+</div>
+
+<h3 id="Reversing_a_String_using_split" name="Reversing_a_String_using_split"><code>split()</code> を使った文字列を反転</h3>
+
+<div class="warning">
+<p>この手法は文字列を正しく反転できるとは限りません。</p>
+
+<pre class="brush: js">const str = 'asdfghjkl'
+const strReverse = str.split('').reverse().join('')
+// 'lkjhgfdsa'
+
+// split() が配列を返し、 reverse() および join() が適用できます
+</pre>
+
+<p>Unicode 対応の分割を使用している場合でも、文字列に書記素クラスターが含まれていると機能しません (代わりに <a href="https://github.com/mathiasbynens/esrever">esrever</a> などを使ってください)。</p>
+
+<pre class="brush: js">const str = 'résumé'
+const strReverse = str.split(/(?:)/u).reverse().join('')
+// =&gt; "́emuśer"
+</pre>
+
+<p><strong>ボーナス:</strong> {{jsxref("Operators/Comparison_Operators", "===", "#Identity_strict_equality_(===)")}} 演算子を使用すると、元の文字列が回文であるかどうかが判定できます。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.split', 'String.prototype.split')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.split")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.charAt()")}}</li>
+ <li>{{jsxref("String.prototype.indexOf()")}}</li>
+ <li>{{jsxref("String.prototype.lastIndexOf()")}}</li>
+ <li>{{jsxref("Array.prototype.join()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">JavaScript での正規表現の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/startswith/index.html b/files/ja/web/javascript/reference/global_objects/string/startswith/index.html
new file mode 100644
index 0000000000..b8c5c200eb
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/startswith/index.html
@@ -0,0 +1,98 @@
+---
+title: String.prototype.startsWith()
+slug: Web/JavaScript/Reference/Global_Objects/String/startsWith
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/startsWith
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>startsWith()</code></strong> メソッドは文字列が引数で指定された文字列で始まるかを判定して <code>true</code> か <code>false</code> を返します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-startswith.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.startsWith(<var>searchString</var>[, <var>position</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>searchString</var></code></dt>
+ <dd>文字列の先頭で検索される文字の集合です。</dd>
+ <dt><code><var>position</var></code> {{optional_inline}}</dt>
+ <dd><code><var>searchString</var></code> を検索し始めるこの文字列の中の位置です。既定値は <code>0</code> です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>文字列が指定された文字列で始まる場合は <strong><code>true</code></strong>、それ以外の場合は <strong><code>false</code></strong> です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>文字列が特定の文字列で始まるかどうかを判断できます。(英文字の)大文字・小文字は区別されます。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="Using_startsWith" name="Using_startsWith">startsWith() の使用</h3>
+
+<pre class="brush: js notranslate">//startswith
+let str = 'To be, or not to be, that is the question.'
+
+console.log(str.startsWith('To be')) // true
+console.log(str.startsWith('not to be')) // false
+console.log(str.startsWith('not to be', 10)) // true
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>このメソッドは ECMAScript 2015 で追加されました。すべてのJavaScriptの実装でまだ利用可能ではないかもしれません。しかしながら、次のコードで<code>String.prototype.startsWith()</code>をエミュレートできます。</p>
+
+<pre class="brush: js notranslate">if (!String.prototype.startsWith) {
+    Object.defineProperty(String.prototype, 'startsWith', {
+        value: function(search, rawPos) {
+  var pos = rawPos &gt; 0 ? rawPos|0 : 0;
+            return this.substring(pos, pos + search.length) === search;
+        }
+    });
+}
+</pre>
+
+<p>少々重いですがより強力 (ES2015に完全準拠) な互換実装を <a href="https://github.com/mathiasbynens/String.prototype.startsWith">Mathias Bynens が GitHub</a> で公開しています。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.startswith', 'String.prototype.startsWith')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.startsWith")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.endsWith()")}}</li>
+ <li>{{jsxref("String.prototype.includes()")}}</li>
+ <li>{{jsxref("String.prototype.indexOf()")}}</li>
+ <li>{{jsxref("String.prototype.lastIndexOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/strike/index.html b/files/ja/web/javascript/reference/global_objects/string/strike/index.html
new file mode 100644
index 0000000000..6d2e1d53da
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/strike/index.html
@@ -0,0 +1,70 @@
+---
+title: String.prototype.strike()
+slug: Web/JavaScript/Reference/Global_Objects/String/strike
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/strike
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>strike()</code></strong> メソッドは、文字列が取り消されたテキストとして表示されるように HTML の {{HTMLElement("strike")}} 要素を生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.strike()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("strike")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>strike()</code> メソッドは、文字列を <code>&lt;strike&gt;</code> 要素の中に、 "<code>&lt;strike&gt;str&lt;/strike&gt;</code>" のように埋め込みます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="strike_の使用">strike() の使用</h3>
+
+<p>以下の例では文字列のメソッドを使用して、文字列の形式を変更しています。</p>
+
+<pre class="brush: js notranslate">var worldString = 'Hello, world';
+
+console.log(worldString.blink()); // &lt;blink&gt;Hello, world&lt;/blink&gt;
+console.log(worldString.bold()); // &lt;b&gt;Hello, world&lt;/b&gt;
+console.log(worldString.italics()); // &lt;i&gt;Hello, world&lt;/i&gt;
+console.log(worldString.strike()); // &lt;strike&gt;Hello, world&lt;/strike&gt;
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.strike', 'String.prototype.strike')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.strike")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.blink()")}}</li>
+ <li>{{jsxref("String.prototype.bold()")}}</li>
+ <li>{{jsxref("String.prototype.italics()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/string/index.html b/files/ja/web/javascript/reference/global_objects/string/string/index.html
new file mode 100644
index 0000000000..87f34ce131
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/string/index.html
@@ -0,0 +1,64 @@
+---
+title: String() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/String/String
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/String
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>String</code></strong> コンストラクターは新しい {{jsxref("String")}} オブジェクトを生成するために使用します。関数として呼び出された場合は、{{Glossary("string", "プリミティブ文字列", "", 1)}}への型変換を行うので、普通はより便利です。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new String(<var>thing</var>)
+String(<var>thing</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>thing</var></code></dt>
+ <dd>文字列に変換するもの。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="String_constructor_and_String_function" name="String_constructor_and_String_function">String コンストラクターと String 関数</h3>
+
+<p>String 関数と String コンストラクターは異なる結果を生み出します。</p>
+
+<pre class="brush: js notranslate">typeof String('Hello world'); // string
+typeof new String('Hello world'); // object
+</pre>
+
+<p>ここでは、この関数は約束通り ({{Glossary("primitive", "プリミティブ")}}型の) 文字列を生成します。しかし、コンストラクターは String 型 (オブジェクトのラッパー) のインスタンスを生成しますので、 String コンストラクターを使用するのは稀だといえます。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string-constructor', 'String constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.String")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Text_formatting">JavaScript ガイドのテキスト処理</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/sub/index.html b/files/ja/web/javascript/reference/global_objects/string/sub/index.html
new file mode 100644
index 0000000000..2306c584b8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/sub/index.html
@@ -0,0 +1,70 @@
+---
+title: String.prototype.sub()
+slug: Web/JavaScript/Reference/Global_Objects/String/sub
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/sub
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>sub()</code></strong> メソッドは、文字列が下付き文字として表示されるように HTML の {{HTMLElement("sub")}} 要素を生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.sub()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("sub")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>sub()</code> メソッドは、文字列を <code>&lt;sub&gt;</code> 要素の中に、 "<code>&lt;sub&gt;str&lt;/sub&gt;</code>" のように埋め込みます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_sub_and_sup_methods" name="Using_sub_and_sup_methods">sub() および sup() メソッドの使用</h3>
+
+<p>以下の例は、 <code>sub()</code> と {{jsxref("String.prototype.sup()", "sup()")}} メソッドを使用して文字列を整形しています。</p>
+
+<pre class="brush: js notranslate">var superText = '上付き文字';
+var subText = '下付き文字';
+
+console.log('これは' + superText.sup() + 'の見え方を示しています。');
+// "これは&lt;sup&gt;上付き文字&lt;/sup&gt;の見え方を示しています。"
+
+console.log('これは' + subText.sub() + 'の見え方を示しています。');
+// "これは&lt;sub&gt;下付き文字&lt;/sub&gt;の見え方を示しています。"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.sub', 'String.prototype.sub')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.sub")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.sup()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/substr/index.html b/files/ja/web/javascript/reference/global_objects/string/substr/index.html
new file mode 100644
index 0000000000..e12769162b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/substr/index.html
@@ -0,0 +1,120 @@
+---
+title: String.prototype.substr()
+slug: Web/JavaScript/Reference/Global_Objects/String/substr
+tags:
+ - Deprecated
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/String/substr
+---
+<div>{{JSRef}}</div>
+
+<p class="seoSummary"><strong><code>substr()</code></strong> メソッドは、文字列の一部を、指定した位置から後方向指定した文字数だけ返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-substr.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.substr(<var>start</var>[, <var>length</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>start</var></code></dt>
+ <dd>返却する部分文字列に含まれる最初の文字の位置です。</dd>
+ <dt><code><var>length</var></code></dt>
+ <dd>任意です。取り出す文字の数です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された文字列の指定された部分が入った新しい文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>substr()</code> は、 <code><var>str</var></code> のうち <code><var>length</var></code> 文字分を、 <code><var>start</var></code> の位置から数えて抽出します。</p>
+
+<ul>
+ <li><code><var>start</var></code> が正の数である場合、文字列の先頭から数えた位置になります。この値は <code><var>str</var>.length</code> が上限になります。</li>
+ <li><code><var>start</var></code> が負の数である場合、文字列の末尾から数えた位置になります。この値は <code>-<var>str</var>.length</code> が下限になります。</li>
+ <li>注: Microsoft の JScript では、 <code><var>start</var></code> の引数が負の数であっても文字列の末尾からの位置にはなりません。</li>
+ <li><code><var>length</var></code> が省略された場合、 <code>substr()</code> は文字列の末尾までの文字を抽出します。</li>
+ <li><code><var>length</var></code> が {{jsxref("undefined")}} である場合、 <code>substr()</code> は文字列の末尾までの文字を抽出します。</li>
+ <li><code><var>length</var></code> が負の数である場合、 <code>0</code> として扱われます。</li>
+ <li><code><var>start</var></code> および <code><var>length</var></code> において、 {{jsxref("NaN")}} は <code>0</code> として扱われます。</li>
+</ul>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>Microsoft の JScript は start の位置として負の数に対応していません。この機能を使用したい場合は、このバグを回避するために、次の互換コードを使用することができます。</p>
+
+<pre class="brush: js notranslate">// only run when the substr() function is broken
+if ('ab'.substr(-1) != 'b') {
+ /**
+ * Get the substring of a string
+ * @param {integer} start where to start the substring
+ * @param {integer} length how many characters to return
+ * @return {string}
+ */
+ String.prototype.substr = function(substr) {
+ return function(start, length) {
+ // call the original method
+ return substr.call(this,
+ // did we get a negative start, calculate how much it is from the beginning of the string
+ // adjust the start parameter for negative value
+ start &lt; 0 ? this.length + start : start,
+ length)
+ }
+ }(String.prototype.substr);
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_substr" name="Using_substr">substr() の使用</h3>
+
+<pre class="brush: js notranslate">var aString = 'Mozilla';
+
+console.log(aString.substr(0, 1)); // 'M'
+console.log(aString.substr(1, 0)); // ''
+console.log(aString.substr(-1, 1)); // 'a'
+console.log(aString.substr(1, -1)); // ''
+console.log(aString.substr(-3)); // 'lla'
+console.log(aString.substr(1)); // 'ozilla'
+console.log(aString.substr(-20, 2)); // 'Mo'
+console.log(aString.substr(20, 2)); // ''
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.substr', 'String.prototype.substr')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.substr")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.slice()")}}</li>
+ <li>{{jsxref("String.prototype.substring()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/substring/index.html b/files/ja/web/javascript/reference/global_objects/string/substring/index.html
new file mode 100644
index 0000000000..19edd685f1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/substring/index.html
@@ -0,0 +1,182 @@
+---
+title: String.prototype.substring()
+slug: Web/JavaScript/Reference/Global_Objects/String/substring
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/substring
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>substring()</code></strong> メソッドは <code>string</code> オブジェクトの開始・終了位置の間、または文字列の最後までの部分集合を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-substring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.substring(<var>indexStart</var>[, <var>indexEnd</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>indexStart</var></code></dt>
+ <dd>返される部分文字列の、最初の文字を含んだ位置です。</dd>
+ <dt><code><var>indexEnd</var></code> {{optional_inline}}</dt>
+ <dd>返される部分文字列から外される最初の文字の位置です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた文字列から抽出された区間を含む新しい文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>substring()</code> は <code><var>indexStart</var></code> から <code><var>indexEnd</var></code> の直前までの文字を取り出します。特に、</p>
+
+<ul>
+ <li><code><var>indexEnd</var></code> が省略された場合、<code>substring()</code> は文字列の最後までの文字を取り出します。</li>
+ <li><code><var>indexStart</var></code> が <code><var>indexEnd</var></code> と等しい場合、 <code>substring()</code> は空の文字列を返します。</li>
+ <li><code><var>indexStart</var></code> が <code><var>indexEnd</var></code> より大きかった場合、 <code>substring()</code> は 2 つの引数が交換されたものとして実行されます。下記の例をご覧ください。</li>
+</ul>
+
+<p>引数が <code>0</code> 未満、または <code>stringName.length</code> を超えた場合、それはそれぞれ <code>0</code> と <code>stringName.length</code> として扱われます。</p>
+
+<p>いずれかの引数が {{jsxref("NaN")}} の場合、それは <code>0</code> として扱われます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_substring" name="Using_substring">substring() の使用</h3>
+
+<p>以下の例では <code>substring()</code> を使用して、 <code>Mozilla</code> という文字列から文字を取り出して表示します。</p>
+
+<pre class="brush: js notranslate">let anyString = 'Mozilla'
+
+// 'M' と表示
+console.log(anyString.substring(0, 1))
+console.log(anyString.substring(1, 0))
+
+// 'Mozill' と表示
+console.log(anyString.substring(0, 6))
+
+// 'lla' と表示
+console.log(anyString.substring(4))
+console.log(anyString.substring(4, 7))
+console.log(anyString.substring(7, 4))
+
+// 'Mozilla' と表示
+console.log(anyString.substring(0, 7))
+console.log(anyString.substring(0, 10))
+</pre>
+
+<h3 id="Using_substring_with_length_property" name="Using_substring_with_length_property">substring() と length プロパティの使用</h3>
+
+<p>次の例では <code>substring()</code> メソッドと {{jsxref("String.length", "length")}} プロパティを使用して、、特定の文字列の最後の文字を抜き出しています。この方法では、上記の例と同じようあなたが最初と最後の位置を知っている必要がないこと考えると、覚えやすいかもしれません。</p>
+
+<pre class="brush: js notranslate">// 最後の 4 文字の 'illa' を表示します
+let anyString = 'Mozilla'
+let anyString4 = anyString.substring(anyString.length - 4)
+console.log(anyString4)
+
+// 最後の 5 文字の 'zilla' を表示します
+let anyString = 'Mozilla'
+let anyString5 = anyString.substring(anyString.length - 5)
+console.log(anyString5)
+</pre>
+
+<h3 id="The_difference_between_substring_and_substr" name="The_difference_between_substring_and_substr">substring() と substr() の違い</h3>
+
+<p><code>substring()</code> メソッドと {{jsxref("String.substr", "substr()")}} メソッドとの間には微妙な違いがあるので、混乱しないように注意してください。</p>
+
+<p><code>substring()</code> の引数は開始位置と終了位置を表しますが、 <code>substr()</code> の引数は開始位置と返される文字列に含まれる文字数を表します。</p>
+
+<p>さらに、 <code>substr()</code> は <strong>ECMAScript の古い機能</strong>とみなされており、将来のバージョンでは削除される可能性があるため、できれば使用しないのが最良です。</p>
+
+<pre class="brush: js notranslate">let text = 'Mozilla'
+console.log(text.substring(2,5)) // =&gt; "zil"
+console.log(text.substr(2,3)) // =&gt; "zil"</pre>
+
+<h3 id="Differences_between_substring_and_slice" name="Differences_between_substring_and_slice">substring() と slice() の違い</h3>
+
+<p><code>substring()</code> メソッドと {{jsxref("String.slice", "slice()")}} メソッドはほぼ同じですが、特に負の数の引数の扱いについて、いくつかの微妙な違いがあります。</p>
+
+<p><code>substring()</code> メソッドは <code><var>indexStart</var></code> が <code><var>indexEnd</var></code> よりも大きい場合に二つの引数をするので、文字列が返されます。 {{jsxref("String.slice", "slice()")}} メソッドはこの場合には空文字列を返します。</p>
+
+<pre class="brush: js notranslate">let text = 'Mozilla'
+console.log(text.substring(5, 2)) // =&gt; "zil"
+console.log(text.slice(5, 2)) // =&gt; ""
+</pre>
+
+<p>どちらかまたは両方の引数が負の数または <code>NaN</code> であった場合、 <code>substring()</code> メソッドはこれらを <code>0</code> として扱います。</p>
+
+<pre class="brush: js notranslate">console.log(text.substring(-5, 2)) // =&gt; "Mo"
+console.log(text.substring(-5, -2)) // =&gt; ""
+</pre>
+
+<p><code>slice()</code> も <code>NaN</code> の引数を <code>0</code> として扱いますが、負の数を指定した場合は、文字列の末尾からの文字数で位置を探します。</p>
+
+<pre class="brush: js notranslate">console.log(text.slice(-5, 2)) // =&gt; ""
+console.log(text.slice(-5, -2)) // =&gt; "zil"
+</pre>
+
+<p>負の数を使用した例は {{jsxref("String.slice", "slice()")}} のページをご覧ください。</p>
+
+<h3 id="Replacing_a_substring_within_a_string" name="Replacing_a_substring_within_a_string">文字列内の部分文字列の置き換え</h3>
+
+<p>次の例は、文字列内の部分文字列を置き換えます。これは単独の文字と部分文字列の両方を置き換えます。例の最後にある関数呼び出しは、 <code>Brave New World</code> という文字列を <code>Brave New Web</code> に置き換えます。</p>
+
+<pre class="brush: js notranslate">// fullS という文字列内で oldS を newS に置き換えます。
+function replaceString(oldS, newS, fullS) {
+ for (let i = 0; i &lt; fullS.length; ++i) {
+ if (fullS.substring(i, i + oldS.length) == oldS) {
+ fullS = fullS.substring(0, i) + newS + fullS.substring(i + oldS.length, fullS.length)
+ }
+ }
+ return fullS
+}
+
+replaceString('World', 'Web', 'Brave New World')
+</pre>
+
+<p>なお、これは <code>oldS</code> が <code>newS</code> の部分文字列である場合に無限ループに陥ります。 — 例えば、 '<code>World</code>' を '<code>OtherWorld</code>' で置き換える場合などです。</p>
+
+<p>置き換えるのにより良い方法は以下の通りです。</p>
+
+<pre class="brush: js notranslate">function replaceString(oldS, newS, fullS) {
+ return fullS.split(oldS).join(newS)
+}
+</pre>
+
+<p>上述のコードは、 substring の操作の例を提供します。部分文字列を置き換える必要があるとき、多くの場合 {{jsxref("String.prototype.replace()")}} を使用します。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.substring', 'String.prototype.substring')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.substring")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.substr()")}}</li>
+ <li>{{jsxref("String.prototype.slice()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/sup/index.html b/files/ja/web/javascript/reference/global_objects/string/sup/index.html
new file mode 100644
index 0000000000..1584d973fa
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/sup/index.html
@@ -0,0 +1,71 @@
+---
+title: String.prototype.sup()
+slug: Web/JavaScript/Reference/Global_Objects/String/sup
+tags:
+ - Deprecated
+ - HTML wrapper methods
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/sup
+---
+<div>{{JSRef}} {{deprecated_header}}</div>
+
+<p><strong><code>sup()</code></strong> メソッドは、文字列が上付き文字として表示されるように HTML の {{HTMLElement("sup")}} 要素を生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.sup()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>HTML の {{HTMLElement("sup")}} 要素を含む文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>sup()</code> メソッドは、文字列を <code>&lt;sup&gt;</code> 要素の中に、 "<code>&lt;sup&gt;str&lt;/sup&gt;</code>" のように埋め込みます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_sub_and_sup_methods" name="Using_sub_and_sup_methods">sub() および sup() メソッドの使用</h3>
+
+<p>以下の例は、 {{jsxref("String.prototype.sub()", "sub()")}} と <code>sup()</code> メソッドを使用して文字列を整形しています。</p>
+
+<pre class="brush: js notranslate">var superText = '上付き文字';
+var subText = '下付き文字';
+
+console.log('これは' + superText.sup() + 'の見え方を示しています。');
+// "これは&lt;sup&gt;上付き文字&lt;/sup&gt;の見え方を示しています。"
+
+console.log('これは' + subText.sub() + 'の見え方を示しています。');
+// "これは&lt;sub&gt;下付き文字&lt;/sub&gt;の見え方を示しています。"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.sup', 'String.prototype.sup')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.sup")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.sub()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/tolocalelowercase/index.html b/files/ja/web/javascript/reference/global_objects/string/tolocalelowercase/index.html
new file mode 100644
index 0000000000..cbe8197973
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/tolocalelowercase/index.html
@@ -0,0 +1,92 @@
+---
+title: String.prototype.toLocaleLowerCase()
+slug: Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase
+tags:
+ - Internationalization
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toLocaleLowerCase()</code></strong> メソッドは、呼び出した文字列の値を、ロケールに依存した対応付けに基づいて小文字にに変換して返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-tolocalelowercase.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.toLocaleLowerCase()
+<var>str</var>.toLocaleLowerCase(locale)
+<var>str</var>.toLocaleLowerCase([locale, locale, ...])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>locale</code> {{optional_inline}}</dt>
+ <dd><code>locale</code> 引数は、ロケールに依存した対応に基づいた小文字への変換に使用されるロケールを示します。複数のロケールが {{jsxref("Array")}} で与えられた場合は、<a href="https://tc39.github.io/ecma402/#sec-bestavailablelocale">利用可能な最良のロケール</a>が使用されます。既定のロケールはホスト環境の現在のロケールです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>呼び出した文字列をロケールに依存した対応に基づいて小文字に変換したものを表す新しい文字列です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li>A {{jsxref("RangeError")}} ("invalid language tag: xx_yy") は <code>locale</code> 引数が妥当な言語タグでない場合に発生します。</li>
+ <li>A {{jsxref("TypeError")}} ("invalid element in locales argument") は、配列の要素が文字列型でなかった場合に発生します。</li>
+</ul>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>toLocaleLowerCase()</code> メソッドは、ロケール固有の大文字小文字の対応付けに従って小文字に変換された文字列の値を返します。 <code>toLocaleLowerCase()</code> はその文字列自体に影響を与えません。ほとんどの場合は {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}} と同じ結果が得られますが、トルコ語のように大文字小文字のマッピングが Unicode 既定の大文字小文字のマッピングに従っていないロケールの場合は、異なる結果が得られる可能性があります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toLocaleLowerCase" name="Using_toLocaleLowerCase">toLocaleLowerCase() の使用</h3>
+
+<pre class="brush: js notranslate">'ALPHABET'.toLocaleLowerCase(); // 'alphabet'
+
+'\u0130'.toLocaleLowerCase('tr') === 'i'; // true
+'\u0130'.toLocaleLowerCase('en-US') === 'i'; // false
+
+let locales = ['tr', 'TR', 'tr-TR', 'tr-u-co-search', 'tr-x-turkish'];
+'\u0130'.toLocaleLowerCase(locales) === 'i'; // true</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sup-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.toLocaleLowerCase")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.toLocaleUpperCase()")}}</li>
+ <li>{{jsxref("String.prototype.toLowerCase()")}}</li>
+ <li>{{jsxref("String.prototype.toUpperCase()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html b/files/ja/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html
new file mode 100644
index 0000000000..a8c9297c02
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html
@@ -0,0 +1,96 @@
+---
+title: String.prototype.toLocaleUpperCase()
+slug: Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase
+tags:
+ - Internationalization
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toLocaleUpperCase()</code></strong> メソッドは、呼び出した文字列の値を、ロケールに依存した対応付けに基づいて大文字に変換して返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-tolocaleuppercase.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.toLocaleUpperCase()
+<var>str</var>.toLocaleUpperCase(locale)
+<var>str</var>.toLocaleUpperCase([locale, locale, ...])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>locale</code> {{optional_inline}}</dt>
+ <dd><code>locale</code> 引数は、ロケールに依存した対応に基づいた大文字への変換に使用されるロケールを示します。複数のロケールが {{jsxref("Array")}} で与えられた場合は、<a href="https://tc39.github.io/ecma402/#sec-bestavailablelocale">利用可能な最良のロケール</a>が使用されます。既定のロケールはホスト環境の現在のロケールです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>呼び出した文字列をロケールに依存した対応に基づいて大文字に変換したものを表す新しい文字列です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li>A {{jsxref("RangeError")}} ("invalid language tag: xx_yy") は <code>locale</code> 引数が妥当な言語タグでない場合に発生します。</li>
+ <li>A {{jsxref("TypeError")}} ("invalid element in locales argument") は、配列の要素が文字列型でなかった場合に発生します。</li>
+</ul>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>toLocaleUpperCase()</code> メソッドは、ロケール固有の大文字小文字の対応付けに従って大文字に変換された文字列の値を返します。 <code>toLocaleUpperCase()</code> はその文字列自体に影響を与えません。ほとんどの場合は {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}} と同じ結果が得られますが、トルコ語のように大文字小文字のマッピングが Unicode 既定の大文字小文字のマッピングに従っていないロケールの場合は、異なる結果が得られる可能性があります。</p>
+
+<p>また、変換は必ずしも文字の 1:1 の対応付けであるとは限らず、一部の文字は大文字に変換されたときに2文字 (それ以上の場合も) になる可能性があることに注意してください。そのため,結果の文字列の長さは入力の長さと異なる場合があります。これは変換が安定していないことも意味します。すなわち、次の式は <code>false</code> を返す可能性があります。<br>
+ <code>x.toLocaleLowerCase() === x.toLocaleUpperCase().toLocaleLowerCase()</code></p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toLocaleUpperCase" name="Using_toLocaleUpperCase">toLocaleUpperCase() の使用</h3>
+
+<pre class="brush: js notranslate">'alphabet'.toLocaleUpperCase(); // 'ALPHABET'
+
+'Gesäß'.toLocaleUpperCase(); // 'GESÄSS'
+
+'i\u0307'.toLocaleUpperCase('lt-LT'); // 'I'
+
+let locales = ['lt', 'LT', 'lt-LT', 'lt-u-co-phonebk', 'lt-x-lietuva'];
+'i\u0307'.toLocaleUpperCase(locales); // 'I'</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES Int Draft', '#sup-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.toLocaleUpperCase")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.toLocaleLowerCase()")}}</li>
+ <li>{{jsxref("String.prototype.toLowerCase()")}}</li>
+ <li>{{jsxref("String.prototype.toUpperCase()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/tolowercase/index.html b/files/ja/web/javascript/reference/global_objects/string/tolowercase/index.html
new file mode 100644
index 0000000000..029753723f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/tolowercase/index.html
@@ -0,0 +1,67 @@
+---
+title: String.prototype.toLowerCase()
+slug: Web/JavaScript/Reference/Global_Objects/String/toLowerCase
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/String/toLowerCase
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toLowerCase()</code></strong> メソッドは、呼び出す文字列の値を小文字に変換して返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-tolowercase.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><var>str</var>.toLowerCase()</code></pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>呼び出す文字列の値を小文字に変換した新しい文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>toLowerCase()</code> メソッドは、小文字に変換された文字列の値を返します。<code>toLowerCase()</code> メソッドは、文字列 <code>str</code> 自身の値には影響を与えません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toLowerCase" name="Using_toLowerCase"><code>toLowerCase()</code> メソッドの使用</h3>
+
+<pre class="brush: js">console.log('ALPHABET'.toLowerCase()); // 'alphabet'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.tolowercase', 'String.prototype.toLowerCase')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.toLowerCase")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.toLocaleLowerCase()")}}</li>
+ <li>{{jsxref("String.prototype.toLocaleUpperCase()")}}</li>
+ <li>{{jsxref("String.prototype.toUpperCase()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/tosource/index.html b/files/ja/web/javascript/reference/global_objects/string/tosource/index.html
new file mode 100644
index 0000000000..7c624a8b10
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/tosource/index.html
@@ -0,0 +1,54 @@
+---
+title: String.prototype.toSource()
+slug: Web/JavaScript/Reference/Global_Objects/String/toSource
+tags:
+ - JavaScript
+ - Method
+ - Non-standard
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/toSource
+---
+<div>{{JSRef}} {{non-standard_header}}</div>
+
+<p><strong><code>toSource()</code></strong> はそのオブジェクトのソースコードを表す文字列を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code>String.toSource()
+<var>str</var>.toSource()
+</code></pre>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>呼び出し元のオブジェクトのソースコードを表す文字列です。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>toSource()</code> メソッドは以下の値を返します。</p>
+
+<p>組み込み {{jsxref("String")}} オブジェクトでは、<code>toSource()</code> はソースコードが存在しないことを示す以下の文字列を返します。</p>
+
+<pre class="brush: js">function String() {
+ [native code]
+}
+</pre>
+
+<p>{{jsxref("String")}} オブジェクトのインスタンスや、文字列リテラルでは、<code>toSource()</code> はそのソースコードを表す文字列を返します。</p>
+
+<p>このメソッドは、通常、JavaScript によって内部的に呼ばれ、コード中で明示的に呼ばれることはありません。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<p>あらゆる標準仕様に含まれません。JavaScript 1.3 で実装されています。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.String.toSource")}}</p>
+
+<h2 id="See_also" name="See_also">参照</h2>
+
+<p><a href="ja/Core_JavaScript_1.5_Reference/Global_Objects/Object/toSource">Object.prototype.toSource</a></p>
diff --git a/files/ja/web/javascript/reference/global_objects/string/tostring/index.html b/files/ja/web/javascript/reference/global_objects/string/tostring/index.html
new file mode 100644
index 0000000000..75806d633f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/tostring/index.html
@@ -0,0 +1,65 @@
+---
+title: String.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/String/toString
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/toString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toString()</code></strong> メソッドは指定されたオブジェクトを表す文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-tostring.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>str</var>.toString()</code></pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>呼び出したオブジェクトを表す文字列です。</p>
+
+<h2 id="Description" name="Description">詳細</h2>
+
+<p>その {{jsxref("String")}} オブジェクトは、{{jsxref("Object")}} の <code>toString</code> メソッドを上書きします。つまり、{{jsxref("Object.prototype.toString()")}} を継承しません。{{jsxref("String")}} オブジェクトの <code>toString()</code> メソッドは、そのオブジェクトを表す文字列を返します( {{jsxref("String.prototype.valueOf()")}} と同等です)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toString" name="Using_toString()"><code>toString</code> メソッドを使う</h3>
+
+<p>以下の例は、{{jsxref("String")}} オブジェクトを表す文字列の値を表示します。</p>
+
+<pre class="brush: js notranslate">var x = new String('Hello world');
+
+alert(x.toString()) // 'Hello world' を表示します
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.tostring', 'String.prototype.toString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.String.toString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toSource()")}}</li>
+ <li>{{jsxref("String.prototype.valueOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/touppercase/index.html b/files/ja/web/javascript/reference/global_objects/string/touppercase/index.html
new file mode 100644
index 0000000000..112a78b5ce
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/touppercase/index.html
@@ -0,0 +1,90 @@
+---
+title: String.prototype.toUpperCase()
+slug: Web/JavaScript/Reference/Global_Objects/String/toUpperCase
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/String/toUpperCase
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toUpperCase()</code></strong> メソッドは、呼び出す文字列の値を(文字列でない場合、文字列に変換して)大文字に変換して返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-touppercase.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>str</var>.toUpperCase()</pre>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>呼び出す文字列の値を大文字に変換した新しい文字列です。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<dl>
+ <dt>{{jsxref("TypeError")}}</dt>
+ <dd>{{jsxref("null")}} か {{jsxref("undefined")}} で呼ばれた場合(例えば、<code>String.prototype.toUpperCase.call(undefined)</code>)。</dd>
+</dl>
+
+<h2 id="Description" name="Description">詳細</h2>
+
+<p><code>toUpperCase()</code> メソッドは、大文字に変換された文字列の値を返します。このメソッドは、文字列自身の値に影響を与えません(JavaScript の文字列は不変です)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_usage" name="Basic_usage">基本的な使用</h3>
+
+<pre class="brush: js">console.log('alphabet'.toUpperCase()); // 'ALPHABET'
+</pre>
+
+<h3 id="Conversion_of_non-string_this_values_to_strings" name="Conversion_of_non-string_this_values_to_strings">文字列でない <code>this</code> 値を文字列に変換する</h3>
+
+<p>このメソッドは <code>this</code> に文字列でない値を設定した場合、文字列に変換します。:</p>
+
+<pre class="brush: js">const a = String.prototype.toUpperCase.call({
+ toString: function toString() {
+ return 'abcdef';
+ }
+});
+
+const b = String.prototype.toUpperCase.call(true);
+
+// prints out 'ABCDEF TRUE'.
+console.log(a, b);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.touppercase', 'String.prototype.toUpperCase')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.toUpperCase")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.toLocaleLowerCase()")}}</li>
+ <li>{{jsxref("String.prototype.toLocaleUpperCase()")}}</li>
+ <li>{{jsxref("String.prototype.toLowerCase()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/trim/index.html b/files/ja/web/javascript/reference/global_objects/string/trim/index.html
new file mode 100644
index 0000000000..6719c6041d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/trim/index.html
@@ -0,0 +1,86 @@
+---
+title: String.prototype.trim()
+slug: Web/JavaScript/Reference/Global_Objects/String/trim
+tags:
+ - ECMAScript 5
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/Trim
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>trim()</code></strong> メソッドは、文字列の両端の空白を削除します。このコンテクストでの空白には、空白文字(スペースやタブ、ノーブレークスペースなど)とすべての改行文字(LF や CR など)を含みます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-trim.html")}}</div>
+
+<p class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>str</var>.trim()</code></pre>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>呼び出し元の文字列の両端から空白を取り除いた新しい文字列です。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>trim()</code> メソッドは両端の空白を取り除いた文字列を返します。<code>trim()</code> はその文字列自身の値には影響を与えません(非破壊メソッド)。</p>
+
+<h2 id="Polyfill" name="Polyfill">Polyfill</h2>
+
+<p>ネイティブで使用できない場合、他のコードの前に次のコードを実行することにより <code>String.trim()</code> が使用可能になります。</p>
+
+<pre class="brush: js notranslate">if (!String.prototype.trim) {
+ String.prototype.trim = function () {
+ return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+ };
+}
+</pre>
+
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_trim" name="Using_trim()"><code>trim()</code> を使う</h3>
+
+<p>以下の例は小文字の文字列 <code>'foo'</code> を表示します。</p>
+
+<pre class="brush: js notranslate">var orig = ' foo ';
+console.log(orig.trim()); // 'foo'
+
+// 片方からだけ空白を取り除く .trim() の例。
+
+var orig = 'foo ';
+console.log(orig.trim()); // 'foo'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.trim', 'String.prototype.trim')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.String.trim")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.trimStart()")}}</li>
+ <li>{{jsxref("String.prototype.trimEnd()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/trimend/index.html b/files/ja/web/javascript/reference/global_objects/string/trimend/index.html
new file mode 100644
index 0000000000..8e54bf313d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/trimend/index.html
@@ -0,0 +1,80 @@
+---
+title: String.prototype.trimEnd()
+slug: Web/JavaScript/Reference/Global_Objects/String/trimEnd
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/trimEnd
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>trimEnd()</code></strong> メソッドは、文字列の末尾のホワイトスペースを削除します。 <code>trimRight()</code> はこのメソッドのエイリアスです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-trimend.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.trimEnd();
+<var>str</var>.trimRight();</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>呼び出した文字列から末尾 (右端) からホワイトスペースを削除した新しい文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>trimEnd()</code> と <code>trimRight()</code> メソッドは、右端のホワイトスペースを取り除いた文字列を返します。 <code>trimEnd()</code> または <code>trimRight()</code> は元の文字列自身の値に影響を与えません。</p>
+
+<h3 id="Aliasing" name="Aliasing">エイリアス</h3>
+
+<p>{{jsxref("String.prototype.padEnd")}} のような関数との一貫性を持たせるため、標準メソッドの名前は <code>trimEnd</code> となっています。しかし、ウェブの互換性の観点から、 <code>trimRight</code> が <code>trimEnd</code> のエイリアスとして残されます。エンジンによっては、以下のように解釈されます。</p>
+
+<pre class="brush: js notranslate">String.prototype.trimRight.name === "trimEnd";</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_trimEnd" name="Using_trimEnd">trimEnd() の使用</h3>
+
+<p>以下の例では、小文字の文字列 <code>'   foo'</code> を表示します。</p>
+
+<pre class="brush: js; highlight: [5] notranslate">var str = ' foo ';
+
+console.log(str.length); // 8
+
+str = str.trimEnd();
+console.log(str.length); // 6
+console.log(str); // ' foo'
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.trimend', 'String.prototype.trimEnd')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.trimEnd")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.trim()")}}</li>
+ <li>{{jsxref("String.prototype.trimStart()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/trimstart/index.html b/files/ja/web/javascript/reference/global_objects/string/trimstart/index.html
new file mode 100644
index 0000000000..b7c5a6210c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/trimstart/index.html
@@ -0,0 +1,116 @@
+---
+title: String.prototype.trimStart()
+slug: Web/JavaScript/Reference/Global_Objects/String/trimStart
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/trimStart
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>trimStart()</code></strong> メソッドは、文字列の先頭のホワイトスペースを削除します。 <code>trimLeft()</code> はこのメソッドのエイリアスです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-trimstart.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>str</var>.trimStart();
+<var>str</var>.trimLeft();</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>呼び出した文字列から先頭 (左端) からホワイトスペースを削除した新しい文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>trimStart()</code> と <code>trimLeft()</code> メソッドは、左端のホワイトスペースを取り除いた文字列を返します。 <code>trimLeft()</code> または <code>trimStart()</code> は元の文字列自身の値に影響を与えません。</p>
+
+<h3 id="Aliasing" name="Aliasing">エイリアス</h3>
+
+<p>{{jsxref("String.prototype.padStart")}} のような関数との一貫性を持たせるため、標準メソッドの名前は <code>trimStart</code> となっています。しかし、ウェブの互換性の観点から、 <code>trimLeft</code> が <code>trimStart</code> のエイリアスとして残されます。エンジンによっては、以下のように解釈されます。</p>
+
+<pre class="brush: js notranslate">String.prototype.trimLeft.name === "trimStart";</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_trimStart" name="Using_trimStart">trimStart() の使用</h3>
+
+<p>以下の例では、小文字の文字列 <code>'foo  '</code> を表示します。</p>
+
+<pre class="brush: js; highlight: [5] notranslate">var str = ' foo ';
+
+console.log(str.length); // 8
+
+str = str.trimStart();
+console.log(str.length); // 5
+console.log(str); // 'foo '
+</pre>
+
+<h2 id="ポリフィル">ポリフィル</h2>
+
+<pre class="brush: js; highlight: [5] notranslate">//https://github.com/FabioVergani/js-Polyfill_String-trimStart
+
+(function(w){
+    var String=w.String, Proto=String.prototype;
+
+    (function(o,p){
+        if(p in o?o[p]?false:true:true){
+            var r=/^\s+/;
+            o[p]=o.trimLeft||function(){
+                return this.replace(r,'')
+            }
+        }
+    })(Proto,'trimStart');
+
+})(window);
+
+
+/*
+ES6:
+(w=&gt;{
+    const String=w.String, Proto=String.prototype;
+
+    ((o,p)=&gt;{
+        if(p in o?o[p]?false:true:true){
+            const r=/^\s+/;
+            o[p]=o.trimLeft||function(){
+                return this.replace(r,'')
+            }
+        }
+    })(Proto,'trimStart');
+
+})(window);
+*/</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.trimstart', ' String.prototype.trimStart')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.String.trimStart")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.trim()")}}</li>
+ <li>{{jsxref("String.prototype.trimEnd()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/string/valueof/index.html b/files/ja/web/javascript/reference/global_objects/string/valueof/index.html
new file mode 100644
index 0000000000..ab86db2e01
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/string/valueof/index.html
@@ -0,0 +1,64 @@
+---
+title: String.prototype.valueOf()
+slug: Web/JavaScript/Reference/Global_Objects/String/valueOf
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - String
+translation_of: Web/JavaScript/Reference/Global_Objects/String/valueOf
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>valueOf()</code></strong> メソッドは、{{jsxref("String")}} オブジェクトのプリミティブ値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/string-valueof.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>str</var>.valueOf()</code></pre>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>与えられた {{jsxref("String")}} オブジェクトのプリミティブ値を表す文字列。</p>
+
+<h2 id="Description" name="Description">詳細</h2>
+
+<p>{{jsxref("String")}} オブジェクトの <code>valueOf()</code> メソッドは、{{jsxref("String")}} オブジェクトの文字列型としてのプリミティブ値を返します。この値は、{{jsxref("String.prototype.toString()")}} の戻り値と等価です。</p>
+
+<p>このメソッドは通常、JavaScript によって内部的に呼ばれ、コード中で明示的に呼ばれることはありません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_valueOf" name="Using_valueOf()"><code>valueOf()</code> メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var x = new String('Hello world');
+console.log(x.valueOf()); // "Hello world" を表示します
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.prototype.valueof', 'String.prototype.valueOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.String.valueOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.toString()")}}</li>
+ <li>{{jsxref("Object.prototype.valueOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html b/files/ja/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html
new file mode 100644
index 0000000000..7940330fc3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html
@@ -0,0 +1,64 @@
+---
+title: 'Symbol.prototype[@@toPrimitive]'
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>[@@toPrimitive]()</code></strong> メソッドは、 Symbol オブジェクトをプリミティブ値に変換します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Symbol()[Symbol.toPrimitive](<var>hint</var>)
+</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Symbol")}} オブジェクトで指定されたプリミティブ値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Symbol")}} オブジェクトの <code>[@@toPrimitive]()</code> メソッドは、 Symbol オブジェクトのプリミティブ値を Symbol データ型として返します。 <code><var>hint</var></code> 引数は使われません。</p>
+
+<p>JavaScript はオブジェクトをプリミティブ値に変換するために <code>[@@toPrimitive]()</code> メソッドを呼び出します。 <code>[@@toPrimitive]()</code> メソッドを自分で呼び出す必要はほとんどありません。 JavaScript は、プリミティブ値が期待されているオブジェクトに遭遇したときに、自動的にこれを呼び出します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toPrimitive" name="Using_toPrimitive">@@toPrimitive の使用</h3>
+
+<pre class="brush: js notranslate">const sym = Symbol("example");
+sym === sym[Symbol.toPrimitive](); // true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.prototype-@@toprimitive', 'Symbol.prototype.@@toPrimitive')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.@@toPrimitive")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Symbol.toPrimitive")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/asynciterator/index.html b/files/ja/web/javascript/reference/global_objects/symbol/asynciterator/index.html
new file mode 100644
index 0000000000..386580dbd8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/asynciterator/index.html
@@ -0,0 +1,82 @@
+---
+title: Symbol.asyncIterator
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator
+tags:
+ - ECMAScript 2018
+ - JavaScript
+ - Property
+ - Reference
+ - Symbol
+ - asynchronous
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.asyncIterator</code></strong> は、オブジェクトのデフォルトの AsyncIterator を指定します。このプロパティがオブジェクトに設定されている場合、それは非同期反復可能項目であり、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for-await...of">for await...of</a></code> ループで使用できます。</p>
+
+
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>Symbol.asyncIterator</code> シンボルは、オブジェクトの <code>@@asyncIterator</code> メソッドにアクセスするための組み込みシンボルです。オブジェクトを非同期で反復可能にするには、<code>Symbol.asyncIterator</code> キーが必要です。</p>
+
+<p>{{js_property_attributes(0,0,0)}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="User-defined_Async_Iterables" name="User-defined_Async_Iterables">ユーザー定義の非同期反復可能項目</h3>
+
+<p>オブジェクトに <code>[Symbol.asyncIterator]</code> プロパティを設定することで、独自の非同期イテレータを定義することができます。</p>
+
+<pre class="brush: js notranslate">const myAsyncIterable = {
+ async* [Symbol.asyncIterator]() {
+ yield "hello";
+ yield "async";
+ yield "iteration!";
+ }
+};
+
+(async () =&gt; {
+ for await (const x of myAsyncIterable) {
+ console.log(x);
+ // 期待される出力:
+ // "hello"
+ // "async"
+ // "iteration!"
+ }
+})();
+</pre>
+
+<p>API を作成するとき、非同期反復可能項目はデータのストリームやリストのような、<em>反復可能</em>なものを表すために設計されたものであり、ほとんどの状況でコールバックやイベントを完全に置き換えるものではないことに注意してください。</p>
+
+<h3 id="Built-in_Async_Iterables" name="Built-in_Async_Iterables">組み込みの非同期反復処理</h3>
+
+<p>現在のところ、デフォルトで <code>[Symbol.asyncIterator]</code> キーが設定されている組み込み JavaScript オブジェクトはありません。しかし、WHATWG Streams は非同期反復可能な最初の組み込みオブジェクトになるように設定されており、最近 <code>[Symbol.asyncIterator]</code> が仕様に組み込まれました。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.asynciterator', 'Symbol.asyncIterator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{compat("javascript.builtins.Symbol.asyncIterator")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復処理プロトコル </a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/for-await...of">for await... of</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/description/index.html b/files/ja/web/javascript/reference/global_objects/symbol/description/index.html
new file mode 100644
index 0000000000..581ebe83bd
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/description/index.html
@@ -0,0 +1,66 @@
+---
+title: Symbol.prototype.description
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/description
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/description
+---
+<div>{{JSRef}}</div>
+
+<p>読み取り専用 <code><strong>description</strong></code> プロパティは、 {{JSxRef("Symbol")}} オブジェクトのオプションの説明を返す文字列です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-prototype-description.html")}}</div>
+
+
+
+<h2 id="解説">解説</h2>
+
+<p>{{JSxRef("Symbol")}} オブジェクトは、オプションの説明を使用して作成できます。これはデバッグには使用できますが、シンボル自体にはアクセスできません。 <code>Symbol.prototype.description</code> プロパティを使用して、その説明を読み取ることができます。囲んでいる "<code>Symbol()</code>" 文字列が含まれていないため、 <code>Symbol.prototype.toString()</code> とは異なります。例を参照してください。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="description_を使用する">description を使用する</h3>
+
+<pre class="brush: js notranslate">Symbol('desc').toString(); // "Symbol(desc)"
+Symbol('desc').description; // "desc"
+Symbol('').description; // ""
+Symbol().description; // undefined
+
+// well-known symbols
+Symbol.iterator.toString(); // "Symbol(Symbol.iterator)"
+Symbol.iterator.description; // "Symbol.iterator"
+
+// global symbols
+Symbol.for('foo').toString(); // "Symbol(foo)"
+Symbol.for('foo').description; // "foo"
+
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-symbol.prototype.description", "get Symbol.prototype.description")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.builtins.Symbol.description")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{JSxRef("Symbol.prototype.toString()")}}</li>
+ <li>Polyfill: <a href="https://npmjs.com/symbol.prototype.description">https://npmjs.com/symbol.prototype.description</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/for/index.html b/files/ja/web/javascript/reference/global_objects/symbol/for/index.html
new file mode 100644
index 0000000000..2d7fff66d4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/for/index.html
@@ -0,0 +1,107 @@
+---
+title: Symbol.for()
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/for
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/for
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.for(key)</code></strong> メソッドは、引数で与えられたキーでランタイム全体のシンボルレジストリ内に存在しているシンボルを検索し、見つかった場合はそれを返します。さもなければ、新しいシンボルがこのキーでグローバルシンボルレジストリ内に生成されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-for.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Symbol.for(<var>key</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>key</var></code></dt>
+ <dd>必須の文字列です。シンボルに対するキー(シンボルの説明のためにも使用されます)。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>見つかった場合は指定したキーを持つ既存のシンボルです。さもなければ新しいシンボルを作成して返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Symbol()</code> と対照的に、<code>Symbol.for()</code> 関数はグローバルシンボルレジストリリスト内で利用可能なシンボルを生成します。<code>Symbol.for()</code> は必ずしもすべての呼び出しで新しいシンボルを生成するわけでなく、引数で与えられた <code>key</code> をもつシンボルがレジストリ内にすでに存在しているかどうか最初に調べます。存在している場合は、そのシンボルが返されます。引数で与えられたキーをもつシンボルが見つからない場合、<code>Symbol.for()</code> は新しいグローバルシンボルを生成します。</p>
+
+<h3 id="Global_symbol_registry" name="Global_symbol_registry">グローバルシンボルレジストリ</h3>
+
+<p>グローバルシンボルレジストリは次のレコード構造をもつリストで、値は空で初期化されます:</p>
+
+<table class="standard-table">
+ <caption>グローバルシンボルレジストリ内のレコード</caption>
+ <tbody>
+ <tr>
+ <th>フィールド名</th>
+ <th>値</th>
+ </tr>
+ <tr>
+ <td>[[key]]</td>
+ <td>シンボルを識別するための文字列キー。</td>
+ </tr>
+ <tr>
+ <td>[[symbol]]</td>
+ <td>グローバルに格納されているシンボル。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Symbol.for" name="Using_Symbol.for">Symbol.for() の使用</h3>
+
+<pre class="brush: js notranslate">Symbol.for('foo'); // create a new global symbol
+Symbol.for('foo'); // retrieve the already created symbol
+
+// Same global symbol, but not locally
+Symbol.for('bar') === Symbol.for('bar'); // true
+Symbol('bar') === Symbol('bar'); // false
+
+// The key is also used as the description
+var sym = Symbol.for('mario');
+sym.toString(); // "Symbol(mario)"
+</pre>
+
+<p>グローバルシンボルキーや他の (ライブラリコードの) グローバルシンボルとの名前の衝突を避けるために、シンボルの前に接頭辞をつけると良いかもしれません。</p>
+
+<pre class="brush: js notranslate">Symbol.for('mdn.foo');
+Symbol.for('mdn.bar');
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.for', 'Symbol.for')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.for")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Symbol.keyFor()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/hasinstance/index.html b/files/ja/web/javascript/reference/global_objects/symbol/hasinstance/index.html
new file mode 100644
index 0000000000..878bb5ea98
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/hasinstance/index.html
@@ -0,0 +1,80 @@
+---
+title: Symbol.hasInstance
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Reference
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>Symbol.hasInstance</code></strong> は、コンストラクターオブジェクトが、そのインスタンスのオブジェクトとして認識されるかどうかを決定するために使用されます。このシンボルで、{{jsxref("Operators/instanceof", "instanceof")}} 演算子の動作をカスタマイズすることができます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-hasinstance.html")}}</div>
+
+<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div>
+
+<div>{{js_property_attributes(0,0,0)}}</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Custom_instanceof_behavior" name="Custom_instanceof_behavior">独自のインスタンスでの動作</h3>
+
+<p>たとえば、次のようにして <code>instanceof</code> の独自の動作を実装することができます。</p>
+
+<pre class="brush: js notranslate">class MyArray {
+ static [Symbol.hasInstance](instance) {
+ return Array.isArray(instance)
+ }
+}
+console.log([] instanceof MyArray); // true
+</pre>
+
+<pre class="brush: js notranslate">function MyArray() { }
+Object.defineProperty(MyArray, Symbol.hasInstance, {
+  value: function(instance) { return Array.isArray(instance); }
+});
+console.log([] instanceof MyArray); // true</pre>
+
+<h3 id="Checking_the_instance_of_an_object" name="Checking_the_instance_of_an_object">オブジェクトのインスタンスを確認する</h3>
+
+<p><code>instanceof</code> キーワードを使ってオブジェクトがクラスのインスタンスであるかどうかを確認するのと同じ方法で、<code>Symbol.hasInstance</code> を使って確認することもできます。</p>
+
+<pre class="brush: js notranslate">class Animal {
+ constructor() {}
+}
+
+const cat = new Animal();
+
+console.log(Animal[Symbol.hasInstance](cat)); // true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.hasInstance")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Operators/instanceof", "instanceof")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/index.html b/files/ja/web/javascript/reference/global_objects/symbol/index.html
new file mode 100644
index 0000000000..a4537d2808
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/index.html
@@ -0,0 +1,204 @@
+---
+title: Symbol
+slug: Web/JavaScript/Reference/Global_Objects/Symbol
+tags:
+ - Class
+ - ECMAScript 2015
+ - JavaScript
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol
+---
+<div>{{JSRef}}</div>
+
+<p>データ型 <strong>symbol</strong> は、<a href="https://wiki.developer.mozilla.org/ja/docs/Glossary/Primitive">プリミティブデータ型</a>です。<code>Symbol()</code> 関数は、<strong>symbol</strong> 型の値を返します。これは組み込みオブジェクトを公開するための静的プロパティを持ち、グローバルシンボルレジストリを公開するための静的メソッドを持つので、組み込みオブジェクトクラスのようにも見えますが、コンストラクターとしての機能を持たず、"<code>new Symbol()</code>" はサポートされていません。</p>
+
+<p><code>Symbol()</code> から返されるすべてのシンボル値は一意です。シンボル値は、オブジェクトプロパティの識別子として使用できます。これがデータ型の主な利用目的ですが、不透明なデータ型の有効化や、実装サポートされている一意の識別子として機能するなど、他の利用目的も存在します。目的や使用方法に関する詳細を知りたい場合、<a href="https://developer.mozilla.org/ja/docs/Glossary/Symbol">MDN用語集:Symbol</a> を見てください。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>新しいプリミティブシンボルを生成するために、説明のためのオプション文字列とともに <code>Symbol()</code> を記述します。</p>
+
+<pre class="brush: js notranslate">let sym1 = Symbol()
+let sym2 = Symbol('foo')
+let sym3 = Symbol('foo')
+</pre>
+
+<p>上のコードでは、3 つの新しいシンボルを作成しています。<code>Symbol('foo')</code> は文字列 <code>'foo'</code> を強制的にシンボルにしているわけではなく、毎回新しいシンボルを生成していることに注意してください。</p>
+
+<pre class="brush: js notranslate">Symbol('foo') === Symbol('foo') // false
+</pre>
+
+<p>次の {{jsxref("Operators/new", "new")}} 演算子を用いた構文では、{{jsxref("TypeError")}} が投げられます。</p>
+
+<pre class="brush: js notranslate">let sym = new Symbol() // TypeError
+</pre>
+
+<p>これにより、新しいシンボル値を生成する代わりに明示的な <code>Symbol</code> ラッパーオブジェクトを生成することを防ぎます。プリミティブデータ型の周りに明示的なラッパーオブジェクトを生成することは、もはや ECMAScript6 ではサポートされていません。しかし、<code>new Boolean</code> や <code>new String</code>、<code>new Number</code> のような既存のプリミティブラッパーオブジェクトは、歴史的な理由からまだ生成できます。</p>
+
+<p>もし本当に <code>Symbol</code> ラッパーオブジェクトを生成したいのなら、<code>Object()</code> 関数を使用できます。</p>
+
+<pre class="brush: js notranslate">let sym = Symbol('foo')
+typeof sym // "symbol"
+let symObj = Object(sym)
+typeof symObj // "object"
+</pre>
+
+<h3 id="Shared_symbols_in_the_global_symbol_registry" name="Shared_symbols_in_the_global_symbol_registry">グローバルシンボルレジストリの共有シンボル</h3>
+
+<p>上述の <code>Symbol()</code> 関数を使用した構文は、コードベース全体で使用できるグローバルシンボルは作成されません。ファイルを跨いでグローバルスコープのような環境でも利用可能なシンボルを作成するには、{{jsxref("Symbol.for()")}} と {{jsxref("Symbol.keyFor()")}} のメソッドを使用して、グローバルシンボルレジストリからシンボルを設定および取得します。</p>
+
+<h3 id="Finding_symbol_properties_on_objects" name="Finding_symbol_properties_on_objects">オブジェクトのシンボルプロパティを探す</h3>
+
+<p>{{jsxref("Object.getOwnPropertySymbols()")}} メソッドは、シンボルの配列を返し、与えられたオブジェクトのシンボルプロパティを見つけることができます。すべてのオブジェクトは、シンボルなしで初期化されます。そのため、オブジェクトにシンボルプロパティを設定しないかぎり、この配列は空だということに注意してください。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/Symbol"><code>Symbol()</code></a></dt>
+ <dd>新しい <code>Symbol</code> オブジェクトを作成します。"<code>new Symbol()</code>" という構文をサポートしていないので、コンストラクターとしては不完全です。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Symbol.asyncIterator")}}</dt>
+ <dd>オブジェクトのデフォルトの AsyncIterator を返すメソッド。<a href="/ja/docs/Web/JavaScript/Reference/Statements/for-await...of"><code>for await...of</code></a> によって使用されます。</dd>
+ <dt>{{jsxref("Symbol.hasInstance")}}</dt>
+ <dd>コンストラクターのオブジェクトがオブジェクトをインスタンスとして認識しているかどうかを判定するメソッド。{{jsxref("Operators/instanceof", "instanceof")}} によって使用されます。</dd>
+ <dt>{{jsxref("Symbol.isConcatSpreadable")}}</dt>
+ <dd>オブジェクトをその配列要素にフラット化する必要があるかどうかを示すブール値。{{jsxref("Array.prototype.concat()")}} によって使用されます。</dd>
+ <dt>{{jsxref("Symbol.iterator")}}</dt>
+ <dd>オブジェクトのデフォルトのイテレーターを返すメソッド。<a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of"><code>for...of</code></a> によって使用されます。</dd>
+ <dt>{{jsxref("Symbol.match")}}</dt>
+ <dd>文字列と照合するメソッド。オブジェクトを正規表現として使用できるかどうかを判断するためにも使用されます。{{jsxref("String.prototype.match()")}} によって使用されます。</dd>
+ <dt>{{jsxref("Symbol.matchAll")}}</dt>
+ <dd>文字列に対する正規表現の一致を生成するイテレーターを返すメソッド。{{jsxref("String.prototype.matchAll()")}} によって使用されます。</dd>
+ <dt>{{jsxref("Symbol.replace")}}</dt>
+ <dd>文字列の一致した部分文字列を置き換えるメソッド。{{jsxref("String.prototype.replace()")}} によって使用されます。</dd>
+ <dt>{{jsxref("Symbol.search")}}</dt>
+ <dd>正規表現に一致する文字列内のインデックスを返すメソッド。{{jsxref("String.prototype.search()")}} によって使用されます。</dd>
+ <dt>{{jsxref("Symbol.split")}}</dt>
+ <dd>正規表現に一致するインデックスで文字列を分割するメソッド。{{jsxref("String.prototype.split()")}} によって使用されます。</dd>
+ <dt>{{jsxref("Symbol.species")}}</dt>
+ <dd>派生オブジェクトを作成するためのコンストラクタ関数。</dd>
+ <dt>{{jsxref("Symbol.toPrimitive")}}</dt>
+ <dd>オブジェクトをプリミティブ値に変換するメソッド。</dd>
+ <dt>{{jsxref("Symbol.toStringTag")}}</dt>
+ <dd>オブジェクトのデフォルトの説明に使用される文字列の値。{{jsxref("Object.prototype.toString()")}} によって使用されます。</dd>
+ <dt>{{jsxref("Symbol.unscopables")}}</dt>
+ <dd>自身のプロパティ名と継承されたプロパティ名が、関連付けられたオブジェクトの <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/with">with</a></code> 環境バインディングから除外されているオブジェクトの値。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Symbol.for()", "Symbol.for(key)")}}</dt>
+ <dd>指定された <code><var>key</var></code> を使用して既存のシンボルを検索し、見つかればそれを返します。そうでない場合は、この <code><var>key</var></code> で グローバルシンボルレジストリに新しいシンボルが作成されます。</dd>
+ <dt>{{jsxref("Symbol.keyFor", "Symbol.keyFor(sym)")}}</dt>
+ <dd>指定したシンボルのグローバルシンボルレジストリから共有シンボルキーを取得します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Symbol.prototype.description")}}</dt>
+ <dd>シンボルの説明を含む読み取り専用の文字列。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("Symbol.prototype.toSource()")}}</dt>
+ <dd>{{jsxref("Global_Objects/Symbol", "Symbol")}} オブジェクトのソースを含む文字列を返します。{{jsxref("Object.prototype.toSource()")}} メソッドを上書きします。</dd>
+ <dt>{{jsxref("Symbol.prototype.toString()")}}</dt>
+ <dd>シンボルの説明を含む文字列を返します。{{jsxref("Object.prototype.toString()")}} メソッドを上書きします。</dd>
+ <dt>{{jsxref("Symbol.prototype.valueOf()")}}</dt>
+ <dd>{{jsxref("Symbol")}} オブジェクトのプリミティブ値を返します。{{jsxref("Object.prototype.valueOf()")}} メソッドを上書きします。</dd>
+ <dt>{{jsxref("Symbol.prototype.@@toPrimitive()", "Symbol.prototype[@@toPrimitive]")}}</dt>
+ <dd>{{jsxref("Symbol")}} オブジェクトのプリミティブ値を返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_typeof_operator_with_symbols" name="Using_the_typeof_operator_with_symbols">シンボルと一緒に <code>typeof</code> 演算子を使用する</h3>
+
+<p>{{jsxref("Operators/typeof", "typeof")}} 演算子は、シンボルを識別するために役立ちます。</p>
+
+<pre class="brush: js notranslate">typeof Symbol() === 'symbol'
+typeof Symbol('foo') === 'symbol'
+typeof Symbol.iterator === 'symbol'
+</pre>
+
+<h3 id="Symbol_type_conversions" name="Symbol_type_conversions">シンボルの型変換</h3>
+
+<p>シンボルの型変換作業を行うとき、いくつかの点に注意してください。</p>
+
+<ul>
+ <li>シンボルを数値に変換しようとすると、{{jsxref("TypeError")}} が投げられます(例: <code>+<var>sym</var></code> または <code><var>sym</var> | 0</code> )。</li>
+ <li>緩い等価演算子を使うとき、<code>Object(<var>sym</var>) == <var>sym</var></code> は <code>true</code> を返します。</li>
+ <li><code>Symbol('foo') + 'bar'</code> は {{jsxref("TypeError")}}(シンボルを文字列に変換できません)を投げます。これは新しい文字列プロパティ名を暗黙的に生成することを防ぎます。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/String#String_conversion">"安全な" <code>String(<var>sym</var>)</code> 変換</a>はシンボルとともに {{jsxref("Symbol.prototype.toString()")}} を呼び出したかのように動作しますが、<code>new String(<var>sym</var>)</code> は TypeError を投げることに注意してください。</li>
+</ul>
+
+<h3 id="Symbols_and_for...in_iteration" name="Symbols_and_for...in_iteration">シンボルと <code>for...in</code> による反復</h3>
+
+<p>シンボルは <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a></code> よる反復からは取得できません。加えて、{{jsxref("Object.getOwnPropertyNames()")}} はシンボルオブジェクトプロパティを返しません、それらを取得するために {{jsxref("Object.getOwnPropertySymbols()")}} を使うことができます。</p>
+
+<pre class="brush: js notranslate">let obj = {}
+
+obj[Symbol('a')] = 'a'
+obj[Symbol.for('b')] = 'b'
+obj['c'] = 'c'
+obj.d = 'd'
+
+for (let i in obj) {
+ console.log(i) // logs "c" and "d"
+}</pre>
+
+<h3 id="Symbols_and_JSON.stringify" name="Symbols_and_JSON.stringify()">シンボルと <code>JSON.stringify()</code></h3>
+
+<p><code>JSON.stringify()</code> を使用するとき、シンボルをキーとしたプロパティは完全に無視されます。</p>
+
+<pre class="brush: js notranslate">JSON.stringify({[Symbol('foo')]: 'foo'})
+// '{}'
+</pre>
+
+<p>詳しくは {{jsxref("JSON.stringify()")}} を見てください。</p>
+
+<h3 id="Symbol_wrapper_objects_as_property_keys" name="Symbol_wrapper_objects_as_property_keys">プロパティキーとしてのシンボルラッパーオブジェクト</h3>
+
+<p>シンボルラッパーオブジェクトがプロパティキーとして使用されている場合、このオブジェクトはそのラップされたシンボルを強制的に使用します。</p>
+
+<pre class="brush: js notranslate">let sym = Symbol('foo')
+let obj = {[sym]: 1}
+obj[sym] // 1
+obj[Object(sym)] // still 1
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol-objects', 'Symbol')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.Symbol")}}</p>
+
+<h2 id="See_also" name="See_also">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Glossary/Symbol">用語集: Symbol</a></li>
+ <li>{{jsxref("Operators/typeof", "typeof")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Data_structures">データ型とデータ構造</a></li>
+ <li><a href="https://hacks.mozilla.org/2015/06/es6-in-depth-symbols/">"ES6 In Depth: Symbols" on hacks.mozilla.org</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html b/files/ja/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html
new file mode 100644
index 0000000000..d67b61c1b5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html
@@ -0,0 +1,98 @@
+---
+title: Symbol.isConcatSpreadable
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.isConcatSpreadable</code></strong> は、{{jsxref("Array.prototype.concat()")}} メソッドを使用してオブジェクトを配列の要素に平坦化する場合の設定として使用されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-isconcatspreadable.html")}}</div>
+
+
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>@@isConcatSpreadable</code> シンボル(<code>Symbol.isConcatSpreadable</code>)は直接、または継承されたプロパティとして定義でき、その値は boolean です。これは、配列や配列状のオブジェクトの振る舞いを制御します:</p>
+
+<ul>
+ <li>配列オブジェクトにとって、既定の動作は要素の展開(平坦化)です。<code>Symbol.isConcatSpreadable</code> はこれらの場合に平坦化を避けます。</li>
+ <li>配列状のオブジェクトにとって、既定の動作は展開や平坦化を行いません。<code>Symbol.isConcatSpreadable</code> はこれらの場合に平坦化を強制します。</li>
+</ul>
+
+<p>{{js_property_attributes(0,0,0)}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Arrays" name="Arrays">配列</h3>
+
+<p>既定で、{{jsxref("Array.prototype.concat()")}} は配列を次の結果のように展開(平坦化)します:</p>
+
+<pre class="brush: js notranslate">let alpha = ['a', 'b', 'c'],
+let numeric = [1, 2, 3]
+
+let alphaNumeric = alpha.concat(numeric)
+
+console.log(alphaNumeric) // Result: ['a', 'b', 'c', 1, 2, 3]
+</pre>
+
+<p><code>Symbol.isConcatSpreadable</code> を <code>false</code> に設定した場合、既定の動作を使用できなくなります:</p>
+
+<pre class="brush: js notranslate">let alpha = ['a', 'b', 'c'],
+let numeric = [1, 2, 3]
+
+numeric[Symbol.isConcatSpreadable] = false
+let alphaNumeric = alpha.concat(numeric)
+
+console.log(alphaNumeric) // Result: ['a', 'b', 'c', [1, 2, 3] ]
+</pre>
+
+<h3 id="Array-like_objects" name="Array-like_objects">配列状のオブジェクト</h3>
+
+<p>配列状のオブジェクトは、既定で展開しません。<code>Symbol.isConcatSpreadable</code> 平坦化した配列を取得するには、<code>true</code> に設定する必要があります:</p>
+
+<pre class="brush: js notranslate">let x = [1, 2, 3]
+
+let fakeArray = {
+ [Symbol.isConcatSpreadable]: true,
+ length: 2,
+ 0: 'hello',
+ 1: 'world'
+}
+
+x.concat(fakeArray) // [1, 2, 3, "hello", "world"]
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> <code>length</code> プロパティは、追加するオブジェクトプロパティの数を制御するために使用されます。上記の例では、<code>length:2</code> は 2 つのプロパティを追加する必要があることを示しています。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.Symbol.isConcatSpreadable")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.concat()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/iterator/index.html b/files/ja/web/javascript/reference/global_objects/symbol/iterator/index.html
new file mode 100644
index 0000000000..f1024e305d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/iterator/index.html
@@ -0,0 +1,112 @@
+---
+title: Symbol.iterator
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/iterator
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/iterator
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.iterator</code></strong> は、オブジェクトのデフォルトのイテレーターを指定します。<a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of"><code>for...of</code></a> によって使用されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-iterator.html")}}</div>
+
+
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>オブジェクトを反復する必要がある場合(<code>for..of</code> ループの開始時など)は常に、その <code>@@iterator</code> メソッドが引数なしで呼び出され、返された<strong>イテレーター</strong>を使用して反復される値が取得されます。</p>
+
+<p>一部の組み込み型にはデフォルトの反復動作がありますが、他の型( {{jsxref("Object")}} など)にはありません。<code>@@iterator</code> メソッドの組み込み型は次のとおりです。</p>
+
+<ul>
+ <li>{{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}}</li>
+ <li>{{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}}</li>
+ <li>{{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}}</li>
+ <li>{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}</li>
+ <li>{{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}}</li>
+</ul>
+
+<p>詳細については、<a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復処理プロトコル</a>も参照してください。</p>
+
+<p>{{js_property_attributes(0,0,0)}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="User-defined_iterables" name="User-defined_iterables">ユーザー定義の反復可能項目</h3>
+
+<p>次のように独自の反復可能オブジェクトを作成できます。</p>
+
+<pre class="brush: js notranslate">var myIterable = {}
+myIterable[Symbol.iterator] = function* () {
+ yield 1;
+ yield 2;
+ yield 3;
+};
+[...myIterable] // [1, 2, 3]
+</pre>
+
+<p>または、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names">計算されたプロパティ</a>を使用して、クラスやオブジェクト内で反復可能オブジェクトを直接定義できます。</p>
+
+<pre class="brush: js notranslate">class Foo {
+ *[Symbol.iterator] () {
+ yield 1;
+ yield 2;
+ yield 3;
+ }
+}
+
+const someObj = {
+ *[Symbol.iterator] () {
+ yield 'a';
+ yield 'b';
+ }
+}
+
+[...new Foo] // [ 1, 2, 3 ]
+[...someObj] // [ 'a', 'b' ]
+</pre>
+
+<h3 id="Non-well-formed_iterables" name="Non-well-formed_iterables">非整形反復処理</h3>
+
+<p>もし反復可能項目の <code>@@iterator</code> メソッドがイテレーターオブジェクトを返さない場合、それは非整形反復可能項目です。それを使用すると、実行時に例外が発生したり、バグが発生したりする可能性があります。</p>
+
+<pre class="brush: js notranslate">var nonWellFormedIterable = {}
+nonWellFormedIterable[Symbol.iterator] = () =&gt; 1
+[...nonWellFormedIterable] // TypeError: [] is not a function
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.iterator', 'Symbol.iterator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.Symbol.iterator")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復処理プロトコル </a></li>
+ <li>{{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}}</li>
+ <li>{{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}}</li>
+ <li>{{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}}</li>
+ <li>{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}</li>
+ <li>{{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/keyfor/index.html b/files/ja/web/javascript/reference/global_objects/symbol/keyfor/index.html
new file mode 100644
index 0000000000..e1d6ebf401
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/keyfor/index.html
@@ -0,0 +1,74 @@
+---
+title: Symbol.keyFor()
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/keyFor
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/keyFor
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.keyFor(sym)</code></strong> メソッドは、指定されたシンボルについて、共有シンボルキーをグローバルシンボルレジストリから受け取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-keyfor.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Symbol.keyFor(<var>sym</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>sym</var></code></dt>
+ <dd>シンボル、必須。キーを探すシンボル。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>グローバルレジストリで見つかった場合は、与えられたシンボルのキーを表す文字列です。それ以外の場合は {{jsxref("undefined")}} です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_keyFor" name="Using_keyFor">keyFor() の使用</h3>
+
+<pre class="brush: js notranslate">var globalSym = Symbol.for('foo'); // create a new global symbol
+Symbol.keyFor(globalSym); // "foo"
+
+var localSym = Symbol();
+Symbol.keyFor(localSym); // undefined
+
+// well-known symbols are not symbols registered
+// in the global symbol registry
+Symbol.keyFor(Symbol.iterator) // undefined
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.keyfor', 'Symbol.keyFor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.keyFor")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Symbol.for()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/match/index.html b/files/ja/web/javascript/reference/global_objects/symbol/match/index.html
new file mode 100644
index 0000000000..5f19c5f307
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/match/index.html
@@ -0,0 +1,70 @@
+---
+title: Symbol.match
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/match
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/match
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.match</code></strong> は、文字列に対して正規表現のマッチングを指定します。この関数は {{jsxref("String.prototype.match()")}} メソッドによって呼び出されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-match.html")}}</div>
+
+
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>この関数は、オブジェクトが正規表現の動作をするかどうかを識別するためにも使用されます。たとえば、{{jsxref("String.prototype.startsWith()")}}, {{jsxref("String.prototype.endsWith()")}}, {{jsxref("String.prototype.includes()")}} メソッドは、最初の引数が正規表現であるかどうかを確認し、正規表現である場合は {{jsxref("TypeError")}} を投げます。ここで、<code>一致</code>記号が <code>false</code>(または<a href="/ja/docs/Glossary/Falsy">偽値</a>)に設定されている場合、そのオブジェクトが正規表現オブジェクトとして使用されることを意図していないことを示します。</p>
+
+<p>{{js_property_attributes(0,0,0)}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Disabling_the_isRegExp_check" name="Disabling_the_isRegExp_check"><code>isRegExp</code> チェックを無効にする</h3>
+
+<p>以下のコードは {{jsxref("TypeError")}} を投げます。</p>
+
+<pre class="brush: js notranslate">'/bar/'.startsWith(/bar/);
+
+// Throws TypeError, as /bar/ is a regular expression
+// and Symbol.match is not modified.</pre>
+
+<p>ただし、<code>Symbol.match</code> を <code>false</code> に設定すると、(<code>match</code> プロパティを使用する)<code>isRegExp</code> チェックは、オブジェクトが正規表現オブジェクトではないことを示します。結果として、<code>startsWith</code> と <code>endsWith</code> メソッドは、TypeError を投げません。</p>
+
+<pre class="brush: js notranslate">var re = /foo/;
+re[Symbol.match] = false;
+'/foo/'.startsWith(re); // true
+'/baz/'.endsWith(re); // false
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.match', 'Symbol.match')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.Symbol.match")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Symbol.replace")}}</li>
+ <li>{{jsxref("Symbol.search")}}</li>
+ <li>{{jsxref("Symbol.split")}}</li>
+ <li>{{jsxref("RegExp.@@match", "RegExp.prototype[@@match]()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/matchall/index.html b/files/ja/web/javascript/reference/global_objects/symbol/matchall/index.html
new file mode 100644
index 0000000000..e973cd69ba
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/matchall/index.html
@@ -0,0 +1,77 @@
+---
+title: Symbol.matchAll
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/matchAll
+tags:
+ - JavaScript
+ - Property
+ - Reference
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/matchAll
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.matchAll</code></strong> は、文字列に対する正規表現の一致を生成するイテレーターを返します。この関数は {{jsxref("String.prototype.matchAll()")}} メソッドによって呼び出されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-matchall.html","shorter")}}</div>
+
+
+
+<h2 id="Description" name="Description">説明</h2>
+
+<div>
+<p>このシンボルは {{jsxref("String.prototype.matchAll()")}}、特に {{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}} で使用されます。以下の 2 つの例は同じ結果を返します。</p>
+
+<pre class="brush: js notranslate">'abc'.matchAll(/a/);
+
+/a/[Symbol.matchAll]('abc');</pre>
+
+<p>このメソッドは、{{jsxref("RegExp")}} サブクラス内の一致動作をカスタマイズするために存在します。</p>
+
+<p>{{js_property_attributes(0,0,0)}}</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Symbol.matchAll" name="Using_Symbol.matchAll">Symbol.matchAll を使用する</h3>
+
+<pre class="brush: js notranslate">let re = /[0-9]+/g;
+let str = '2016-01-02|2019-03-07';
+
+const numbers = {
+ *[Symbol.matchAll] (str) {
+ for (const n of str.matchAll(/[0-9]+/g))
+ yield n[0];
+ }
+};
+
+console.log(Array.from(str.matchAll(numbers)));
+// Array ["2016", "01", "02", "2019", "03", "07"]
+</pre>
+
+<p>その他の例については、{{jsxref("String.prototype.matchAll()")}} と {{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}} を参照してください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.matchall', 'Symbol.matchAll')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.Symbol.matchAll")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.matchAll()")}}</li>
+ <li>{{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/replace/index.html b/files/ja/web/javascript/reference/global_objects/symbol/replace/index.html
new file mode 100644
index 0000000000..6e1579bd8a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/replace/index.html
@@ -0,0 +1,67 @@
+---
+title: Symbol.replace
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/replace
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/replace
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.replace</code></strong> ウェルノウンシンボルは、文字列の一致した部分を置き換えるメソッドを指定します。この関数は {{jsxref("String.prototype.replace()")}} メソッドから呼び出されます。</p>
+
+<p>詳しくは、 {{jsxref("RegExp.@@replace", "RegExp.prototype[@@replace]()")}} と {{jsxref("String.prototype.replace()")}} を参照してください。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-replace.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0,0,0)}}</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_Symbol.replace" name="Using_Symbol.replace">Symbol.replace の使用</h3>
+
+<pre class="brush: js notranslate">class CustomReplacer {
+ constructor(value) {
+ this.value = value;
+ }
+ [Symbol.replace](string) {
+ return string.replace(this.value, '#!@?');
+ }
+}
+
+console.log('football'.replace(new CustomReplacer('foo')));
+// expected output: "#!@?tball"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.replace', 'Symbol.replace')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.replace")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Symbol.match")}}</li>
+ <li>{{jsxref("Symbol.search")}}</li>
+ <li>{{jsxref("Symbol.split")}}</li>
+ <li>{{jsxref("RegExp.@@replace", "RegExp.prototype[@@replace]()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/search/index.html b/files/ja/web/javascript/reference/global_objects/symbol/search/index.html
new file mode 100644
index 0000000000..83a963dae6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/search/index.html
@@ -0,0 +1,67 @@
+---
+title: Symbol.search
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/search
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/search
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.search</code></strong> はウェルノウンシンボルで、正規表現に一致する文字列内の位置を返すメソッドを指定します。この関数は {{jsxref("String.prototype.search()")}} メソッドによって呼び出されます。</p>
+
+<p>詳しくは、 {{jsxref("RegExp.@@search", "RegExp.prototype[@@search]()")}} と {{jsxref("String.prototype.search()")}} を参照してください。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-search.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0,0,0)}}</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Custom_string_search" name="Custom_string_search">独自の文字列検索</h3>
+
+<pre class="brush: js notranslate">class caseInsensitiveSearch {
+ constructor(value) {
+ this.value = value.toLowerCase();
+ }
+ [Symbol.search](string) {
+ return string.toLowerCase().indexOf(this.value);
+ }
+}
+
+console.log('foobar'.search(new caseInsensitiveSearch('BaR')));
+// expected output: 3</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.search', 'Symbol.search')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.search")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Symbol.match")}}</li>
+ <li>{{jsxref("Symbol.replace")}}</li>
+ <li>{{jsxref("Symbol.split")}}</li>
+ <li>{{jsxref("RegExp.@@search", "RegExp.prototype[@@search]()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/species/index.html b/files/ja/web/javascript/reference/global_objects/symbol/species/index.html
new file mode 100644
index 0000000000..c192f1b565
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/species/index.html
@@ -0,0 +1,68 @@
+---
+title: Symbol.species
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/species
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/species
+---
+<div>{{JSRef}}</div>
+
+<p>ウェルノウンシンボルの <code><strong>Symbol.species</strong></code> は、コンストラクター関数が派生オブジェクトを生成する際に使用する関数値プロパティを指定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-species.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>species</code> アクセサープロパティを使用すると、オブジェクトの生成に使われるデフォルトコンストラクターを上書きすることができます。</p>
+
+<p>{{js_property_attributes(0,0,0)}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_species" name="Using_species">species の使用</h3>
+
+<p>{{jsxref("Array")}} オブジェクトを派生した配列クラス <code>MyArray</code> で返したいことがあるでしょう。例えば、デフォルトのコンストラクターを返す {{jsxref("Array.map", "map()")}} のようなメソッドを使用している場合、これらのメソッドは <code>MyArray</code> オブジェクトではなく親の <code>Array</code> オブジェクトを返したいとします。 <code>species</code> シンボルでこれを実現することができます。</p>
+
+<pre class="brush: js notranslate">class MyArray extends Array {
+ // Overwrite species to the parent Array constructor
+ static get [Symbol.species]() { return Array; }
+}
+let a = new MyArray(1,2,3);
+let mapped = a.map(x =&gt; x * x);
+
+console.log(mapped instanceof MyArray); // false
+console.log(mapped instanceof Array); // true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.species', 'Symbol.species')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.species")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map.@@species", "Map[@@species]")}}</li>
+ <li>{{jsxref("Set.@@species", "Set[@@species]")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/split/index.html b/files/ja/web/javascript/reference/global_objects/symbol/split/index.html
new file mode 100644
index 0000000000..838b757727
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/split/index.html
@@ -0,0 +1,65 @@
+---
+title: Symbol.split
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/split
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/split
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.split</code></strong> ウェルノウンシンボルは、正規表現に一致する位置で文字列を分割するメソッドを指定します。この関数は {{jsxref("String.prototype.split()")}} メソッドによって呼び出されます。</p>
+
+<p>詳しくは、 {{jsxref("RegExp.@@split", "RegExp.prototype[@@split]()")}} と {{jsxref("String.prototype.split()")}} を参照してください。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-split.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0,0,0)}}</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Custom_reverse_split" name="Custom_reverse_split">独自の逆方向の分割</h3>
+
+<pre class="brush: js notranslate">class ReverseSplit {
+ [Symbol.split](string) {
+ const array = string.split(' ');
+ return array.reverse();
+ }
+}
+
+console.log('Another one bites the dust'.split(new ReverseSplit()));
+// expected output: [ "dust", "the", "bites", "one", "Another" ]</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.split', 'Symbol.split')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.split")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Symbol.match")}}</li>
+ <li>{{jsxref("Symbol.replace")}}</li>
+ <li>{{jsxref("Symbol.search")}}</li>
+ <li>{{jsxref("RegExp.@@split", "RegExp.prototype[@@split]()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/symbol/index.html b/files/ja/web/javascript/reference/global_objects/symbol/symbol/index.html
new file mode 100644
index 0000000000..14d4c0f8a0
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/symbol/index.html
@@ -0,0 +1,88 @@
+---
+title: Symbol() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/Symbol
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/Symbol
+---
+<div>{{JSRef}}</div>
+
+<p><code>Symbol()</code> コンストラクターは <strong>symbol</strong> 型の値を返しますが、 "<code>new Symbol()</code>" という構文に対応しておらず、サブクラス化を意図していないため、コンストラクターとしては不完全です。 <code>class</code> 定義の <code><a href="/ja/docs/Web/JavaScript/Reference/Classes/extends">extends</a></code> 句の値として使用することもできますが、 <code><a href="/ja/docs/Web/JavaScript/Reference/Operators/super">super</a></code> の呼び出しを行うと例外が発生します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-constructor.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">Symbol([<var>description</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>description</var></code> {{optional_inline}}</dt>
+ <dd>文字列。デバッグには使用できるこのシンボルの説明ですが、シンボル自体にはアクセスできません。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_symbols" name="Creating_symbols">シンボルの作成</h3>
+
+<p>新しいプリミティブであるシンボルを生成するには、解説にあるように <code>Symbol()</code> を任意の文字列とともに書きます。</p>
+
+<pre class="brush: js notranslate">let sym1 = Symbol()
+let sym2 = Symbol('foo')
+let sym3 = Symbol('foo')
+</pre>
+
+<p>上記のコードは3つの新しいシンボルを生成します。なお、 <code>Symbol("foo")</code> は <code>"foo"</code> と言う文字列を強制的に記号にするわけではないことに注意してください。毎回新しいシンボルを生成します。</p>
+
+<pre class="brush: js notranslate">Symbol('foo') === Symbol('foo') // false
+</pre>
+
+<h3 id="new_Symbol...">new Symbol(...)</h3>
+
+<p>以下のように {{jsxref("Operators/new", "new")}} 演算子を伴う構文では、 {{jsxref("TypeError")}} が発生します。</p>
+
+<pre class="brush: js notranslate">let sym = new Symbol() // TypeError
+</pre>
+
+<p>このため、新しいシンボル値の代わりに明示的なシンボルラッパーオブジェクトを作成することができず、プリミティブなデータ型の周りに明示的なラッパーオブジェクトを作成することは一般的に可能です (例えば、 <code>new Boolean</code>, <code>new String</code>, <code>new Number</code> です)。</p>
+
+<p>本当に <code>Symbol</code> のラッパーオブジェクトを生成したい場合は、 <code>Object()</code> 関数を使用することができます。</p>
+
+<pre class="brush: js notranslate">let sym = Symbol('foo');
+let symObj = Object(sym);
+typeof sym // =&gt; "symbol"
+typeof symObj // =&gt; "object"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol-constructor', 'Symbol constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.Symbol")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Glossary/Symbol">用語集: Symbol データ型</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/toprimitive/index.html b/files/ja/web/javascript/reference/global_objects/symbol/toprimitive/index.html
new file mode 100644
index 0000000000..ba1c96038e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/toprimitive/index.html
@@ -0,0 +1,82 @@
+---
+title: Symbol.toPrimitive
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.toPrimitive</code></strong> はシンボルで、あるオブジェクトを対応するプリミティブ値に変換するために呼び出される関数値のプロパティを指定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-toprimitive.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>Symbol.toPrimitive</code> プロパティにより (関数値として使用して)、オブジェクトがプリミティブ値に変換することができるようになります。関数は、プリミティブ値の結果として好ましい型を指定する文字列引数の <code><var>hint</var></code> と一緒に呼び出されます。 <code><var>hint</var></code> 引数は、 "<code>number</code>", "<code>string</code>", "<code>default</code>" のいずれかになります。</p>
+
+<p>{{js_property_attributes(0,0,0)}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Modifying_primitive_values_converted_from_an_object" name="Modifying_primitive_values_converted_from_an_object">オブジェクトから変換されたプリミティブ値の修正</h3>
+
+<p>次の例は <code>Symbol.toPrimitive</code> プロパティがオブジェクトから変換されたプリミティブ値を修正する方法を説明します。</p>
+
+<pre class="brush: js notranslate">// Symbol.toPrimitive プロパティを持たないオブジェクト。
+var obj1 = {};
+console.log(+obj1); // NaN
+console.log(`${obj1}`); // "[object Object]"
+console.log(obj1 + ''); // "[object Object]"
+
+// Symbol.toPrimitive プロパティを持つオブジェクト。
+var obj2 = {
+ [Symbol.toPrimitive](hint) {
+ if (hint == 'number') {
+ return 10;
+ }
+ if (hint == 'string') {
+ return 'hello';
+ }
+ return true;
+ }
+};
+console.log(+obj2); // 10 -- hint は "number"
+console.log(`${obj2}`); // "hello" -- hint は "string"
+console.log(obj2 + ''); // "true" -- hint は "default"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.toprimitive', 'Symbol.toPrimitive')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.toPrimitive")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Date.@@toPrimitive", "Date.prototype[@@toPrimitive]")}}</li>
+ <li>{{jsxref("Symbol.@@toPrimitive", "Symbol.prototype[@@toPrimitive]")}}</li>
+ <li>{{jsxref("Object.prototype.toString()")}}</li>
+ <li>{{jsxref("Object.prototype.valueOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/tosource/index.html b/files/ja/web/javascript/reference/global_objects/symbol/tosource/index.html
new file mode 100644
index 0000000000..9e3399dd5d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/tosource/index.html
@@ -0,0 +1,57 @@
+---
+title: Symbol.prototype.toSource()
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/toSource
+tags:
+ - JavaScript
+ - Method
+ - Obsolete
+ - Prototype
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toSource
+---
+<div>{{JSRef}} {{obsolete_header}}</div>
+
+<p><strong><code>toSource()</code></strong> メソッドは、そのオブジェクトのソースコードを表す文字列を返します。</p>
+
+<p>このメソッドは、通常 JavaScript から内部的に呼び出されます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>Symbol</var>.toSource()
+
+var sym = Symbol()
+sym.toSource()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>そのオブジェクトのソースコードを表す文字列です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Native_function" name="Native_function">ネイティブ関数</h3>
+
+<p>組込みの <code>Symbol</code> オブジェクトでは、 <code>toSource</code> はソースコードが使用できないことを表す以下の文字列を返します。</p>
+
+<pre class="brush:js notranslate">"function Symbol() {
+ [ネイティブコード]
+}"</pre>
+
+<p><code>Symbol</code> のインスタンスでは、 <code>toSource</code> はソースコードを表す文字列を返します。</p>
+
+<pre class="brush: js notranslate">"Symbol()"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p>どの標準にも含まれていません。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.toSource")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toSource()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/tostring/index.html b/files/ja/web/javascript/reference/global_objects/symbol/tostring/index.html
new file mode 100644
index 0000000000..cee7287bb7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/tostring/index.html
@@ -0,0 +1,76 @@
+---
+title: Symbol.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/toString
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toString()</code></strong> メソッドは、指定された {{jsxref("Symbol")}} オブジェクトを表す文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-prototype-tostring.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="notranslate">Symbol().toString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された {{jsxref("Symbol")}} オブジェクトを表す文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Symbol")}} オブジェクトは {{jsxref("Object")}} オブジェクトの <code>toString</code> メソッドをオーバーライドします。 {{jsxref("Object.prototype.toString()")}} を継承していません。 <code>Symbol</code> オブジェクトでは <code>toString</code> メソッドはオブジェクトの文字列表現を返します。</p>
+
+<h3 id="No_string_concatenation" name="No_string_concatenation">文字列への型変換はない</h3>
+
+<p>シンボルに対しては <code>toString()</code> を呼び出すことができるため、文字列への型変換はありません。</p>
+
+<pre class="brush: js notranslate">Symbol('foo') + 'bar' // TypeError: Can't convert symbol to string</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="toString_の使用">toString() の使用</h3>
+
+<pre class="brush: js notranslate">Symbol('desc').toString() // "Symbol(desc)"
+
+// ウェルノウンシンボル
+Symbol.iterator.toString() // "Symbol(Symbol.iterator)
+
+// グローバルシンボル
+Symbol.for('foo').toString() // "Symbol(foo)"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.prototype.tostring', 'Symbol.prototype.toString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.toString")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/tostringtag/index.html b/files/ja/web/javascript/reference/global_objects/symbol/tostringtag/index.html
new file mode 100644
index 0000000000..8bc44720be
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/tostringtag/index.html
@@ -0,0 +1,100 @@
+---
+title: Symbol.toStringTag
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Reference
+ - Symbol
+ - シンボル
+ - プロパティ
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.toStringTag</code></strong> ウェルノウンシンボルは、オブジェクトを説明する既定の文字列の作成に使用される文字列値のプロパティです。 {{jsxref("Object.prototype.toString()")}} メソッドによって内部的にアクセスされます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-tostringtag.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0,0,0)}}</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Default_tags" name="Default_tags">既定のタグ</h3>
+
+<pre class="brush: js notranslate">Object.prototype.toString.call('foo'); // "[object String]"
+Object.prototype.toString.call([1, 2]); // "[object Array]"
+Object.prototype.toString.call(3); // "[object Number]"
+Object.prototype.toString.call(true); // "[object Boolean]"
+Object.prototype.toString.call(undefined); // "[object Undefined]"
+Object.prototype.toString.call(null); // "[object Null]"
+// ... and more
+</pre>
+
+<h3 id="Built-in_toStringTag_symbols" name="Built-in_toStringTag_symbols">組込み toStringTag シンボル</h3>
+
+<pre class="brush: js notranslate">Object.prototype.toString.call(new Map()); // "[object Map]"
+Object.prototype.toString.call(function* () {}); // "[object GeneratorFunction]"
+Object.prototype.toString.call(Promise.resolve()); // "[object Promise]"
+// ... and more
+</pre>
+
+<h3 id="Custom_classes_default_to_object_tag" name="Custom_classes_default_to_object_tag">独自クラスの既定のオブジェクトタグ</h3>
+
+<p>クラスを作成すると、 JavaScript は既定で "Object" というタグをつけます。</p>
+
+<pre class="brush: js notranslate">class ValidatorClass {}
+
+Object.prototype.toString.call(new ValidatorClass()); // "[object Object]"
+</pre>
+
+<h3 id="Custom_tag_with_toStringTag" name="Custom_tag_with_toStringTag">toStringTag による独自タグ</h3>
+
+<p><code>toStringTag</code> を使えば、独自のタグを設定することができます。</p>
+
+<pre class="brush: js notranslate">class ValidatorClass {
+ get [Symbol.toStringTag]() {
+ return 'Validator';
+ }
+}
+
+Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]"
+</pre>
+
+<h3 id="toStringTag_available_on_all_DOM_prototype_objects" name="toStringTag_available_on_all_DOM_prototype_objects">すべての DOM プロトタイプオブジェクトで利用可能な toStringTag</h3>
+
+<p><a href="https://github.com/heycam/webidl/pull/357">WebIDL の仕様変更</a>が2020年半ばに行われた関係で、ブラウザーはすべての DOM プロトタイプオブジェクトに <code>Symbol.toStringTag</code> プロパティを追加するようになりました。例えば、{{domxref("HTMLButtonElement")}} の <code>Symbol.toStringTag</code> プロパティにアクセスするには次のようにします。</p>
+
+<pre class="brush: js notranslate">let test = document.createElement('button');
+test.toString(); // Returns [object HTMLButtonElement]
+test[Symbol.toStringTag]; // Returns HTMLButtonElement</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.tostringtag', 'Symbol.toStringTag')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.toStringTag")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.toString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/unscopables/index.html b/files/ja/web/javascript/reference/global_objects/symbol/unscopables/index.html
new file mode 100644
index 0000000000..b4a0330273
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/unscopables/index.html
@@ -0,0 +1,90 @@
+---
+title: Symbol.unscopables
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/unscopables
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Property
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/unscopables
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Symbol.unscopables</code></strong> ウェルノウンシンボルは、自身のプロパティ名と継承されたプロパティ名が、関連付けられたオブジェクトの <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/with">with</a></code> 環境バインディングから除外されているオブジェクトの値を指定するために使用されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/symbol-unscopables.html")}}</div>
+
+<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>The <code>@@unscopables</code> シンボル (<code>Symbol.unscopables</code>) は、 <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/with">with</a></code> 環境バインディングでプロパティ名が語彙的変数として公開されないようにするために、任意のオブジェクトに定義することができます。<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a>を使用している場合、 <code>with</code> 文は使用できず、このシンボルも必要ないことに注意してください。</p>
+
+<p><code>unscopables</code> オブジェクトでプロパティを <code>true</code> に設定すると、そのプロパティは<em>スコープ不能</em>になり、語彙的スコープ変数には表示されません。プロパティを <code>false</code> に設定すると、 <code>scopable</code> になり、語彙的スコープ変数に表示されます。</p>
+
+<p>{{js_property_attributes(0,0,0)}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Scoping_in_with_statements" name="Scoping_in_with_statements">with 文内のスコープ</h3>
+
+<p>次のコードは、ES5 以下であれば正しく動作します。しかし、 ECMAScript 2015(ES6)以降では、{{jsxref("Array.prototype.keys()")}} メソッドが導入されました。これは、<code>with</code> 環境内で "keys" はメソッドであり変数ではないことを意味します。これが <code>unscopable</code> シンボルを導入すべき時です。ビルトインの <code>unscopables</code> 設定は、配列のメソッドのいくつかが <code>with</code> 環境のスコープに入らないようにするために、{{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}} として実装されています。</p>
+
+<pre class="brush: js notranslate">var keys = [];
+
+with (Array.prototype) {
+ keys.push('something');
+}
+
+Object.keys(Array.prototype[Symbol.unscopables]);
+// ["copyWithin", "entries", "fill", "find", "findIndex",
+// "includes", "keys", "values"]
+</pre>
+
+<h3 id="Unscopables_in_objects" name="Unscopables_in_objects">オブジェクト内の unscopables</h3>
+
+<p>自分のオブジェクトに <code>unscopables</code> を設定することもできます。</p>
+
+<pre class="brush: js notranslate">var obj = {
+ foo: 1,
+ bar: 2
+};
+
+obj[Symbol.unscopables] = {
+ foo: false,
+ bar: true
+};
+
+with (obj) {
+ console.log(foo); // 1
+ console.log(bar); // ReferenceError: bar is not defined
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.unscopables', 'Symbol.unscopables')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.unscopables")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}}</li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/with">with</a></code> 文 (<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a>では利用不可)</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/symbol/valueof/index.html b/files/ja/web/javascript/reference/global_objects/symbol/valueof/index.html
new file mode 100644
index 0000000000..f3df5b0167
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/symbol/valueof/index.html
@@ -0,0 +1,64 @@
+---
+title: Symbol.prototype.valueOf()
+slug: Web/JavaScript/Reference/Global_Objects/Symbol/valueOf
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Symbol
+translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/valueOf
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>valueOf()</code></strong> メソッドは、 Symbol オブジェクトのプリミティブ値を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="notranslate">Symbol().valueOf()
+</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された {{jsxref("Symbol")}} オブジェクトのプリミティブ値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Symbol")}} オブジェクトの <code>valueOf()</code> メソッドは、 Symbol オブジェクトのプリミティブ値を Symbol データ型として返します。</p>
+
+<p>JavaScript はオブジェクトをプリミティブ値に変換するために <code>valueOf()</code> メソッドを呼び出します。 <code>valueOf()</code> メソッドを自分で呼び出す必要はほとんどありません。 JavaScript は、プリミティブ値が期待されているオブジェクトに遭遇したときに、自動的にこれを呼び出します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_valueOf" name="Using_valueOf">valueOf() の使用</h3>
+
+<pre class="brush: js notranslate">const sym = Symbol("example");
+sym === sym.valueOf(); // true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-symbol.prototype.valueof', 'Symbol.prototype.valueOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Symbol.valueOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.prototype.valueOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/syntaxerror/index.html b/files/ja/web/javascript/reference/global_objects/syntaxerror/index.html
new file mode 100644
index 0000000000..8180cbe7f5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/syntaxerror/index.html
@@ -0,0 +1,99 @@
+---
+title: SyntaxError
+slug: Web/JavaScript/Reference/Global_Objects/SyntaxError
+tags:
+ - Error
+ - JavaScript
+ - Object
+ - Reference
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>SyntaxError</strong></code> オブジェクトは、構文的に不正なコードを解釈しようとした場合のエラーを表します。これは、 JavaScript エンジンが、コードを解析中に言語の構文に従わないトークンまたはトークンの順序に遭遇した場合に発生します。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/SyntaxError/SyntaxError", "SyntaxError()")}}</dt>
+ <dd>新しい <code>SyntaxError</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.message", "SyntaxError.prototype.message")}}</dt>
+ <dd>エラーメッセージです。 ECMA-262 において {{jsxref("SyntaxError")}} は自身の <code>message</code> プロパティを提供するべきとされていますが、 <a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> では {{jsxref("Error.prototype.message")}} を継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.name", "SyntaxError.prototype.name")}}</dt>
+ <dd>エラー名です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.fileName", "SyntaxError.prototype.fileName")}}</dt>
+ <dd>このエラーが発生したファイルのパスです。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.lineNumber", "SyntaxError.prototype.lineNumber")}}</dt>
+ <dd>このエラーが発生したファイル内の行番号です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.columnNumber", "SyntaxError.prototype.columnNumber")}}</dt>
+ <dd>このエラーが発生した行内の桁数です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.stack", "SyntaxError.prototype.stack")}}</dt>
+ <dd>スタックトレースです。 {{jsxref("Error")}} から継承しています。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Catching_a_SyntaxError" name="Catching_a_SyntaxError">SyntaxError のキャッチ</h3>
+
+<pre class="brush: js notranslate">try {
+ eval('hoo bar');
+} catch (e) {
+ console.error(e instanceof SyntaxError);
+ console.error(e.message);
+ console.error(e.name);
+ console.error(e.fileName);
+ console.error(e.lineNumber);
+ console.error(e.columnNumber);
+ console.error(e.stack);
+}
+</pre>
+
+<h3 id="Creating_a_SyntaxError" name="Creating_a_SyntaxError">SyntaxError の生成</h3>
+
+<pre class="brush: js notranslate">try {
+ throw new SyntaxError('Hello', 'someFile.js', 10);
+} catch (e) {
+ console.error(e instanceof SyntaxError); // true
+ console.error(e.message); // Hello
+ console.error(e.name); // SyntaxError
+ console.error(e.fileName); // someFile.js
+ console.error(e.lineNumber); // 10
+ console.error(e.columnNumber); // 0
+ console.error(e.stack); // @debugger eval code:3:9
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-syntaxerror', 'SyntaxError')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.SyntaxError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/syntaxerror/syntaxerror/index.html b/files/ja/web/javascript/reference/global_objects/syntaxerror/syntaxerror/index.html
new file mode 100644
index 0000000000..03782dc244
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/syntaxerror/syntaxerror/index.html
@@ -0,0 +1,89 @@
+---
+title: SyntaxError() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/SyntaxError/SyntaxError
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - SyntaxError
+translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError/SyntaxError
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>SyntaxError</code></strong> オブジェクトは、文法的に無効なコードを解釈しようとしたときのエラーを表します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new SyntaxError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>message</var></code> {{optional_inline}}</dt>
+ <dd>人間が読むためのエラーの説明です。</dd>
+ <dt><code><var>fileName</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードを含むファイルの名前です。</dd>
+ <dt><code><var>lineNumber</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードの行番号です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Catching_a_SyntaxError" name="Catching_a_SyntaxError">SyntaxError の捕捉</h3>
+
+<pre class="brush: js notranslate">try {
+ eval('hoo bar');
+} catch (e) {
+ console.error(e instanceof SyntaxError);
+ console.error(e.message);
+ console.error(e.name);
+ console.error(e.fileName);
+ console.error(e.lineNumber);
+ console.error(e.columnNumber);
+ console.error(e.stack);
+}
+</pre>
+
+<h3 id="Creating_a_SyntaxError" name="Creating_a_SyntaxError">SyntaxError の生成</h3>
+
+<pre class="brush: js notranslate">try {
+ throw new SyntaxError('Hello', 'someFile.js', 10);
+} catch (e) {
+ console.error(e instanceof SyntaxError); // true
+ console.error(e.message); // Hello
+ console.error(e.name); // SyntaxError
+ console.error(e.fileName); // someFile.js
+ console.error(e.lineNumber); // 10
+ console.error(e.columnNumber); // 0
+ console.error(e.stack); // @debugger eval code:3:9
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-nativeerror-constructors', 'NativeError constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.SyntaxError.SyntaxError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/@@iterator/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/@@iterator/index.html
new file mode 100644
index 0000000000..8401856c1e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/@@iterator/index.html
@@ -0,0 +1,80 @@
+---
+title: 'TypedArray.prototype[@@iterator]()'
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/@@iterator
+tags:
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/@@iterator
+---
+<div>{{JSRef}}</div>
+
+<p><code>@@iterator</code> プロパティは、初期値が {{jsxref("TypedArray.prototype.values()", "values")}} プロパティの同じ関数オブジェクトです。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>[Symbol.iterator]()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>この配列の <strong>iterator</strong> 関数で、既定では {{jsxref("TypedArray.prototype.values()", "values()")}} 関数です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Iteration_using_for...of_loop" name="Iteration_using_for...of_loop">for...of ループを使用した反復</h3>
+
+<pre class="brush: js notranslate">var arr = new Uint8Array([10, 20, 30, 40, 50]);
+// your browser must support for..of loop
+// and let-scoped variables in for loops
+for (let n of arr) {
+ console.log(n);
+}
+</pre>
+
+<h3 id="Alternative_iteration" name="Alternative_iteration">代替の反復</h3>
+
+<pre class="brush: js notranslate">var arr = new Uint8Array([10, 20, 30, 40, 50]);
+var eArr = arr[Symbol.iterator]();
+console.log(eArr.next().value); // 10
+console.log(eArr.next().value); // 20
+console.log(eArr.next().value); // 30
+console.log(eArr.next().value); // 40
+console.log(eArr.next().value); // 50
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype-@@iterator', '%TypedArray%.prototype[@@iterator]()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.@@iterator")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li>
+ <li>{{jsxref("TypedArray")}}</li>
+ <li>{{jsxref("TypedArray.prototype.entries()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.keys()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.values()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/@@species/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/@@species/index.html
new file mode 100644
index 0000000000..a42596a4e7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/@@species/index.html
@@ -0,0 +1,66 @@
+---
+title: 'get TypedArray[@@species]'
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/@@species
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/@@species
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>TypedArray[@@species]</strong></code> アクセッサプロパティは、<a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">typed array</a> のコンストラクタを返します。</p>
+
+<h2 id="説明">説明</h2>
+
+<p><code>species</code> アクセッサプロパティは、<a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">typed array</a> オブジェクトの既定のコンストラクタを返します。サブクラスのコンストラクタは、コンストラクタの割り当てを変更するために、これをオーバーライドできます。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="普通のオブジェクト">普通のオブジェクト</h3>
+
+<p><code>species</code> プロパティは、指定した <a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">typed array</a> オブジェクトの typed array コンストラクタを既定のコンストラクタ関数として返します。</p>
+
+<pre class="brush: js notranslate">Int8Array[Symbol.species]; // function Int8Array()
+Uint8Array[Symbol.species]; // function Uint8Array()
+Float32Array[Symbol.species]; // function Float32Array()
+</pre>
+
+<h3 id="派生オブジェクト">派生オブジェクト</h3>
+
+<p>派生コレクションオブジェクト(たとえば、カスタム typed array の <code>MyTypedArray</code>)では、<code>MyTypedArray</code> の species は <code>MyTypedArray</code> コンストラクタです。しかし、派生クラスのメソッドで、親である <a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">typed array</a> オブジェクトを返すためにこれをオーバーライドしたいかもしれません。</p>
+
+<pre class="brush: js notranslate">class MyTypedArray extends Uint8Array {
+ // MyTypedArray の species を親である Uint8Array コンストラクタにオーバーライド
+ static get [Symbol.species]() { return Uint8Array; }
+}</pre>
+
+<h2 id="仕様書">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-%typedarray%-@@species', 'get %TypedArray% [ @@species ]')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.TypedArray.@@species")}}</p>
+</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray")}}</li>
+ <li>{{jsxref("Symbol.species")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/buffer/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/buffer/index.html
new file mode 100644
index 0000000000..0c20615b4d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/buffer/index.html
@@ -0,0 +1,59 @@
+---
+title: TypedArray.prototype.buffer
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/buffer
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/buffer
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>buffer</code></strong> アクセサープロパティは、構築時に <em>TypedArray</em> から参照されるようになった {{jsxref("ArrayBuffer")}} を表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-buffer.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>buffer</code> プロパティは set アクセサープロパティが <code>undefined</code> であるアクセサープロパティです。これは、このプロパティが読み取り専用であることを意味します。値は <em>TypedArray</em> が構築されたときに確立し、変更することができません。 <em>TypedArray</em> は<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列オブジェクト</a>のうちの一つです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_buffer_property" name="Using_the_buffer_property">buffer プロパティの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var uint16 = new Uint16Array(buffer);
+uint16.buffer; // ArrayBuffer { byteLength: 8 }
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-%typedarray%.prototype.buffer', 'TypedArray.prototype.buffer')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.buffer")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript の型付き配列</a></li>
+ <li>{{jsxref("TypedArray")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/bytelength/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/bytelength/index.html
new file mode 100644
index 0000000000..a526e348d5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/bytelength/index.html
@@ -0,0 +1,66 @@
+---
+title: TypedArray.prototype.byteLength
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/byteLength
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/byteLength
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>byteLength</code></strong> アクセサープロパティは、型付き配列の長さを (バイト単位で) 表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-bytelength.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>byteLength</code> プロパティは set アクセサープロパティが <code>undefined</code> であるアクセサープロパティです。これは、このプロパティが読み取り専用であることを意味します。値は <em>TypedArray</em> が構築されたときに確立し、変更することができません。 <em>TypedArray</em> が <code>byteOffset</code> や <code>length</code> を指定していないなら、参照されている <code>ArrayBuffer</code> の <code>length</code> が返されます。 <em>TypedArray</em> は<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列オブジェクト</a>のうちの一つです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_byteLength_property" name="Using_the_byteLength_property">byteLength プロパティの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+
+var uint8 = new Uint8Array(buffer);
+uint8.byteLength; // 8 (matches the byteLength of the buffer)
+
+var uint8 = new Uint8Array(buffer, 1, 5);
+uint8.byteLength; // 5 (as specified when constructing the Uint8Array)
+
+var uint8 = new Uint8Array(buffer, 2);
+uint8.byteLength; // 6 (due to the offset of the constructed Uint8Array)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-%typedarray%.prototype.bytelength', 'TypedArray.prototype.byteLength')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.byteLength")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript の型付き配列</a></li>
+ <li>{{jsxref("TypedArray")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/byteoffset/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/byteoffset/index.html
new file mode 100644
index 0000000000..47538e509e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/byteoffset/index.html
@@ -0,0 +1,59 @@
+---
+title: TypedArray.prototype.byteOffset
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/byteOffset
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/byteOffset
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>byteOffset</code></strong> アクセサープロパティは、 {{jsxref("ArrayBuffer")}} の開始位置からの型付き配列の (バイト単位の) オフセットを表します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>byteOffset</code> プロパティは set アクセサープロパティが <code>undefined</code> であるアクセサープロパティです。これは、このプロパティが読み取り専用であることを意味します。値は <em>TypedArray</em> が構築されたときに確立し、変更することができません。 <em>TypedArray</em> は<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列オブジェクト</a>のうちの一つです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_byteOffset_property" name="Using_the_byteOffset_property">byteOffset プロパティの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+
+var uint8 = new Uint8Array(buffer);
+uint8.byteOffset; // 0 (no offset specified)
+
+var uint8 = new Uint8Array(buffer, 3);
+uint8.byteOffset; // 3 (as specified when constructing Uint8Array)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-%typedarray%.prototype.byteoffset', 'TypedArray.prototype.byteOffset')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.byteOffset")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript の型付き配列</a></li>
+ <li>{{jsxref("TypedArray")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/bytes_per_element/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/bytes_per_element/index.html
new file mode 100644
index 0000000000..7812b4b692
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/bytes_per_element/index.html
@@ -0,0 +1,65 @@
+---
+title: TypedArray.BYTES_PER_ELEMENT
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/BYTES_PER_ELEMENT
+tags:
+ - JavaScript
+ - Property
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/BYTES_PER_ELEMENT
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>TypedArray.BYTES_PER_ELEMENT</code></strong> プロパティは、型付き配列内の各要素の大きさをバイト単位で表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-bytes-per-element.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0,0,0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>TypedArray</code> オブジェクトは要素ごとのバイト数とバイトが解釈される方法とで互いに異なります。<code>BYTES_PER_ELEMENT</code> 定数は与えられた <code>TypedArray</code> 内の各要素のバイト数を表します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_BYTES_PER_ELEMENT" name="Using_BYTES_PER_ELEMENT">BYTES_PER_ELEMENT の使用</h3>
+
+<pre class="brush:js notranslate">Int8Array.BYTES_PER_ELEMENT; // 1
+Uint8Array.BYTES_PER_ELEMENT; // 1
+Uint8ClampedArray.BYTES_PER_ELEMENT; // 1
+Int16Array.BYTES_PER_ELEMENT; // 2
+Uint16Array.BYTES_PER_ELEMENT; // 2
+Int32Array.BYTES_PER_ELEMENT; // 4
+Uint32Array.BYTES_PER_ELEMENT; // 4
+Float32Array.BYTES_PER_ELEMENT; // 4
+Float64Array.BYTES_PER_ELEMENT; // 8</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typedarray.bytes_per_element', 'TypedArray.BYTES_PER_ELEMENT')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.BYTES_PER_ELEMENT")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript の型付き配列</a></li>
+ <li>{{jsxref("TypedArray")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/copywithin/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/copywithin/index.html
new file mode 100644
index 0000000000..dfcd3fdc2e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/copywithin/index.html
@@ -0,0 +1,81 @@
+---
+title: TypedArray.prototype.copyWithin()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/copyWithin
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - メソッド
+ - 型付き配列
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/copyWithin
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>copyWithin()</strong></code> メソッドは、配列内の一連の配列の要素を <code><var>target</var></code> から始まる位置にコピーします。コピーは第二、第三の引数、 <code><var>start</var></code> と <code><var>end</var></code> のインデックス位置から実施されます。 <code><var>end</var></code> 引数はオプションで、既定では配列の長さです。このメソッドは {{jsxref("Array.prototype.copyWithin")}} と同じアルゴリズムです。 <em>TypedArray</em> は、ここでは <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>のうちの一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-copywithin.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><var>typedarray</var>.copyWithin(<var>target</var>, <var>start</var>[, <var>end</var> = this.length])</code></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>target</var></code></dt>
+ <dd>要素をコピーする対象の開始インデックス位置。</dd>
+ <dt><code><var>start</var></code></dt>
+ <dd>要素をコピーし始める元の開始インデックス位置。</dd>
+ <dt><code><var>end</var></code> {{optional_inline}}</dt>
+ <dd>オプション。要素をコピーし終わる元の終了インデックス位置。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>変更された配列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>詳細については、 {{jsxref("Array.prototype.copyWithin")}} をご覧ください</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_copyWithin" name="Using_copyWithin">copyWithin の使用</h3>
+
+<pre class="brush: js">var buffer = new ArrayBuffer(8);
+var uint8 = new Uint8Array(buffer);
+uint8.set([1,2,3]);
+console.log(uint8); // Uint8Array [ 1, 2, 3, 0, 0, 0, 0, 0 ]
+uint8.copyWithin(3,0,3);
+console.log(uint8); // Uint8Array [ 1, 2, 3, 1, 2, 3, 0, 0 ]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.copywithin', 'TypedArray.prototype.copyWithin')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.copyWithin")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/entries/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/entries/index.html
new file mode 100644
index 0000000000..b776f47d74
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/entries/index.html
@@ -0,0 +1,86 @@
+---
+title: TypedArray.prototype.entries()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/entries
+tags:
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/entries
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>entries()</code></strong> メソッドは、配列内の各インデックスのキーと値のペアを含む新しい配列イテレーターオブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-entries.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.entries()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい配列イテレーターオブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Iteration_using_for...of_loop" name="Iteration_using_for...of_loop">for...of ループを使用した反復</h3>
+
+<pre class="brush: js notranslate">var arr = new Uint8Array([10, 20, 30, 40, 50]);
+var eArray = arr.entries();
+// your browser must support for..of loop
+// and let-scoped variables in for loops
+for (let n of eArray) {
+ console.log(n);
+}
+</pre>
+
+<h3 id="Alternative_iteration" name="Alternative_iteration">代替の反復</h3>
+
+<pre class="brush: js notranslate">var arr = new Uint8Array([10, 20, 30, 40, 50]);
+var eArr = arr.entries();
+console.log(eArr.next().value); // [0, 10]
+console.log(eArr.next().value); // [1, 20]
+console.log(eArr.next().value); // [2, 30]
+console.log(eArr.next().value); // [3, 40]
+console.log(eArr.next().value); // [4, 50]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.entries', '%TypedArray%.prototype.entries()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.entries")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript の型付き配列</a></li>
+ <li>{{jsxref("TypedArray")}}</li>
+ <li>{{jsxref("TypedArray.prototype.keys()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.values()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.@@iterator()", "TypedArray.prototype[@@iterator]()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/every/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/every/index.html
new file mode 100644
index 0000000000..d261f0697d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/every/index.html
@@ -0,0 +1,105 @@
+---
+title: TypedArray.prototype.every()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/every
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/every
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>every()</code></strong> メソッドは、型付き配列内のすべての要素が提供された関数で実装されたテストに合格するかどうかをテストします。このメソッドのアルゴリズムは {{jsxref("Array.prototype.every()")}} と同じです。ここで <em>TypedArray</em> は、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>のうちの1つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-every.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarray</var>.every(<var>callback</var>[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>各要素に対してテストを実行する関数です。次の 3 つの引数を取ります。
+ <dl>
+ <dt><code><var>element</var></code></dt>
+ <dd>現在処理されている型付き配列の要素です。</dd>
+ <dt><code><var>index</var></code> {{Optional_inline}}</dt>
+ <dd>現在処理されている型付き配列の要素の添字です。</dd>
+ <dt><code><var>array</var></code> {{Optional_inline}}</dt>
+ <dd><code>every</code> が実行されている型付き配列です。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code> {{Optional_inline}}</dt>
+ <dd><code><var>callback</var></code> を実行するときに <code>this</code> として使用すされる値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code><var>callback</var></code> 関数が型付き配列のすべての要素について{{Glossary("truthy", "真値")}}を返した場合は <code>true</code>。それ以外は <code>false</code>。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>every</code> は、与えられた <code><var>callback</var></code> 関数を、配列に含まれる各要素に対して一度ずつ、 <code><var>callback</var></code> が{{Glossary("falsy", "偽値")}}を返す要素が見つかるまで呼び出します。そのような要素が見つかると、<code>every</code> メソッドはただちに <code>false</code> を返します。<code><var>callback</var></code> がすべての要素に対して{{Glossary("truthy", "真値")}}を返した場合、<code>every</code> は <code>true</code> を返します。</p>
+
+<p><code><var>callback</var></code> は、要素の値、要素の添字、走査されている型付き配列オブジェクトという 3 つの引数をともなって呼び出されます。</p>
+
+<p><code><var>thisArg</var></code> 引数が <code>every</code> に与えられると、それがコールバックの <code>this</code> として使用されます。それ以外の場合は <code>undefined</code> が <code>this</code> の値として使われます。 <code><var>callback</var></code> が最終的に監視できる <code>this</code> の値は、<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数から見た <code>this</code> の決定に関する一般的なルール</a>によって決定されます。</p>
+
+<p><code>every</code> は呼び出された型付き配列を変化させません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Testing_size_of_all_typed_array_elements" name="Testing_size_of_all_typed_array_elements">すべての型付き配列の要素の大きさをテストする</h3>
+
+<p>次の例は、型付き配列内のすべての要素が 10 より大きいかどうかテストします。</p>
+
+<pre class="brush: js notranslate">function isBigEnough(element, index, array) {
+ return element &gt;= 10;
+}
+new Uint8Array([12, 5, 8, 130, 44]).every(isBigEnough); // false
+new Uint8Array([12, 54, 18, 130, 44]).every(isBigEnough); // true
+</pre>
+
+<h3 id="Testing_typed_array_elements_using_arrow_functions" name="Testing_typed_array_elements_using_arrow_functions">アロー関数を使用して型付き配列の要素をテストする</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a>によって、同じテストをより短い構文で実現できます。</p>
+
+<pre class="brush: js notranslate">new Uint8Array([12, 5, 8, 130, 44]).every(elem =&gt; elem &gt;= 10); // false
+new Uint8Array([12, 54, 18, 130, 44]).every(elem =&gt; elem &gt;= 10); // true</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.every', 'TypedArray.prototype.every')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.every")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.some()")}}</li>
+ <li>{{jsxref("Array.prototype.every()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/fill/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/fill/index.html
new file mode 100644
index 0000000000..412d888639
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/fill/index.html
@@ -0,0 +1,96 @@
+---
+title: TypedArray.prototype.fill()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/fill
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/fill
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>fill()</code></strong> メソッドは、型付き配列の開始位置から終了位置までのすべての要素を固定値で埋めます。このメソッドのアルゴリズムは {{jsxref("Array.prototype.fill()")}} と同じです。ここで <em>TypedArray</em> は、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>のうちの1つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-fill.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarray</var>.fill(<var>value</var>[, <var>start = 0</var>[, <var>end = this.length</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>型付き配列を埋める値です。</dd>
+ <dt><code><var>start</var></code> {{optional_inline}}</dt>
+ <dd>開始位置です。既定値は 0 です。</dd>
+ <dt><code><var>end</var></code> {{optional_inline}}</dt>
+ <dd>終了位置 (の次の位置) です既定値は <code>this.length</code> です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>変更された配列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>埋める区間は [<code><var>start</var></code>, <code><var>end</var></code>) です。</p>
+
+<p><strong><code>fill()</code></strong> メソッドは <code><var>value</var></code>, <code><var>start</var></code>, <code><var>end</var></code> の3つまでの引数を取ります。 <code><var>start</var></code> と <code><var>end</var></code> の各引数は省略可能で、既定値はそれぞれ <code>0</code> と、 <code>this</code> オブジェクトの <code>length</code> です。</p>
+
+<p><code><var>start</var></code> が負の数であった場合は、 <code>length+start</code> (<code>length</code> は配列の長さ) として扱われます。 <code><var>end</var></code> が負の数であった場合は、 <code>length+end</code> として扱われます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_fill" name="Using_fill">fill() の使用</h3>
+
+<pre class="brush: js notranslate">new Uint8Array([1, 2, 3]).fill(4); // Uint8Array [4, 4, 4]
+new Uint8Array([1, 2, 3]).fill(4, 1); // Uint8Array [1, 4, 4]
+new Uint8Array([1, 2, 3]).fill(4, 1, 2); // Uint8Array [1, 4, 3]
+new Uint8Array([1, 2, 3]).fill(4, 1, 1); // Uint8Array [1, 2, 3]
+new Uint8Array([1, 2, 3]).fill(4, -3, -2); // Uint8Array [4, 2, 3]
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><em>TypedArray</em> という名前のグローバルオブジェクトはないため、ポリフィルの使用は「必要に応じて」の原則で行う必要があります。以下の「ポリフィル」は、 {{jsxref("Array.prototype.fill()")}} のポリフィルと同時に使用してください。</p>
+
+<pre class="brush: js notranslate">// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill
+if (!Uint8Array.prototype.fill) {
+ Uint8Array.prototype.fill = Array.prototype.fill;
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.fill', 'TypedArray.prototype.fill')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.fill")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.fill()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/filter/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/filter/index.html
new file mode 100644
index 0000000000..01743ba34d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/filter/index.html
@@ -0,0 +1,105 @@
+---
+title: TypedArray.prototype.filter()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/filter
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/filter
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>filter()</code></strong> メソッドは、提供された関数によって実装されたテストに合格したすべての要素を含む新しい型付き配列を生成します。このメソッドのアルゴリズムは {{jsxref("Array.prototype.filter()")}} と同じです。ここで <em>TypedArray</em> は、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>のうちの1つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-filter.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarray</var>.filter(<var>callback</var>[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>型付き配列の各要素をテストする関数。 <code>(<var>element</var>, <var>index</var>, <var>typedarray</var>)</code> の引数で呼び出されます。 <code>true</code> を返すと要素を維持し、それでなければ <code>false</code> を返します。</dd>
+ <dt><code><var>thisArg</var></code>{{optional_inline}}</dt>
+ <dd><code><var>callback</var></code> を実行するときに <code>this</code> として使用する値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>テストに合格した要素を持つ新しい型付き配列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>filter()</code> は、与えられた <code><var>callback</var></code> 関数を型付き配列の各要素に対して一度ずつ呼び出し、<code><var>callback</var></code> が <a href="/ja/docs/Glossary/Truthy"><code>true</code> と評価される値</a>を返したすべての要素からなる新しい型付き配列を生成します。<code><var>callback</var></code> は値が代入されている型付き配列の添字に対してのみ呼び出されます。つまり、すでに削除された添字や、まだ値が代入されていない添字に対しては呼び出されません。<code><var>callback</var></code> によるテストに合格しなかった型付き配列の要素は単純にスキップされ、新しい型付き配列には含まれません。</p>
+
+<p><code><var>callback</var></code> は 3 つの引数で呼び出されます。</p>
+
+<ol>
+ <li>要素の値</li>
+ <li>要素の添字</li>
+ <li>走査中の型付き配列オブジェクト</li>
+</ol>
+
+<p>引数 <code><var>thisArg</var></code> が <code>filter()</code> に与えられた場合、そのオブジェクトは <code><var>callback</var></code> が呼び出された際に <code>this</code> 値として使われます。そうでない場合、 <code>undefined</code> が <code>this</code> 値として使われます。<code><var>callback</var></code> 関数内の最終的な <code>this</code> 値は<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数内の <code>this</code> を決定する一般的ルール</a>に従って決められます。</p>
+
+<p><code>filter()</code> は呼び出された型付き配列を変化させません。</p>
+
+<p><code>filter()</code> によって処理される要素の範囲は <code><var>callback</var></code> が最初の呼び出し前に設定されます。 <code>filter()</code> の呼び出しが始まった後で型付き配列にに追加された要素は <code><var>callback</var></code> によって処理されません。型付き配列の存在している要素が変更されたり、削除された場合、 <code><var>callback</var></code> に渡される値は、 <code>filter()</code> が処理する直前の値になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Filtering_out_all_small_values" name="Filtering_out_all_small_values">小さな値をすべて取り除く</h3>
+
+<p>次の例では、<code>filter()</code> を使って <code>10</code> 未満の値を持つ要素をすべて取り除いた型付き配列を生成します。</p>
+
+<pre class="brush: js notranslate">function isBigEnough(element, index, array) {
+ return element &gt;= 10;
+}
+new Uint8Array([12, 5, 8, 130, 44]).filter(isBigEnough);
+// Uint8Array [ 12, 130, 44 ]
+</pre>
+
+<h3 id="Filtering_typed_array_elements_using_arrow_functions" name="Filtering_typed_array_elements_using_arrow_functions">アロー関数を使用して型付き配列の要素をフィルターする</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a>によって、同じテストをより短い構文で実現できます。</p>
+
+<pre class="brush: js notranslate">new Uint8Array([12, 5, 8, 130, 44]).filter(elem =&gt; elem &gt;= 10);
+// Uint8Array [ 12, 130, 44 ]</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.filter', 'TypedArray.prototype.filter')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.filter")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.every()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.some()")}}</li>
+ <li>{{jsxref("Array.prototype.filter()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/find/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/find/index.html
new file mode 100644
index 0000000000..7e91b36f57
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/find/index.html
@@ -0,0 +1,109 @@
+---
+title: TypedArray.prototype.find()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/find
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/find
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>find()</code></strong> メソッドは、型付き配列のある要素の値が与えられたテスト関数を満たした場合、その値を返します。そうでなければ {{jsxref("undefined")}} を返します。ここで <em>TypedArray</em> は<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>のうちの一つです。</p>
+
+<p>{{jsxref("TypedArray.findIndex", "findIndex()")}} メソッドも参照してください。こちらはそのメソッドは値のかわりに型付き配列で見つかった要素の<strong>添字</strong>を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-find.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarray</var>.find(<var>callback</var>[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>型付き配列の各要素で実行する関数。3 つの引数を取ります。
+ <dl>
+ <dt><code><var>element</var></code></dt>
+ <dd>型付き配列内で現在処理されている要素。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd>型付き配列内で現在処理されている要素の位置。</dd>
+ <dt><code><var>array</var></code></dt>
+ <dd><code>find()</code> が呼び出された配列。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code> {{optional_inline}}</dt>
+ <dd><code><var>callback</var></code> を実行するときに <code>this</code> として使用するオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>テストを満たした配列の要素の位置を返します。それ以外の場合は、 {{jsxref("undefined")}} を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>find()</code> メソッドは <code><var>callback</var></code> 関数が true 値を返す要素を見つけるまで、型付き配列内に存在している各要素に対して一度ずつ <code><var>callback</var></code> 関数を実行します。そのような要素が見つかったら、 <code>find()</code> はすぐに要素の値を返します。さもなければ、 <code>find()</code> は {{jsxref("undefined")}} を返します。 <code><var>callback</var></code> は型付き配列の値を割り当てた位置に対してのみ呼び出されます。つまり、削除されたり、値が割り当てられて位置に対しては呼び出されません。</p>
+
+<p><code><var>callback</var></code> は、要素の値、要素の位置、走査中の型付き配列の 3 つの引数とともに呼び出されます。</p>
+
+<p><code><var>thisArg</var></code> 引数が <code>find()</code> に与えられた場合、 <code><var>callback</var></code> の各呼び出しで <code>this</code> として使用されます。与えられなかった場合は、 {{jsxref("undefined")}}が使用されます。</p>
+
+<p><code>find()</code> は呼び出されている型付き配列を変更しません。</p>
+
+<p><code>find()</code> によって処理される要素の範囲は、最初に <code><var>callback</var></code> が呼び出される前に設定されます。 <code>find()</code> の呼び出しが始まったあとで型付き配列に追加された要素は、 <code><var>callback</var></code> メソッドによって処理されません。存在していて、処理されていない型付き配列の要素が <code><var>callback</var></code> によって変更された場合、処理している <code><var>callback</var></code> 関数に渡される値は、 <code>find()</code> が要素の位置を処理する直前の値です。削除された要素は処理されません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Find_a_prime_number_in_a_typed_array" name="Find_a_prime_number_in_a_typed_array">型付き配列内の素数を探す</h3>
+
+<p>次の例では、型付き配列内で素数である要素を探します (または、素数がない場合は {{jsxref("undefined")}} を返します)。</p>
+
+<pre class="brush: js notranslate">function isPrime(element, index, array) {
+  var start = 2;
+  while (start &lt;= Math.sqrt(element)) {
+    if (element % start++ &lt; 1) {
+      return false;
+    }
+  }
+  return element &gt; 1;
+}
+
+var uint8 = new Uint8Array([4, 5, 8, 12]);
+console.log(uint8.find(isPrime)); // 5</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.find', '%TypedArray%.prototype.find')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.find")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.findIndex()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.every()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/findindex/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/findindex/index.html
new file mode 100644
index 0000000000..cec9e083c9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/findindex/index.html
@@ -0,0 +1,149 @@
+---
+title: TypedArray.prototype.findIndex()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/findIndex
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/findIndex
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>findIndex()</code></strong> メソッドは、型付き配列内の要素が与えられたテスト関数を満たす場合、型付き配列内の<strong>位置</strong>を返します。さもなければ、 -1 が返されます。</p>
+
+<p>{{jsxref("TypedArray.find", "find()")}} メソッドも参照してください。これは型付き配列内の見つかった要素の添字の代わりに<strong>値</strong>を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-findindex.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarray</var>.findIndex(<var>callback</var>[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>型付き配列の各要素で実行する関数。3 つの引数を取ります。
+ <dl>
+ <dt><code><var>element</var></code></dt>
+ <dd>型付き配列内で現在処理されている要素。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd>型付き配列内で現在処理されている要素の位置。</dd>
+ <dt><code><var>array</var></code></dt>
+ <dd><code>findIndex()</code> を呼び出した元の配列。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code> {{optional_inline}}</dt>
+ <dd><code><var>callback</var></code> を実行するときに <code>this</code> として使用するオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>テストを満たした配列の要素の位置を返します。それ以外の場合は、 <code>-1</code> を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>findIndex()</code> メソッドは、 <code><var>callback</var></code> 関数が true 値を返す要素を見つけるまで、型付き配列内に存在している各要素に対して一度ずつ <code><var>callback</var></code> 関数を実行します。そのような要素が見つかったら、 <code>findIndex()</code> はすぐに要素の添字を返します。さもなければ、 <code>findIndex()</code> メソッドは -1 を返します。 <code><var>callback</var></code> は型付き配列の値を割り当てた位置に対してのみ呼び出されます。つまり、削除されたり、値が割り当てられて位置に対しては呼び出されません。</p>
+
+<p><code><var>callback</var></code> は、要素の値、要素の位置、走査中の型付き配列の 3 つの引数とともに呼び出されます。</p>
+
+<p><code><var>thisArg</var></code> 引数が <code>findIndex()</code> に与えられた場合、 <code><var>callback</var></code> の各呼び出しで <code>this</code> として使用されます。<code><var>thisArg</var></code> 引数が与えられなかった場合は、 {{jsxref("undefined")}} が使用されます。</p>
+
+<p><code>findIndex()</code> メソッドは呼び出される型付き配列を変更しません。</p>
+
+<p><code>findIndex()</code> によって処理される要素の範囲は、最初に <code><var>callback</var></code> が呼び出される前に設定されます。 <code>findIndex()</code> の呼び出しが始まったあとで型付き配列に追加された要素は、 <code><var>callback</var></code> メソッドによって処理されません。存在していて、処理されていない型付き配列の要素が <code><var>callback</var></code> によって変更された場合、処理している <code><var>callback</var></code> 関数に渡される値は、 <code>findIndex()</code> が要素の位置を処理する直前の値です。削除された要素は処理されません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Find_the_index_of_a_prime_number_in_a_typed_array" name="Find_the_index_of_a_prime_number_in_a_typed_array">型付き配列内の素数の位置を検索する</h3>
+
+<p>次の例では、型付き配列の中で素数の入った最初の要素の位置を返し、素数が見つからなかった場合は <code>-1</code> を返します。</p>
+
+<pre class="brush: js notranslate">function isPrime(element, index, array) {
+ var start = 2;
+ while (start &lt;= Math.sqrt(element)) {
+ if (element % start++ &lt; 1) {
+ return false;
+ }
+ }
+ return element &gt; 1;
+}
+
+var uint8 = new Uint8Array([4, 6, 8, 12]);
+var uint16 = new Uint16Array([4, 6, 7, 12]);
+
+console.log(uint8.findIndex(isPrime)); // -1, not found
+console.log(uint16.findIndex(isPrime)); // 2
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<pre class="brush: js notranslate">TypedArray.prototype.findIndex = Array.prototype.findIndex = Array.prototype.findIndex || function(evaluator, thisArg) {
+ 'use strict';
+ if (!this) {
+ throw new TypeError('Array.prototype.some called on null or undefined');
+ }
+
+ if (typeof(evaluator) !== 'function') {
+ if (typeof(evaluator) === 'string') {
+ // Attempt to convert it to a function
+ if ( ! (evaluator = eval(evaluator)) ){
+ throw new TypeError();
+ }
+ } else {
+ throw new TypeError();
+ }
+ }
+
+ var i;
+ if (thisArg === undefined) { // Optimize for thisArg
+ for (i in this) {
+ if (evaluator(this[i], i, this)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+ for (i in this) {
+ if (evaluator.call(thisArg, this[i], i, this)) {
+ return i;
+ }
+ }
+ return -1;
+};</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.findindex', '%TypedArray%.prototype.findIndex')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.findIndex")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.find()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.indexOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/foreach/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/foreach/index.html
new file mode 100644
index 0000000000..b96203c353
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/foreach/index.html
@@ -0,0 +1,110 @@
+---
+title: TypedArray.prototype.forEach()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/forEach
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/forEach
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>forEach()</code></strong> メソッドは、配列の要素ごとに一度与えられた関数を実行します。このメソッドは {{jsxref("Array.prototype.forEach()")}} と同じアルゴリズムを持っています。ここで <em>TypedArray</em> は<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>の一つです。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarray</var>.forEach(<var>callback</var>[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>新しい型付き配列の要素を生成する関数。三つの引数を取ります。
+ <dl>
+ <dt><code><var>currentValue</var></code></dt>
+ <dd>型付き配列内で処理される現在の要素。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd>配列内で処理される現在の要素の添字。</dd>
+ <dt><code><var>array</var></code></dt>
+ <dd><code>forEach()</code> が呼び出される配列。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code> {{optional_inline}}</dt>
+ <dd><code><var>callback</var></code> を実行するとき <code>this</code> として使用する値</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("undefined")}} です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>forEach()</code> メソッドは与えられた <code><var>callback</var></code> を、型付き配列内に存在するそれぞれの要素に一度ずつ昇順に実行します。削除されたり、省略されたりしたインデックスに対しては呼び出されません。ただし、存在していて {{jsxref("undefined")}} の値を持つ要素に対しては実行されます。</p>
+
+<p><code><var>callback</var></code> は次の <strong>3 つの引数</strong>で呼び出されます。</p>
+
+<ul>
+ <li><strong>要素の値</strong></li>
+ <li><strong>要素の添字</strong></li>
+ <li><strong>走査中の型付き配列</strong></li>
+</ul>
+
+<p><code><var>thisArg</var></code> 引数が <code>forEach()</code> に与えられた場合は、 <code><var>callback</var></code> の呼び出し時にそのオブジェクトが <code>this</code> の値として使用されます。与えられなかった場合は、 {{jsxref("undefined")}} が <code>this</code> の値として使用するために渡されます。 <code><var>callback</var></code> によって最終的に観測可能な <code>this</code> 値は<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数から見える <code>this</code> を特定する一般規則</a>に従います。</p>
+
+<p><code>forEach()</code> によって処理される要素の範囲は <code><var>callback</var></code> の最初の呼び出し前に設定されます。 <code>forEach()</code> の呼び出しが始まったあとで型付き配列に追加される要素は、 <code><var>callback</var></code> によって処理されます。typed array内に存在している要素の値が変更されたら、 <code><var>callback</var></code> に渡される値は、<code>forEach()</code>メソッドが処理する直前の値です。つまり、処理される前に削除されている要素は処理されません。</p>
+
+<p><code>forEach()</code> は型付き配列の各要素ごとに一度 <code>callback</code> 関数を実行します。 {{jsxref("TypedArray.prototype.every()", "every()")}} や {{jsxref("TypedArray.prototype.some()", "some()")}} とは異なり、常に、 {{jsxref("undefined")}} 値を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Logging_the_contents_of_a_typed_array" name="Logging_the_contents_of_a_typed_array">型付き配列の内容をログに出力する</h3>
+
+<p>以下のコードは型付き配列内の各要素を1行ずつ出力します。</p>
+
+<pre class="brush:js notranslate">function logArrayElements(element, index, array) {
+ console.log('a[' + index + '] = ' + element);
+}
+
+new Uint8Array([0, 1, 2, 3]).forEach(logArrayElements);
+// logs:
+// a[0] = 0
+// a[1] = 1
+// a[2] = 2
+// a[3] = 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.foreach', '%TypedArray%.prototype.forEach')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.forEach")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.map()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.every()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.some()")}}</li>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/from/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/from/index.html
new file mode 100644
index 0000000000..3ea9186c3a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/from/index.html
@@ -0,0 +1,188 @@
+---
+title: TypedArray.from()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/from
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - TypedArray
+ - TypedArrays
+ - from
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/from
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code><var>TypedArray</var>.from()</code></strong> メソッドは、配列風オブジェクトや反復可能オブジェクトから新しい<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列</a>を生成します。このメソッドは {{jsxref("Array.from()")}} とほぼ同じです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-from.html","shorter")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>TypedArray</var>.from(<var>source</var>[, <var>mapFn</var>[, <var>thisArg</var>]])
+</pre>
+
+<p>ここで <code><var>TypedArray</var></code> は次のいずれかです。</p>
+
+<div class="threecolumns">
+<ul>
+ <li>{{jsxref("Int8Array")}}</li>
+ <li>{{jsxref("Uint8Array")}}</li>
+ <li>{{jsxref("Uint8ClampedArray")}}</li>
+ <li>{{jsxref("Int16Array")}}</li>
+ <li>{{jsxref("Uint16Array")}}</li>
+ <li>{{jsxref("Int32Array")}}</li>
+ <li>{{jsxref("Uint32Array")}}</li>
+ <li>{{jsxref("Float32Array")}}</li>
+ <li>{{jsxref("Float64Array")}}</li>
+ <li>{{jsxref("BigInt64Array")}}</li>
+ <li>{{jsxref("BigUint64Array")}}</li>
+</ul>
+</div>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>source</var></code></dt>
+ <dd>型付き配列に変換する配列風オブジェクトか反復可能オブジェクト</dd>
+ <dt><code><var>mapFn</var></code> {{optional_inline}}</dt>
+ <dd>型付き配列のすべての要素に適用される map 関数。</dd>
+ <dt><code><var>thisArg</var></code> {{optional_inline}}</dt>
+ <dd><code><var>mapFn</var></code> を実行するときに <code>this</code> として使う値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい {{jsxref("TypedArray")}} インスタンス。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>TypedArray</var>.from()</code> によって下記から型付き配列を生成できます:</p>
+
+<ul>
+ <li>配列風オブジェクト (<code>length</code> プロパティと、番号の振られた要素をもつオブジェクト)</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/iterable">反復可能オブジェクト</a> ({{jsxref("Map")}} や {{jsxref("Set")}} のように要素が取得できるオブジェクト)</li>
+</ul>
+
+<p><code><var>TypedArray</var>.from()</code> は省略可能な引数 <code><var>mapFn</var></code> を持ち、これは生成中の型付き配列 (またはサブクラスのオブジェクト) のそれぞれの要素に対して {{jsxref("Array.prototype.map", "map()")}} 関数を実行することができます。すなわち、以下のものと同等です。</p>
+
+<ul>
+ <li><code><var>TypedArray</var>.from(<var>obj</var>, <var>mapFn</var>, <var>thisArg</var>)</code></li>
+ <li><code><var>TypedArray</var>.from(Array.prototype.map.call(<var>obj</var>, <var>mapFn</var>, <var>thisArg</var>))</code>.</li>
+</ul>
+
+<p><code>from()</code> メソッドの <code>length</code> プロパティは <code>1</code> です。</p>
+
+<h3 id="Differences_from_Array.from" name="Differences_from_Array.from">Array.from() との違い</h3>
+
+<p>{{jsxref("Array.from()")}} と <code><var>TypedArray</var>.from()</code> の間には、いくつかの微妙な違いがあります。</p>
+
+<ul>
+ <li><code><var>TypedArray</var>.from()</code> に渡された <code><var>thisArg</var></code> の値がコンストラクターではなかった場合、 <code><var>TypedArray</var>.from()</code> で {{jsxref("TypeError")}} が発生します。これは <code>Array.from()</code> が既定で新しい {{jsxref("Array")}} を生成するためです。</li>
+ <li><code><var>TypedArray</var>.from()</code> は <code>[[Put]]</code> を使用します。 <code>Array.from()</code> は <code>[[DefineProperty]]</code> を使用します。 従って {{jsxref("Proxy")}} オブジェクトを使っている場合は、新しい要素を追加するときに {{jsxref("Global_Objects/Proxy/handler/defineProperty", "handler.defineProperty")}} ではなく {{jsxref("Global_Objects/Proxy/handler/set", "handler.set")}} が呼び出されます。</li>
+ <li><code><var>source</var></code> 引数がイテレーターであった場合、 <code><var>TypedArray</var>.from()</code> は最初にイテレーターからすべての値を集め、その数の大きさを持つ <code><var>thisArg</var></code> のインスタンスを生成し、そのインスタンスに値を設定します。 <code>Array.from()</code> はイテレーターから取得して各値を設定し、最後に <code>length</code> を設定します。</li>
+ <li><code>Array.from()</code> がイテレーターではない配列風オブジェクトを受け取ったときは、穴をそのまま残します。 <code><var>TypedArray</var>.from()</code> は必ず<ruby>密配列<rp> (</rp><rt>dense array</rt><rp>) </rp></ruby>を生成します。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="From_an_iterable_object_Set" name="From_an_iterable_object_Set">反復可能オブジェクトから (Set)</h3>
+
+<pre class="brush: js notranslate">const s = new Set([1, 2, 3]);
+Uint8Array.from(s);
+// Uint8Array [ 1, 2, 3 ]
+</pre>
+
+<h3 id="From_a_string" name="From_a_string">文字列から</h3>
+
+<pre class="notranslate">Int16Array.from('123');
+// Int16Array [ 1, 2, 3 ]
+</pre>
+
+<h3 id="Use_with_arrow_function_and_map" name="Use_with_arrow_function_and_map">アロー関数と map の使用</h3>
+
+<p>アロー関数をマップ関数として使用して要素を操作します。</p>
+
+<pre class="notranslate">Float32Array.from([1, 2, 3], x =&gt; x + x);
+// Float32Array [ 2, 4, 6 ]
+</pre>
+
+<h3 id="Generate_a_sequence_of_numbers" name="Generate_a_sequence_of_numbers">数列を生成する</h3>
+
+<pre class="notranslate">Uint8Array.from({length: 5}, (v, k) =&gt; k);
+// Uint8Array [ 0, 1, 2, 3, 4 ]
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>JavaScript エンジンの実装がこのメソッドにネイティブに対応していない場合、回避策として、以下のコードをスクリプトの先頭に挿入することで、 <code>from()</code> の機能の大部分が使えるようになります。</p>
+
+<pre class="brush: js notranslate">if (!Int8Array.__proto__.from) {
+ (function () {
+ Int8Array.__proto__.from = function (obj, func, thisObj) {
+
+ var typedArrayClass = Int8Array.__proto__;
+ if(typeof this !== 'function') {
+ throw new TypeError('# is not a constructor');
+ }
+ if (this.__proto__ !== typedArrayClass) {
+ throw new TypeError('this is not a typed array.');
+ }
+
+ func = func || function (elem) {
+ return elem;
+ };
+
+ if (typeof func !== 'function') {
+ throw new TypeError('specified argument is not a function');
+ }
+
+ obj = Object(obj);
+ if (!obj['length']) {
+ return new this(0);
+ }
+ var copy_data = [];
+ for(var i = 0; i &lt; obj.length; i++) {
+ copy_data.push(obj[i]);
+ }
+
+ copy_data = copy_data.map(func, thisObj);
+
+ var typed_array = new this(copy_data.length);
+ for(var i = 0; i &lt; typed_array.length; i++) {
+ typed_array[i] = copy_data[i];
+ }
+ return typed_array;
+ }
+ })();
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.from', '%TypedArray%.from')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.from")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.of()")}}</li>
+ <li>{{jsxref("Array.from()")}}</li>
+ <li>{{jsxref("Array.prototype.map()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/includes/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/includes/index.html
new file mode 100644
index 0000000000..081e126c94
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/includes/index.html
@@ -0,0 +1,81 @@
+---
+title: TypedArray.prototype.includes()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/includes
+tags:
+ - ECMAScript 2016
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - メソッド
+ - 型付き配列
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/includes
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>includes()</strong></code> メソッドは、型付き配列が特定の要素を含んでいるかどうかを判断し、その結果に応じて <code>true</code> か <code>false</code> を返します。このメソッドは {{jsxref("Array.prototype.includes()")}} と同じアルゴリズムです。 <em>TypedArray</em> は、ここでは <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>のうちの一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-includes.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>typedarray</var>.includes(<var>searchElement</var>[, <var>fromIndex</var>]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>searchElement</var></code></dt>
+ <dd>探す対象の要素</dd>
+ <dt><code><var>fromIndex</var></code></dt>
+ <dd>オプション。<code>searchElement</code>を探し始める配列内の位置。既定では0です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Boolean")}} です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_includes" name="Using_includes">includes の使用</h3>
+
+<pre class="brush: js">var uint8 = new Uint8Array([1,2,3]);
+uint8.includes(2); // true
+uint8.includes(4); // false
+uint8.includes(3, 3); // false
+
+// NaN の扱い (Float32 および Float64 に限り true)
+new Uint8Array([NaN]).includes(NaN); // false (コンストラクターに渡した NaN は 0 に変換されるため)
+new Float32Array([NaN]).includes(NaN); // true;
+new Float64Array([NaN]).includes(NaN); // true;
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.includes', 'TypedArray.prototype.includes')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.includes")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.includes()")}}</li>
+ <li>{{jsxref("String.prototype.includes()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.indexOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/index.html
new file mode 100644
index 0000000000..ac7761db72
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/index.html
@@ -0,0 +1,313 @@
+---
+title: TypedArray
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray
+tags:
+ - Class
+ - JavaScript
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray
+---
+<div>{{JSRef}}</div>
+
+<p><strong><em>TypedArray</em></strong> オブジェクトは、背後にある<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer">バイナリーデータバッファー</a>の、配列状のビューを表します。 <code>TypedArray</code> という名称のグローバルプロパティはなく、また直接 <code>TypedArray</code> コンストラクターが見えるわけではありません。代わりに、さまざまなグローバルプロパティがあり、それらの値は後述するように特定の要素の型における型付き配列のコンストラクターになります。下記のページで、それぞれの要素を持つ片引き配列で使用できる共通のプロパティやメソッドを確認できます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-constructor.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>ECMAScript 2015 では <code><var>TypedArray</var></code> コンストラクターを、すべての <code><var>TypedArray</var></code> コンストラクターの <code>[[Prototype]]</code> として定義しています。このコンストラクターは直接公開されてはいません。グローバルな <code>%TypedArray%</code> または <code>TypedArray</code> プロパティは存在しません。<code>Object.getPrototypeOf(Int8Array)</code> などの形式でのみ直接アクセスできます。すべての <code><var>TypedArray</var></code> 系コンストラクターは、共通のプロパティを <code>%TypedArray%</code> コンストラクター関数から継承します。またすべての型付き配列のプロトタイプ (<code><var>TypedArray</var>.prototype</code>) は、自身の <code>[[Prototype]]</code> として <code>%TypedArray%.prototype</code> を持ちます。</p>
+
+<p><code>%TypedArray%</code> コンストラクター自体は、特に役立つものではありません。サブクラス化をサポートする JS エンジンでオブジェクトを生成する際に使用する場合を除き、コンストラクターを呼び出すか <code>new</code> 構文を使用すると {{jsxref("TypeError")}} が発生します。現在はそのようなエンジンがありませんので、<code>%TypedArray%</code> はすべての <code><var>TypedArray</var></code> コンストラクターへのポリフィル関数およびプロパティとしてのみ有用です。</p>
+
+<p><code><var>TypedArray</var></code> のインスタンス (すなわち <code>Int8Array</code> などのインスタンス) を生成するとき、配列バッファーはメモリーの内部に生成されます (コンストラクターの引数として <code>ArrayBuffer</code> オブジェクトが提供されて、配列バッファーによって使用される場合)。また、このバッファーのアドレスはインスタンスの内部プロパティとして保存され、 <code>%<var>TypedArray</var>%.prototype</code> のすべてのメソッドは、値の設定や取得などの操作で配列バッファーのアドレスを使用します。</p>
+
+<h3 id="TypedArray_objects" name="TypedArray_objects">TypedArray オブジェクト</h3>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th class="header" scope="col">型</th>
+ <th class="header" scope="col">値の範囲</th>
+ <th class="header" scope="col">サイズ (バイト数)</th>
+ <th class="header" scope="col">説明</th>
+ <th class="header" scope="col">Web IDL 型</th>
+ <th class="header" scope="col">同等の C 型</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{jsxref("Int8Array")}}</td>
+ <td><code>-128</code> ~ <code>127</code></td>
+ <td>1</td>
+ <td>8 ビット長、2 の補数方式の符号付き整数値</td>
+ <td><code>byte</code></td>
+ <td><code>int8_t</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Uint8Array")}}</td>
+ <td><code>0</code> ~ <code>255</code></td>
+ <td>1</td>
+ <td>8 ビット長、符号なし整数値</td>
+ <td><code>octet</code></td>
+ <td><code>uint8_t</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Uint8ClampedArray")}}</td>
+ <td><code>0</code> ~ <code>255</code></td>
+ <td>1</td>
+ <td>8 ビット長、符号なし整数値 (切り詰め)</td>
+ <td><code>octet</code></td>
+ <td><code>uint8_t</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Int16Array")}}</td>
+ <td><code>-32768</code> ~ <code>32767</code></td>
+ <td>2</td>
+ <td>16 ビット長、2 の補数方式の符号付き整数値</td>
+ <td><code>short</code></td>
+ <td><code>int16_t</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Uint16Array")}}</td>
+ <td><code>0</code> ~ <code>65535</code></td>
+ <td>2</td>
+ <td>16 ビット長、符号なし整数値</td>
+ <td><code>unsigned short</code></td>
+ <td><code>uint16_t</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Int32Array")}}</td>
+ <td><code>-2147483648</code> ~ <code>2147483647</code></td>
+ <td>4</td>
+ <td>32 ビット長、2 の補数方式の符号付き整数値</td>
+ <td><code>long</code></td>
+ <td><code>int32_t</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Uint32Array")}}</td>
+ <td><code>0</code> ~ <code>4294967295</code></td>
+ <td>4</td>
+ <td>32 ビット長、符号なし整数値</td>
+ <td><code>unsigned long</code></td>
+ <td><code>uint32_t</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Float32Array")}}</td>
+ <td><code>1.2</code><span>×</span><code>10<sup>-38</sup></code> ~ <code>3.4</code><span>×</span><code>10<sup>38</sup></code></td>
+ <td>4</td>
+ <td>32 ビット長 IEEE 方式 浮動小数点数 (有効桁数 7 桁、例えば <code>1.234567</code>)</td>
+ <td><code>unrestricted float</code></td>
+ <td><code>float</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Float64Array")}}</td>
+ <td><code>5.0</code><span>×</span><code>10<sup>-324</sup></code> ~ <code>1.8</code><span>×</span><code>10<sup>308</sup></code></td>
+ <td>8</td>
+ <td>64 ビット長 IEEE 方式 浮動小数点数 (有効桁数 16 桁、例えば<code>1.23456789012345</code>)</td>
+ <td><code>unrestricted double</code></td>
+ <td><code>double</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("BigInt64Array")}}</td>
+ <td><code>-2<sup>63</sup></code> ~ <code>2<sup>63</sup>-1</code></td>
+ <td>8</td>
+ <td>64 ビット長、2 の補数方式の符号付き整数値</td>
+ <td><code>bigint</code></td>
+ <td><code>int64_t (signed long long)</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("BigUint64Array")}}</td>
+ <td><code>0</code> ~ <code>2<sup>64</sup>-1</code></td>
+ <td>8</td>
+ <td>64 ビット長、符号なし整数値</td>
+ <td><code>bigint</code></td>
+ <td><code>uint64_t (unsigned long long)</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<p>このオブジェクトは直接インスタンス化することはできません。その代わりに、特定の方の配列、例えば {{jsxref("Int8Array")}} や {{jsxref("BigInt64Array")}} のインスタンスを生成することができます。これらのオブジェクトのコンストラクターの構文はすべて共通です。</p>
+
+<pre class="syntaxbox notranslate">new <var>TypedArray</var>();
+new <var>TypedArray</var>(<var>length</var>);
+new <var>TypedArray</var>(<var>typedArray</var>);
+new <var>TypedArray</var>(<var>object</var>);
+new <var>TypedArray</var>(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);
+</pre>
+
+<p>ここで <var>TypedArray</var> は特定の型のコンストラクターのうちの一つを表します。</p>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd>引数 <code>length</code> を付加して呼び出すと、<em>length に BYTES_PER_ELEMENT を掛けた値</em> のバイト数の、値 0 を持つ内部配列バッファーをメモリー内に生成します。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code><var>typedArray</var></code> 引数で、任意の型付き配列型 (<code>Int32Array</code> など) のオブジェクトを示す引数を渡して呼び出すと、<code><var>typedArray</var></code> を新たな型付き配列にコピーします。<code><var>typedArray</var></code> 内の各値は、新しい配列へコピーされる前に対応する型へ変換されます。新しい型付き配列オブジェクトの長さは、引数 <code><var>typedArray</var></code> の長さと同じです。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd>引数 <code><var>object</var></code> を付加して呼び出すと、<code><var>TypedArray</var>.from()</code> メソッドを使用したかのように新たな型付き配列を生成します。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd>引数 <code><var>buffer</var></code>, <code><var>byteOffset</var></code> (省略可), <code><var>length</var></code> (省略可) を付加して呼び出すと、指定した {{jsxref("ArrayBuffer")}} のビューになる新たな型付き配列を生成します。引数 <code><var>byteOffset</var></code> および <code><var>length</var></code> は、型付き配列ビューで公開するメモリー範囲を指定します。両方とも省略すると、<code><var>buffer</var></code> のすべてを公開します。<code><var>length</var></code> のみ省略すると、<code><var>buffer</var></code> の残りの部分を公開します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT")}}</dt>
+ <dd>さまざまな <code><var>TypedArray</var></code> オブジェクトの要素のサイズを数値で返します。</dd>
+ <dt>{{jsxref("TypedArray.name")}}</dt>
+ <dd>コンストラクター名を文字列値で返します (例: "<code>Int8Array</code>")。</dd>
+ <dt>{{jsxref("TypedArray.@@species", "get TypedArray[@@species]")}}</dt>
+ <dd>派生オブジェクトを生成するために使用するコンストラクター関数です。</dd>
+ <dt>{{jsxref("TypedArray.prototype")}}</dt>
+ <dd><code><var>TypedArray</var></code> オブジェクトのプロトタイプです。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from()")}}</dt>
+ <dd>配列状のオブジェクトや反復可能なオブジェクトから、新たな <code><var>TypedArray</var></code> を生成します。{{jsxref("Array.from()")}} もご覧ください。</dd>
+ <dt>{{jsxref("TypedArray.of()")}}</dt>
+ <dd>引数に与えた値をもとに、新たな <code><var>TypedArray</var></code> を生成します。{{jsxref("Array.of()")}} もご覧ください。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.prototype.buffer")}}</dt>
+ <dd>この型付き配列によって参照さている {{jsxref("ArrayBuffer")}} を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength")}}</dt>
+ <dd>型付き配列の長さを (バイト単位で) 返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset")}}</dt>
+ <dd>型付き配列の {{jsxref("ArrayBuffer")}} の先頭からのオフセットを (バイト単位で) 返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length")}}</dt>
+ <dd>型付き配列内に保持された要素の数を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.prototype.copyWithin()")}}</dt>
+ <dd>配列内で一連の配列要素をコピーします。 {{jsxref("Array.prototype.copyWithin()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.entries()")}}</dt>
+ <dd>配列内のすべての位置に対するキー/値の組を含む、新しい配列イテレーターを返します。 {{jsxref("Array.prototype.entries()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.every()")}}</dt>
+ <dd>配列内のすべての要素が関数によって提供されたテストに合格するかどうかテストを実行します。 {{jsxref("Array.prototype.every()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.fill()")}}</dt>
+ <dd>開始位置から終了位置までのすべての要素に固定値を設定します。 {{jsxref("Array.prototype.fill()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.filter()")}}</dt>
+ <dd>与えられたフィルタリング関数が <code>true</code> を返す配列のすべての要素をもつ新しい配列を生成します。 {{jsxref("Array.prototype.filter()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.find()")}}</dt>
+ <dd>配列要素が与えられたテスト関数を満足したら、配列の値を返します。満足しなかった場合、 <code>undefined</code> を返します。 {{jsxref("Array.prototype.find()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.findIndex()")}}</dt>
+ <dd>配列要素が与えられたテスト関数を満足したら、配列のインデックスを返します。満足しなかった場合は <code>-1</code> を返します。{{jsxref("Array.prototype.findIndex()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.forEach()")}}</dt>
+ <dd>配列内の各要素に対する関数を呼び出します。 {{jsxref("Array.prototype.forEach()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.includes()")}}</dt>
+ <dd>型付き配列にある要素が含まれているかどうか判断し、それに応じて <code>true</code> または <code>false</code> を返します。 {{jsxref("Array.prototype.includes()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.indexOf()")}}</dt>
+ <dd>指定された値に等しい配列内の要素の最初の位置を返します。見つからなかった場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.indexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.join()")}}</dt>
+ <dd>すべての配列要素を1つの文字列に結合します。 {{jsxref("Array.prototype.join()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.keys()")}}</dt>
+ <dd>配列内のそれぞれの位置に対するキーを含む新しい配列イテレーターを返します。 {{jsxref("Array.prototype.keys()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.lastIndexOf()")}}</dt>
+ <dd>指定された値と等しい配列の要素の最後の位置を返します。見つからない場合は <code>-1</code> を返します。{{jsxref("Array.prototype.lastIndexOf()")}}を確かめて下さい。</dd>
+ <dt>{{jsxref("TypedArray.prototype.map()")}}</dt>
+ <dd>この配列のすべての要素で与えられた関数を呼び出した結果をもつ新しい配列を生成します。{{jsxref("Array.prototype.map()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.reduce()")}}</dt>
+ <dd>アキュームレーターと配列のそれぞれの値 (左から右へ) に対して関数を適用し、単一の値にまで縮小します。 {{jsxref("Array.prototype.reduce()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.reduceRight()")}}</dt>
+ <dd>アキュームレーターと配列のそれぞれの値 (右から左へ) に対して関数を適用し、単一の値にまで縮小します。 {{jsxref("Array.prototype.reduce()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.reverse()")}}</dt>
+ <dd>配列要素の順番を反転させます。 — 最初の要素は最後になり、最後の要素は最初になります。 {{jsxref("Array.prototype.reverse()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.set()")}}</dt>
+ <dd>入力値を指定した配列から読み込み、型付き配列内に複数の値を格納します。</dd>
+ <dt>{{jsxref("TypedArray.prototype.slice()")}}</dt>
+ <dd>配列の一部を取り出して新しい配列を返します。 {{jsxref("Array.prototype.slice()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.some()")}}</dt>
+ <dd>ある配列の少なくとも 1 つの要素が与えられたテスト関数を満たした場合に <code>true</code> を返します。 {{jsxref("Array.prototype.some()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.sort()")}}</dt>
+ <dd>配列の要素をソートし、その結果を返します。 {{jsxref("Array.prototype.sort()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.subarray()")}}</dt>
+ <dd>与えられた開始位置と終了位置の要素インデックスから、新しい <code><var>TypedArray</var></code> を返します。</dd>
+ <dt>{{jsxref("TypedArray.prototype.values()")}}</dt>
+ <dd>配列内のそれぞれの位置に対する値を含む新しい配列イテレーターオブジェクトを返します。 {{jsxref("Array.prototype.values()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.toLocaleString()")}}</dt>
+ <dd>配列と要素を表すローカライズされた文字列を返します。 {{jsxref("Array.prototype.toLocaleString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.toString()")}}</dt>
+ <dd>配列と要素を表す文字列を返します。 {{jsxref("Array.prototype.toString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.prototype.@@iterator()", "TypedArray.prototype[@@iterator]()")}}</dt>
+ <dd>配列内でそれぞれの位置に対する値を含む新しい配列イテレーターオブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="New_is_required" name="New_is_required">new が必須</h3>
+
+<p>ECMAScript 2015 より、 <code>TypedArray</code> コンストラクターは {{jsxref("Operators/new", "new")}} 演算子を付けて構築する必要があります。 <code>TypedArray</code> コンストラクターを <code>new</code> のない関数として呼び出すと、 {{jsxref("TypeError")}} が発生します。</p>
+
+<pre class="brush: js example-bad notranslate">var dv = Int8Array([1, 2, 3]);
+// TypeError: calling a builtin Int8Array constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good notranslate">var dv = new Int8Array([1, 2, 3]);</pre>
+
+<h3 id="Property_access" name="Property_access">プロパティへのアクセス</h3>
+
+<p>配列内の要素は、標準の配列の添字構文 (すなわち、かぎ括弧を使用する表記) を使用して参照することができます。しかし、型付き配列で添字付きプロパティで取得または設定するときは、範囲外の添字でもプロパティのプロトタイプチェーンを探索しません。添字付きプロパティは {{jsxref("ArrayBuffer")}} を調べるのであり、オブジェクトのプロパティは探索しません。他のオブジェクト同様に、名前付きプロパティは使用できます。</p>
+
+<pre class="brush: js notranslate">// 標準的な配列構文を使用して設定および取得
+var int16 = new Int16Array(2);
+int16[0] = 42;
+console.log(int16[0]); // 42
+
+// プロトタイプで添字付き配列を使用しても探索しない (Fx 25)
+Int8Array.prototype[20] = 'foo';
+(new Int8Array(32))[20]; // 0
+// even when out of bound
+Int8Array.prototype[20] = 'foo';
+(new Int8Array(8))[20]; // undefined
+// or with negative integers
+Int8Array.prototype[-1] = 'foo';
+(new Int8Array(8))[-1]; // undefined
+
+// Named properties are allowed, though (Fx 30)
+Int8Array.prototype.foo = 'bar';
+(new Int8Array(32)).foo; // "bar"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typedarray-objects', 'TypedArray Objects')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript の型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+ <li><a href="/ja/docs/Web/API/TextDecoder">TextDecoder</a> — 数値データから文字列をデコードするヘルパー</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/indexof/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/indexof/index.html
new file mode 100644
index 0000000000..ab8d9e2024
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/indexof/index.html
@@ -0,0 +1,81 @@
+---
+title: TypedArray.prototype.indexOf()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/indexOf
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - メソッド
+ - 型付き配列
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/indexOf
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>indexOf()</strong></code> メソッドは、指定された要素が型付き配列内で見つかった最初の添字を返し、存在しなければ -1 を返します。このメソッドは {{jsxref("Array.prototype.indexOf()")}} と同じアルゴリズムです。 <em>TypedArray</em> は、ここでは<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>のうちの一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-indexof.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>typedarray</var>.indexOf(<var>searchElement</var>[, <var>fromIndex</var> = 0])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>searchElement</var></code></dt>
+ <dd>型付き配列内を検索する要素。</dd>
+ <dt><code><var>fromIndex</var></code></dt>
+ <dd>検索開始位置の添字。添字が型付き配列の長さ以上なら、 -1 が返り、これは型付き配列が検索されなかったことを意味します。与えられた添字が負の数の場合、型付き配列の最後からのオフセット値として扱われます。注意: 指定された添字が負の数であっても、型付き配列は前から後ろに向けて検索されます。計算された添字が0未満になった場合は、型付き配列の全体が検索されます。既定値: 0 (型付き配列全体が検索されます)。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列内の要素の最初の添字です。見つからなかったら <code>-1</code> になります。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>indexOf</code> は <code><var>searchElement</var></code> と型付き配列の要素を、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">厳密等価</a> (===、イコール3つの演算子と同じ方法) を使用して比較します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_indexOf" name="Using_indexOf">indexOf の使用</h3>
+
+<pre class="brush: js">var uint8 = new Uint8Array([2, 5, 9]);
+uint8.indexOf(2); // 0
+uint8.indexOf(7); // -1
+uint8.indexOf(9, 2); // 2
+uint8.indexOf(2, -1); // -1
+uint8.indexOf(2, -3); // 0
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.indexof', 'TypedArray.prototype.indexOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.indexOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.lastIndexOf()")}}</li>
+ <li>{{jsxref("Array.prototype.indexOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/join/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/join/index.html
new file mode 100644
index 0000000000..3cb4d56add
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/join/index.html
@@ -0,0 +1,88 @@
+---
+title: TypedArray.prototype.join()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/join
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/join
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>join()</code></strong> メソッドは、配列のすべての要素を1本の文字列に結合します。このメソッドのアルゴリズムは {{jsxref("Array.prototype.join()")}} と同じです。ここで <em>TypedArray</em> は、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>のうちの1つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-join.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.join([<var>separator</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>separator</var></code> {{optional_inline}}</dt>
+ <dd>配列の各要素を区切る文字列を指定します。 <code><var>separator</var></code> は、必要であれば文字列に変換されます。省略した場合、配列の要素はカンマ (",") で区切られます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列のすべての要素が結合された文字列です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_join" name="Using_join">join() の使用</h3>
+
+<pre class="brush: js notranslate">var uint8 = new Uint8Array([1,2,3]);
+uint8.join(); // '1,2,3'
+uint8.join(' / '); // '1 / 2 / 3'
+uint8.join(''); // '123'
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><em>TypedArray</em> という名前のグローバルオブジェクトはないため、ポリフィルの使用は「必要に応じて」の原則で行う必要があります。</p>
+
+<pre class="brush: js notranslate">// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join
+if (!Uint8Array.prototype.join) {
+ Object.defineProperty(Uint8Array.prototype, 'join', {
+ value: Array.prototype.join
+ });
+}
+</pre>
+
+<p>{{jsxref("Object.defineProperty")}} に対応していない本当に古い JavaScript エンジンに対応する必要がある場合は、列挙不可能にすることができないため、 <code>Array.prototype</code> メソッドのポリフィルを行わないことが適切です。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.join', 'TypedArray.prototype.join')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.join")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray")}}</li>
+ <li>{{jsxref("Array.prototype.join()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/keys/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/keys/index.html
new file mode 100644
index 0000000000..0f4c51c766
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/keys/index.html
@@ -0,0 +1,88 @@
+---
+title: TypedArray.prototype.keys()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/keys
+tags:
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/keys
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>keys()</code></strong> メソッドは、配列内の各インデックスに対するキーを含む新しい配列イテレーターオブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-keys.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.keys()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい配列イテレーターオブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Iteration_using_for...of_loop" name="Iteration_using_for...of_loop">for...of を使用した反復処理</h3>
+
+<pre class="brush: js notranslate">var arr = new Uint8Array([10, 20, 30, 40, 50]);
+var eArray = arr.keys();
+// ブラウザーが for..of loop および for ループ内の
+// let-scoped 変数に対応している必要があります
+for (let n of eArray) {
+ console.log(n);
+}
+</pre>
+
+<h3 id="Alternative_iteration" name="Alternative_iteration">他の繰り返し処理</h3>
+
+<pre class="brush: js notranslate">var arr = new Uint8Array([10, 20, 30, 40, 50]);
+var eArr = arr.keys();
+console.log(eArr.next().value); // 0
+console.log(eArr.next().value); // 1
+console.log(eArr.next().value); // 2
+console.log(eArr.next().value); // 3
+console.log(eArr.next().value); // 4
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.keys', '%TypedArray%.prototype.keys()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.keys")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript の型付き配列</a></li>
+ <li>{{jsxref("TypedArray")}}</li>
+ <li>{{jsxref("TypedArray.prototype.entries()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.values()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.@@iterator()", "TypedArray.prototype[@@iterator]()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復処理プロトコル </a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/lastindexof/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/lastindexof/index.html
new file mode 100644
index 0000000000..b1e36a2cb0
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/lastindexof/index.html
@@ -0,0 +1,82 @@
+---
+title: TypedArray.prototype.lastIndexOf()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/lastIndexOf
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - メソッド
+ - 型付き配列
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/lastIndexOf
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>lastIndexOf()</strong></code> メソッドは、指定された要素が型付き配列内で見つかった最後の位置の添字を返し、存在しなければ -1 を返します。型付き配列は <code><var>fromIndex</var></code> で始まる位置から逆方向に検索されます。 このメソッドは {{jsxref("Array.prototype.lastIndexOf()")}}と同じアルゴリズムです。 <em>TypedArray</em> は、ここでは<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>のうちの一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-lastindexof.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>typedarray</var>.lastIndexOf(<var>searchElement</var>[, <var>fromIndex</var> = typedarray.length])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>searchElement</var></code></dt>
+ <dd>typed array内で検索する要素。</dd>
+ <dt><code><var>fromIndex</var></code></dt>
+ <dd>オプション。逆方向に検索を開始する位置の添字。既定値は型付き配列の長さで、すなわち型付き配列全体が検索されます。添字が型付き配列の長さ以上の場合、型付き配列全体が検索されます。添字が負の数の場合、型付き配列の末尾からのオフセットとして扱われます。添字が負の数であっても、型付き配列は末尾から先頭に向けて検索されます。計算された添字が0未満になった場合は、 -1 が返され、すなわち型付き配列は検索されません。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列内の要素の最後の添字です。見つからなかったら <code>-1</code> になります。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>lastIndexOf</code> は <code><var>searchElement</var></code> と型付き配列の要素を、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">厳密等価</a> (===、イコール3つの演算子と同じ方法) を使用して比較します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_lastIndexOf" name="Using_lastIndexOf">lastIndexOf の使用</h3>
+
+<pre class="brush: js">var uint8 = new Uint8Array([2, 5, 9, 2]);
+uint8.lastIndexOf(2); // 3
+uint8.lastIndexOf(7); // -1
+uint8.lastIndexOf(2, 3); // 3
+uint8.lastIndexOf(2, 2); // 0
+uint8.lastIndexOf(2, -2); // 0
+uint8.lastIndexOf(2, -1); // 3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.lastindexof', 'TypedArray.prototype.lastIndexOf')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.lastIndexOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.indexOf()")}}</li>
+ <li>{{jsxref("Array.prototype.lastIndexOf()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/length/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/length/index.html
new file mode 100644
index 0000000000..ea6b441a2f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/length/index.html
@@ -0,0 +1,66 @@
+---
+title: TypedArray.prototype.length
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/length
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/length
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>length</code></strong> アクセサープロパティは、型付き配列の長さを (要素数で) 表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-length.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>length</code> プロパティは set アクセサープロパティが <code>undefined</code> であるアクセサープロパティです。これは、このプロパティが読み取り専用であることを意味します。値は <em>TypedArray</em> が構築されたときに確立し、変更することができません。 <em>TypedArray</em> に <code>byteOffset</code> または <code>length</code> が指定されていない場合、参照される {{jsxref("ArrayBuffer")}} の長さが返されます。 <em>TypedArray</em> は<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列オブジェクト</a>のうちの一つです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_length_property" name="Using_the_length_property">length プロパティの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+
+var uint8 = new Uint8Array(buffer);
+uint8.length; // 8 (matches the length of the buffer)
+
+var uint8 = new Uint8Array(buffer, 1, 5);
+uint8.length; // 5 (as specified when constructing the Uint8Array)
+
+var uint8 = new Uint8Array(buffer, 2);
+uint8.length; // 6 (due to the offset of the constructed Uint8Array)
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-%typedarray%.prototype.length', 'TypedArray.prototype.length')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.length")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript の型付き配列</a></li>
+ <li>{{jsxref("TypedArray")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/map/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/map/index.html
new file mode 100644
index 0000000000..a5257973c9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/map/index.html
@@ -0,0 +1,115 @@
+---
+title: TypedArray.prototype.map()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/map
+tags:
+ - ECMAScript6
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/map
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>map()</code></strong> メソッドは、与えられた関数を型付き配列のすべての要素に対して呼び出し、その結果からなる新しい配列を生成します。このメソッドは、{{jsxref("Array.prototype.map()")}}と同じアルゴリズムです。 <em>TypedArray</em> は、ここでは<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>の一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-map.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedArray</var>.map(<var>mapFn</var>[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>mapFn</var></code></dt>
+ <dd>
+ <p>新しい型付き配列の要素を生み出すコールバック関数で、3つの引数を取ります。</p>
+
+ <dl>
+ <dt><code><var>currentValue</var></code></dt>
+ <dd>現在処理中の要素の値です。</dd>
+ <dt><code><var>index</var></code> {{optional_inline}}</dt>
+ <dd>現在処理中の要素の型付き配列内における添字です。</dd>
+ <dt><code><var>array</var></code> {{optional_inline}}</dt>
+ <dd><code>map()</code> が実行されている型付き配列です。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code> {{optional_inline}}</dt>
+ <dd><code><var>mapFn</var></code> を実行するときに <code>this</code> として使う値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい型付き配列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>map()</code> は、与えられたコールバック関数 (<code><var>mapFn</var></code>) を型付き配列の各要素に対して、順番通りに一度ずつ呼び出し、その結果から新しい配列を生成します。</p>
+
+<p><code><var>mapFn</var></code> は型付き配列のインデックスのうち、値が割り当てられているものにのみ呼び出しす。 <code>undefined</code> であるインデックス、すなわち削除されたか値が割り当てられたことがないインデックスには呼び出しません。</p>
+
+<p><code><var>mapFn</var></code> は、要素の値、要素の添字、走査中の型付き配列オブジェクトという 3 つの引数をともなって呼び出されます。</p>
+
+<p><code><var>thisArg</var></code> 引数が <code>map()</code> に与えられた場合は、それが <code><var>mapFn</var></code> の呼び出し時に渡され、 <code>this</code> として使用されます。そうでない場合は、 {{jsxref("undefined")}} が <code>this</code> の値として使用されます。 <code><var>mapFn</var></code> から最終的に見える <code>this</code> の値は、<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数における通常の <code>this</code> を決定するルール</a>に従って決まります。</p>
+
+<p><code>map()</code> は呼び出された型付き配列を変化させません (ただし、 <code><var>mapFn</var></code> が呼び出されたあ愛は、変更する可能性はあります)。</p>
+
+<p><code>map()</code> によって処理される要素の範囲は、 <code><var>mapFn</var></code> が最初に呼び出される前に設定されます。 <code>map()</code> の呼び出しが開始された後に追加された要素に対しては、 <code><var>mapFn</var></code> は実行されません。既存の配列要素が変更されたり、削除された場合、 <code><var>mapFn</var></code> に渡される値は <code>map()</code> がそれらを訪れた時点での値になり、削除された要素を訪問することはありません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Mapping_a_typed_array_to_a_typed_array_of_square_roots" name="Mapping_a_typed_array_to_a_typed_array_of_square_roots">型付き配列を平方根の型付き配列にマッピング</h3>
+
+<p>次のコードは型付き配列を取り、最初の型付き配列にある数値の平方根からなる新しい型付き配列を生成します。</p>
+
+<pre class="brush: js notranslate">const numbers = new Uint8Array([1, 4, 9]);
+const roots = numbers.map(Math.sqrt);
+// roots の内容は [1, 2, 3] となる
+// numbers の内容は [1, 4, 9] のまま
+</pre>
+
+<h3 id="Mapping_a_typed_array_of_numbers_using_a_function_containing_an_argument" name="Mapping_a_typed_array_of_numbers_using_a_function_containing_an_argument">引数を含む関数を使用して型付き配列をマッピングする</h3>
+
+<p>次のコードは、1 つの引数を必要とする関数を使用するときに <code>map()</code> がどのように動作するかを示しています。引数は元の配列を通した <code>map()</code> ループとして、配列の各要素に自動的に割り当てられます。</p>
+
+<pre class="brush: js notranslate">const numbers = new Uint8Array([1, 4, 9]);
+const doubles = numbers.map(function(num) {
+ return num * 2;
+});
+// doubles is now Uint8Array [2, 8, 18]
+// numbers is still Uint8Array [1, 4, 9]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.map', 'TypedArray.prototype.map')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.map")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.filter()")}}</li>
+ <li>{{jsxref("Array.prototype.map()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/name/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/name/index.html
new file mode 100644
index 0000000000..06017bddc2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/name/index.html
@@ -0,0 +1,65 @@
+---
+title: TypedArray.name
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/name
+tags:
+ - JavaScript
+ - Property
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/name
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code><em>TypedArray</em>.name</code></strong> プロパティは、型付き配列のコンストラクターの名称を文字列値で表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-name.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div>{{js_property_attributes(0,0,0)}}</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>TypedArray</code> オブジェクトは要素ごとのバイト数とそのバイト列が解釈される方法とでお互いに異なります。 <code>name</code> プロパティによって配列がどのデータ型からなるのかが説明されます。最初の部分は <code>Int</code> が "integer" に対して、 <code>Uint</code> が "unsigned integer" に対して、 <code>Float</code> が "floating point" に対して使用されます。第二の部分は配列のビット長を説明する数値です。最後に、オブジェクト型は <code>Array</code> になりますが、特殊な場合は <code>ClampedArray</code> になります。詳細については、 {{jsxref("Uint8ClampedArray")}} をご覧ください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_name" name="Using_name">name の使用</h3>
+
+<pre class="brush:js notranslate">Int8Array.name; // "Int8Array"
+Uint8Array.name; // "Uint8Array"
+Uint8ClampedArray.name; // "Uint8ClampedArray"
+Int16Array.name; // "Int16Array"
+Uint16Array.name; // "Uint16Array"
+Int32Array.name; // "Int32Array"
+Uint32Array.name; // "Uint32Array"
+Float32Array.name; // "Float32Array"
+Float64Array.name; // "Float64Array"</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-properties-of-the-typedarray-constructors', 'TypedArray.name')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.name")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript の型付き配列</a></li>
+ <li>{{jsxref("TypedArray")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/of/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/of/index.html
new file mode 100644
index 0000000000..8f78c64c48
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/of/index.html
@@ -0,0 +1,101 @@
+---
+title: TypedArray.of()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/of
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/of
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code><var>TypedArray</var>.of()</code></strong> メソッドは、様々な数の引数をもつ新しい<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列</a>を生成します。このメソッドは {{jsxref("Array.of()")}} とほぼ同じです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-of.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>TypedArray</var>.of(<var>element0</var>[, <var>element1</var>[, ...[, <var>elementN</var>]]])
+</pre>
+
+<p>ここで <code><var>TypedArray</var></code> は次のいずれかです。</p>
+
+<div class="threecolumns">
+<ul>
+ <li>{{jsxref("Int8Array")}}</li>
+ <li>{{jsxref("Uint8Array")}}</li>
+ <li>{{jsxref("Uint8ClampedArray")}}</li>
+ <li>{{jsxref("Int16Array")}}</li>
+ <li>{{jsxref("Uint16Array")}}</li>
+ <li>{{jsxref("Int32Array")}}</li>
+ <li>{{jsxref("Uint32Array")}}</li>
+ <li>{{jsxref("Float32Array")}}</li>
+ <li>{{jsxref("Float64Array")}}</li>
+ <li>{{jsxref("BigInt64Array")}}</li>
+ <li>{{jsxref("BigUint64Array")}}</li>
+</ul>
+</div>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>element<var>N</var></var></code></dt>
+ <dd>型付き配列を生成するときの構成する要素。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい {{jsxref("TypedArray")}} のインスタンスです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Array.of()")}} と <code><var>TypedArray</var>.of()</code> との間にいくつかの微妙な違いがあります。</p>
+
+<ul>
+ <li><code><var>TypedArray</var>.of()</code> に渡された <code><var>this</var></code> の値がコンストラクターではなかった場合、 <code><var>TypedArray</var>.of()</code> で {{jsxref("TypeError")}} が発生します。これは <code>Array.of()</code> が既定で新しい {{jsxref("Array")}} を生成するためです。</li>
+ <li><code><var>TypedArray</var>.of()</code> は <code>[[Put]]</code> を使用するのに対し、 <code>Array.of()</code> は <code>[[DefineProperty]]</code> を使用します。従って {{jsxref("Proxy")}} オブジェクトを使っている場合は、新しい要素を追加するときに {{jsxref("Global_Objects/Proxy/handler/defineProperty", "handler.defineProperty()")}} ではなく {{jsxref("Global_Objects/Proxy/handler/set", "handler.set")}} が呼び出されます。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_of" name="Using_of">of() の使用</h3>
+
+<pre class="brush: js notranslate">Uint8Array.of(1); // Uint8Array [ 1 ]
+Int8Array.of('1', '2', '3'); // Int8Array [ 1, 2, 3 ]
+Float32Array.of(1, 2, 3); // Float32Array [ 1, 2, 3 ]
+Int16Array.of(undefined); // Int16Array [ 0 ]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.of', '%TypedArray%.of')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.of")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.from()")}}</li>
+ <li>{{jsxref("Array.of()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/reduce/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/reduce/index.html
new file mode 100644
index 0000000000..3e74bd367e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/reduce/index.html
@@ -0,0 +1,99 @@
+---
+title: TypedArray.prototype.reduce()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/reduce
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/reduce
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>reduce()</code></strong> メソッドは、アキュームレーターと型付き配列のそれぞれの値に対して (左から右へ) 関数を適用していき、単一の値にまとめます。このメソッドは、{{jsxref("Array.prototype.reduce()")}}と同じアルゴリズムです。 <em>TypedArray</em> は、ここでは<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>の一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-reduce.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarray</var>.reduce(<var>callback</var>[, <var>initialValue</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>型付き配列内の各値に対して実行する関数です。4 つの引数を取ります。
+ <dl>
+ <dt><code><var>previousValue</var></code></dt>
+ <dd>前回のコールバック関数の呼び出しで返された値。または、提供された場合は <code>initialValue</code> (下記参照)。</dd>
+ <dt><code><var>currentValue</var></code></dt>
+ <dd>現在処理されている型付き配列の要素。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd>現在処理されている型付き配列要素の添字。</dd>
+ <dt><code><var>array</var></code></dt>
+ <dd><code>reduce()</code> が呼び出された型付き配列。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>initialValue</var></code></dt>
+ <dd>任意。 <code><var>callback</var></code> 関数の最初の呼び出しの最初の引数として使用するオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>畳み込みによって得られた 1 つの値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>reduce</code> メソッドは、型付き配列に存在するそれぞれの要素に対して (型付き配列の中の穴は除く) <code><var>callback</var></code> 関数を一度ずつ実行します。この関数は、初期値 (または直前の <code><var>callback</var></code> 呼び出し)、現在の要素の値、現在の添字、反復処理中の型付き配列の 4 つの引数を受け取ります。</p>
+
+<p>最初にコールバック関数が呼び出されたときは、 <code><var>previousValue</var></code> と <code><var>currentValue</var></code> は、二つの値を一つにまとめます。 <code>reduce</code> の呼び出し時に <code><var>initialValue</var></code> が与えられた場合、 <code><var>previousValue</var></code> は <code><var>initialValue</var></code> に等しくなり、 <code><var>currentValue</var></code> は、型付き配列の最初の値と等しくなります。 <code><var>initialValue</var></code> が与えられなかった場合、 <code><var>previousValue</var></code> は、型付き配列の最初の値と等しくなり、 <code><var>currentValue</var></code> は 2 番目の値と等しくなります。</p>
+
+<p>型付き配列が空で、 <code><var>initialValue</var></code> が与えられなかった場合、 {{jsxref("TypeError")}} が発生します。型付き配列が (位置に関係なく) 一つの要素しか持たず、 <code><var>initialValue</var></code> が与えられなかった場合、もしくは、 <code><var>initialValue</var></code> が与えられたが型付き配列が空の場合、 <code><var>callback</var></code> 関数の呼び出しなしで、単独の値が返されることになります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Sum_up_all_values_within_an_array" name="Sum_up_all_values_within_an_array">配列内のすべての値を合計する</h3>
+
+<pre class="brush: js notranslate">var total = new Uint8Array([0, 1, 2, 3]).reduce(function(a, b) {
+ return a + b;
+});
+// total == 6
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p>このメソッドは {{jsxref("Array.prototype.reduce()")}} と同じアルゴリズムを使用しますので、同じポリフィルを使用することができます。単純に <code>Array.prototype.reduce</code> を <code>TypedArray.prototype.reduce</code> で置き換えてください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.reduce', '%TypedArray%.prototype.reduce')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.reduce")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.reduceRight()")}}</li>
+ <li>{{jsxref("Array.prototype.reduce()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/reduceright/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/reduceright/index.html
new file mode 100644
index 0000000000..b35d37a4ab
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/reduceright/index.html
@@ -0,0 +1,98 @@
+---
+title: TypedArray.prototype.reduceRight()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/reduceRight
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Reference
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/reduceRight
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>reduceRight()</code></strong> メソッドは、アキュームレーターと型付きのそれぞれの値に対して (右から左へ) 関数を適用していき、単一の値にまとめます。このメソッドは、{{jsxref("Array.prototype.reduceRight()")}}と同じアルゴリズムです。 <em>TypedArray</em> は、ここでは<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>の一つです。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarray</var>.reduceRight(<var>callback</var>[, <var>initialValue</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>型付き配列内の各値に対して実行する関数です。4 つの引数を取ります。
+ <dl>
+ <dt><code><var>previousValue</var></code></dt>
+ <dd>前回のコールバック関数の呼び出しで返された値。または、提供された場合は <code>initialValue</code> (下記参照)。</dd>
+ <dt><code><var>currentValue</var></code></dt>
+ <dd>現在処理されている型付き配列の要素。</dd>
+ <dt><code><var>index</var></code></dt>
+ <dd>現在処理されている型付き配列要素の添字。</dd>
+ <dt><code><var>array</var></code></dt>
+ <dd><code>reduceRight()</code> が呼び出された型付き配列</dd>
+ </dl>
+ </dd>
+ <dt><code><var>initialValue</var></code></dt>
+ <dd>任意。 <code><var>callback</var></code> 関数の最初の呼び出しの最初の引数として使用するオブジェクト。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>畳み込みによって得られた 1 つの値です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>reduceRight</code> メソッドは、型付き配列に存在するそれぞれの要素に対して (型付き配列の中の穴は除く) <code><var>callback</var></code> 関数を一度ずつ実行します。この関数は、初期値 (または直前の <code><var>callback</var></code> 呼び出し)、現在の要素の値、現在の添字、反復処理中の型付き配列の 4 つの引数を受け取ります。</p>
+
+<p><code>reduceRight</code> のコールバックの呼び出しは、下記のようになります。</p>
+
+<pre class="brush: js notranslate">typedarray.reduceRight(function(previousValue, currentValue, index, typedarray) {
+ // ...
+});
+</pre>
+
+<p>最初にコールバック関数が呼び出されたときは、 <code><var>previousValue</var></code> と <code><var>currentValue</var></code> は、二つの値を一つにまとめます。 <code>reduceRight</code> の呼び出し時に <code><var>initialValue</var></code> が与えられた場合、 <code><var>previousValue</var></code> は <code><var>initialValue</var></code> に等しくなり、 <code><var>currentValue</var></code> は、型付き配列の最後の値と等しくなります。 <code><var>initialValue</var></code> が与えられなかった場合、 <code><var>previousValue</var></code> は、型付き配列の最後の値と等しくなり、 <code><var>currentValue</var></code> は最後から数えて 2 番目の値と等しくなります。</p>
+
+<p>型付き配列が空で、 <code><var>initialValue</var></code> が与えられなかった場合、 {{jsxref("TypeError")}} が発生します。型付き配列が (位置に関係なく) 一つの要素しか持たず、 <code><var>initialValue</var></code> が与えられなかった場合、もしくは、 <code><var>initialValue</var></code> が与えられたが型付き配列が空の場合、 <code><var>callback</var></code> 関数の呼び出しなしで、単独の値が返されることになります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Sum_up_all_values_within_an_array" name="Sum_up_all_values_within_an_array">配列内のすべての値を合計する</h3>
+
+<pre class="brush: js notranslate">var total = new Uint8Array([0, 1, 2, 3]).reduceRight(function(a, b) {
+ return a + b;
+});
+// total == 6
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.reduceright', '%TypedArray%.prototype.reduceRight')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.reduceRight")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.reduce()")}}</li>
+ <li>{{jsxref("Array.prototype.reduceRight()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/reverse/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/reverse/index.html
new file mode 100644
index 0000000000..3d226e080e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/reverse/index.html
@@ -0,0 +1,65 @@
+---
+title: TypedArray.prototype.reverse()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/reverse
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - メソッド
+ - 型付き配列
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/reverse
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>reverse()</strong></code> メソッドは、その場で型付き配列を反転します。型付き配列の先頭の要素は末尾になり、末尾の要素は先頭になります。このメソッドは {{jsxref("Array.prototype.reverse()")}} と同じアルゴリズムです。 <em>TypedArray</em> は、ここでは <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>のうちの一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-reverse.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>typedarray</var>.reverse();</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>反転された配列です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_reverse" name="Using_reverse">reverse の使用</h3>
+
+<pre class="brush: js">var uint8 = new Uint8Array([1, 2, 3]);
+uint8.reverse();
+
+console.log(uint8); // Uint8Array [3, 2, 1]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.reverse', 'TypedArray.prototype.reverse')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.reverse")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.reverse()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/set/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/set/index.html
new file mode 100644
index 0000000000..1ba7c7b703
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/set/index.html
@@ -0,0 +1,81 @@
+---
+title: TypedArray.prototype.set()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/set
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - メソッド
+ - 型付き配列
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/set
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>set()</code></strong> メソッドは、複数の値を指定した配列から入力値を読み込み、型付き配列に格納します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-set.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>typedarray</var>.set(<var>array</var>[, <var>offset</var>])
+<var>typedarray</var>.set(<var>typedarray</var>[, <var>offset</var>])
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code><var>array</var></code></dt>
+ <dd>値のコピーする配列です。コピー元の配列からのすべての値がコピー先の配列にコピーされます。ただし、コピー元の配列の長さにオフセットを加えた長さがコピー先の配列の長さを超えた場合は、例外が発生します。</dd>
+ <dt><code><var>typedarray</var></code></dt>
+ <dd>コピー元の配列が型付き配列の場合、2つの配列は同じ {{jsxref("ArrayBuffer")}} を共有することができます。 JavaScript エンジンは、バッファのコピー元の範囲をコピー先の範囲にインテリジェントに <strong>copy</strong> します。</dd>
+ <dt><code><var>offset</var></code> {{optional_inline}}</dt>
+ <dd>コピー先の配列へのオフセットで、コピー元の配列からの値の書き込みを開始する位置です。この値を省略した場合は 0 と見なされます (つまり、コピー元の配列はインデックス 0 から始まるコピー先配列の値を上書きします)。</dd>
+</dl>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>{{jsxref("RangeError")}}: <code>offset</code> が型付けされた配列の最後を超えて格納されるように設定されていた場合。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_set" name="Using_set">set() の使用</h3>
+
+<pre class="brush:js">var buffer = new ArrayBuffer(8);
+var uint8 = new Uint8Array(buffer);
+
+uint8.set([1, 2, 3], 3);
+
+console.log(uint8); // Uint8Array [ 0, 0, 0, 1, 2, 3, 0, 0 ]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.set-array-offset', 'TypedArray.prototype.set')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.set")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("TypedArray")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/slice/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/slice/index.html
new file mode 100644
index 0000000000..09c2dbfc8e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/slice/index.html
@@ -0,0 +1,103 @@
+---
+title: TypedArray.prototype.slice()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/slice
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/slice
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>slice()</code></strong> メソッドは、元の型付き配列の部分的なコピーを含む新しい型付き配列 (新しいバッファーによる) を返します。このメソッドは {{jsxref("Array.prototype.slice()")}} と同じアルゴリズムを持ちます。 <em>TypedArray</em> は、ここでは<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>の一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-slice.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarray</var>.slice([<var>begin</var>[, <var>end</var>]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>begin</var></code> {{optional_inline}}</dt>
+ <dd>抽出範囲の先頭の位置を示す 0 から始まる添字です。</dd>
+ <dd>負の添字を使って、配列の末尾からの相対位置を表すことができます。 <code>slice(-2)</code> は配列の最後から 2 番目の要素と最後の要素を抽出します。</dd>
+ <dd><code><var>begin</var></code> を省略した場合、 <code>slice</code> は <code>0</code> 番目の要素から開始します。</dd>
+ <dt><code><var>end</var></code> {{optional_inline}}</dt>
+ <dd>抽出範囲の末尾の<em>直前</em>の位置を示す 0 から始まる添字です。 <code>slice</code> は <code><var>end</var></code> 自体は含めず、その直前まで抽出します。</dd>
+ <dd><code>slice(1,4)</code> は 2 番目の要素から 4 番目の要素まで (添字が 1, 2, 3 の要素) を取り出します。</dd>
+ <dd>負の添字を使って、配列の末尾からの相対位置を表すことができます。 <code>slice(2,-1)</code> は配列の 3 番目の要素から、最後から 2 番目の要素まで取り出します。</dd>
+ <dd><code><var>end</var></code> が省略された場合、 <code>slice</code> は配列の最後 (<code>typedarray.length</code>) まで取り出します。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>抽出された要素が入った新しい型付き配列。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>slice</code> メソッドは元の配列を変更しません。元の配列から取り出された要素のコピーを含む浅いコピーを返します。</p>
+
+<p>一方の型付き配列に新しい要素が追加されても、他方の型付き配列に影響はしません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Example_Return_a_portion_of_an_existing_array" name="Example:_Return_a_portion_of_an_existing_array">例: 既存の配列の一部を返す</h3>
+
+<pre class="brush: js notranslate">var uint8 = new Uint8Array([1,2,3]);
+uint8.slice(1); // Uint8Array [ 2, 3 ]
+uint8.slice(2); // Uint8Array [ 3 ]
+uint8.slice(-2); // Uint8Array [ 2, 3 ]
+uint8.slice(0,1); // Uint8Array [ 1 ]
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><em>TypedArray</em> という名前のグローバルオブジェクトはないため、ポリフィルの使用は「必要に応じて」の原則で行う必要があります。</p>
+
+<pre class="brush: js notranslate">if (!Uint8Array.prototype.slice) {
+  Object.defineProperty(Uint8Array.prototype, 'slice', {
+    value: function (begin, end)
+     {
+        return new Uint8Array(Array.prototype.slice.call(this, begin, end));
+     }
+  });
+}
+</pre>
+
+<p>{{jsxref("Object.defineProperty")}} に対応していない本当に古い JavaScript エンジンに対応する必要がある場合は、列挙不可能にすることができないため、 <code>Array.prototype</code> メソッドのポリフィルを行わないことが適切です。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.slice', '%TypedArray%.prototype.slice')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.slice")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.slice()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/some/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/some/index.html
new file mode 100644
index 0000000000..0d579721cb
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/some/index.html
@@ -0,0 +1,119 @@
+---
+title: TypedArray.prototype.some()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/some
+tags:
+ - ECMAScript6
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/some
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>some()</code></strong> メソッドは、与えられた関数によって実行されるテストに合格する要素が型付き配列の中にあるかどうかをテストします。このメソッドは、{{jsxref("Array.prototype.some()")}}と同じアルゴリズムを持ちます。ここで <em>TypedArray</em> は<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列</a>のうちの一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-some.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarray</var>.some(<var>callback</var>[, <var>thisArg</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>callback</var></code></dt>
+ <dd>各要素に対してテストを実行する関数。三つの引数を取ります。
+ <dl>
+ <dt><code>currentValue</code></dt>
+ <dd>型付き配列内で処理されている現在の要素。</dd>
+ <dt><code>index</code></dt>
+ <dd>型付き配列内で処理されている現在の要素のインデックス。</dd>
+ <dt><code>array</code></dt>
+ <dd><code>some</code> が呼び出されている型付き配列。</dd>
+ </dl>
+ </dd>
+ <dt><code><var>thisArg</var></code></dt>
+ <dd>オプション。 <code><var>callback</var></code> を実行するときに <code>this</code> として使用する値。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>配列内のいずれかの要素でコールバック関数が{{Glossary("truthy", "真と解釈される")}}値を返した場合は &lt;<code>true</code> です。それ以外は <code>false</code> です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>some()</code>メソッドは、 <code><var>callback</var></code> 関数を、型付き配列に含まれる各要素に対して一度ずつ、 <code><var>callback</var></code> が真の値を返す要素が見つかるまで呼び出します。真の値を返す要素が見つかると、 <code>some()</code> メソッドはただちに <code>true</code> を返します。見つからなかった場合、 <code>false</code> を返します。</p>
+
+<p><code><var>callback</var></code> は、要素の値、要素の添字、走査中の配列オブジェクトの3つの引数で呼び出されます。</p>
+
+<p><code><var>thisArg</var></code> 引数が <code>some()</code> に与えられると、 <code><var>callback</var></code> が呼び出される際に <code>this</code> として使用されます。さもなければ、 <code>undefined</code> 値が <code>this</code> として使用されるために渡されます。最終的に <code><var>callback</var></code> によって観測される <code>this</code> の値は、<a href="/ja/docs/Web/JavaScript/Reference/Operators/this">関数から見える <code>this</code> を特定するための通常のルール</a>に応じて決定されます。</p>
+
+<p><code>some</code> は呼び出された型付き配列を変更しません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Testing_size_of_all_array_elements" name="Testing_size_of_all_array_elements">型付き配列のすべての要素の大きさをテストする</h3>
+
+<p>次の例では、型付き配列の中に 10 よりも大きい要素があるかどうかをテストします。</p>
+
+<pre class="brush: js language-js notranslate">function isBiggerThan10(element, index, array) {
+ return element &gt; 10;
+}
+
+new Uint8Array([2, 5, 8, 1, 4]).some(isBiggerThan10); // false
+new Uint8Array([12, 5, 8, 1, 4]).some(isBiggerThan10); // true</pre>
+
+<h3 id="Testing_typed_array_elements_using_arrow_functions" name="Testing_typed_array_elements_using_arrow_functions">アロー関数を使用して型付き配列をテストする</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a>は同じテストを短い構文で行うことができます。</p>
+
+<pre class="brush: js notranslate">new Uint8Array([2, 5, 8, 1, 4]).some(elem =&gt; elem &gt; 10); // false
+new Uint8Array([12, 5, 8, 1, 4]).some(elem =&gt; elem &gt; 10); // true</pre>
+
+<h2 id="Polyfill" name="Polyfill">ポリフィル</h2>
+
+<p><em>TypedArray</em> と言う名前のグローバルオブジェクトは存在しないため、ポリフィルは「必要に応じて」の原則で行う必要があります。</p>
+
+<pre class="brush: js notranslate">// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some
+if (!Uint8Array.prototype.some) {
+ Object.defineProperty(Uint8Array.prototype, 'some', {
+ value: Array.prototype.some
+ });
+}
+</pre>
+
+<p>もし {{jsxref("Object.defineProperty")}} にも対応していないような本当に古い JavaScript エンジンに対応する必要がある場合は、 <code>Array.prototype</code> メソッドは列挙可能にすることができないので、ポリフィルを行わないのが最良です。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.some', 'TypedArray.prototype.some')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.some")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.every()")}}</li>
+ <li>{{jsxref("Array.prototype.some()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/sort/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/sort/index.html
new file mode 100644
index 0000000000..942c3df513
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/sort/index.html
@@ -0,0 +1,83 @@
+---
+title: TypedArray.prototype.sort()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/sort
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - メソッド
+ - 型付き配列
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/sort
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>sort()</strong></code> メソッドは、型付き配列の要素を<em>その場で</em>数値的に並べ替え、その型付き配列を返します。このメソッドは {{jsxref("Array.prototype.sort()")}} と同じアルゴリズムです。 <em>TypedArray</em> は、ここでは<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>のうちの一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-reverse.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><var>typedarray</var>.sort([<var>compareFunction</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>compareFunction</var></code> {{optional_inline}}</dt>
+ <dd>ソート順を定義する関数を指定します。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>並べ替えた型付き配列です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_sort" name="Using_sort">sort の使用</h3>
+
+<p>他の例は、 {{jsxref("Array.prototype.sort()")}} メソッドです。</p>
+
+<pre class="brush: js">let numbers = new Uint8Array([40, 1, 5, 200]);
+numbers.sort();
+// Uint8Array [ 1, 5, 40, 200 ]
+// ふつうの配列とは異なり、数値的に数値を並べ替えるためには
+// 比較関数は必要ありません。
+
+// ふつうの配列は数値で並べ替えるために比較関数を必要とします。
+numbers = [40, 1, 5, 200];
+numbers.sort();
+// [1, 200, 40, 5]
+
+numbers.sort((a, b) =&gt; a - b); // 数値を比較
+// [ 1, 5, 40, 200 ]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.sort', 'TypedArray.prototype.sort')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.indexOf")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.sort()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/subarray/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/subarray/index.html
new file mode 100644
index 0000000000..7d28235f7b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/subarray/index.html
@@ -0,0 +1,86 @@
+---
+title: TypedArray.prototype.subarray()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/subarray
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/subarray
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>subarray()</code></strong> メソッドは、同じ {{jsxref("ArrayBuffer")}} ストアで、この <em>TypedArray</em> オブジェクトと同じ要素の型をもつ新しい <em>TypedArray</em> を返します。先頭のオフセットは<strong>含み</strong>、末尾のオフセットは<strong>含みません</strong>。 <em>TypedArray</em> は<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型付き配列型</a>の一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-subarray.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarr</var>ay.subarray([<var>begin</var>[, <var>end</var>]])
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>begin</var></code> {{optional_inline}}</dt>
+ <dd>先頭の要素です。この位置は含まれます。この値が指定されていない場合、配列全体が新しいビューに含まれます。</dd>
+ <dt><code><var>end</var></code> {{optional_inline}}</dt>
+ <dd>末尾の要素です。この位置は含まれません。この値が指定されていない場合、 <code><var>begin</var></code> によって指定された要素から配列の最後まですべての要素が新しいビューに含まれます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい {{jsxref("TypedArray")}} オブジェクトです。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code><var>begin</var></code> と <code><var>end</var></code> によって指定される範囲は、現在の配列に対して有効なインデックスの範囲に丸められます。すなわち、新しい範囲の計算された長さがマイナスなら、ゼロに縮められます。 <code><var>begin</var></code> か <code><var>end</var></code> のどちらかがマイナスなら、配列の最初からではなく、最後からインデックスを参照します。</p>
+
+<p>既存のバッファ上に新しいビューを作っていることにも注意して下さい。すなわち、新しいオブジェクトの内容への変更は、元のオブジェクトに強い影響を与えます。逆もまた同様です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_subarray_method" name="Using_the_subarray_method">subarray() メソッドの使用</h3>
+
+<pre class="brush:js notranslate">var buffer = new ArrayBuffer(8);
+var uint8 = new Uint8Array(buffer);
+uint8.set([1,2,3]);
+
+console.log(uint8); // Uint8Array [ 1, 2, 3, 0, 0, 0, 0, 0 ]
+
+var sub = uint8.subarray(0,4);
+
+console.log(sub); // Uint8Array [ 1, 2, 3, 0 ]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.subarray', 'TypedArray.prototype.subarray')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.subarray")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript の型付き配列</a></li>
+ <li>{{jsxref("TypedArray")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/tolocalestring/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/tolocalestring/index.html
new file mode 100644
index 0000000000..769097ffec
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/tolocalestring/index.html
@@ -0,0 +1,78 @@
+---
+title: TypedArray.prototype.toLocaleString()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/toLocaleString
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/toLocaleString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toLocaleString()</code></strong> メソッドは、型付き配列の要素を表す文字列を返します。要素は文字列に変換され、ロケール固有の文字列 (カンマ "," など) で区切られます。このメソッドは {{jsxref("Array.prototype.toLocaleString()")}} と同じアルゴリズムを持ち、型付き配列の要素は数値なので、各要素に対して {{jsxref("Number.prototype.toLocaleString()")}} と同じアルゴリズムが適用されます。ここで <em>TypedArray</em> は<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">型指定された</a>配列型の1つです。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarr</var>ay.toLocaleString([locales [, options]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<div>
+<p><code>locales</code> と <code>options</code> の引数は、関数の動作をカスタマイズし、アプリケーションがフォーマット規則を使用する言語を指定できるようにします。 <code>locales</code> と <code>options</code> の引数を無視する実装では、使用されるロケールと返される文字列の形式は完全に実装に依存します。</p>
+
+<div>これらの引数の詳細および使用方法については、 {{jsxref("Intl/NumberFormat/NumberFormat", "Intl.NumberFormat()")}} コンストラクターを参照してください。</div>
+</div>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>型付き配列の要素を表す文字列。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_toLocaleString" name="Using_toLocaleString">toLocaleString の使用</h3>
+
+<pre class="brush: js notranslate">var uint = new Uint32Array([2000, 500, 8123, 12, 4212]);
+
+uint.toLocaleString();
+// if run in a de-DE locale
+// "2.000,500,8.123,12,4.212"
+
+uint.toLocaleString('en-US');
+// "2,000,500,8,123,12,4,212"
+
+uint.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' });
+// "¥2,000,¥500,¥8,123,¥12,¥4,212"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.tolocalestring', 'TypedArray.prototype.toLocaleString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.toLocaleString")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Number.prototype.toLocaleString()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/tostring/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/tostring/index.html
new file mode 100644
index 0000000000..c374a3f8f5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/tostring/index.html
@@ -0,0 +1,73 @@
+---
+title: TypedArray.prototype.toString()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/toString
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/toString
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>toString()</code></strong> メソッドは、指定された配列とその要素を表す文字列を返します。このメソッドは、{{jsxref("Array.prototype.toString()")}} と同じアルゴリズムを持ちます。ここで <em>TypedArray</em> は <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">TypedArray オブジェクト</a>のうちの一つです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/typedarray-tostring.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>typedarray</var>.toString()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>型付き配列の要素を表す文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("TypedArray")}} オブジェクトは {{jsxref("Object")}} の <code>toString</code> メソッドをオーバーライドしています。 <code>TypedArray</code> オブジェクトでは、 <code>toString</code> メソッドは配列をつないで、配列のそれぞれの要素がカンマで区切られた 1 つの文字列を返します。たとえば、次のコードは型付き配列を生成した後、 <code>toString</code> を使用して配列を文字列に変換しています。</p>
+
+<pre class="brush: js notranslate">var numbers = new Uint8Array([2, 5, 8, 1, 4])
+numbers.toString(); // "2,5,8,1,4"
+</pre>
+
+<p>型付き配列が文字列値として表される必要がある場合や、配列が文字列の結合の中で参照された時、 JavaScript は <code>toString</code> メソッドを自動的に呼び出します。</p>
+
+<h3 id="Compatibility" name="Compatibility">互換性</h3>
+
+<p>ブラウザーが <code>TypedArray.prototype.toString()</code> メソッドに対応していない場合は、 JavaScript は {{jsxref("Object")}} の <code>toString</code> メソッドを呼び出します。</p>
+
+<pre class="brush: js notranslate">var numbers = new Uint8Array([2, 5, 8, 1, 4])
+numbers.toString(); // "[object Uint8Array]"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.tostring', 'Array.prototype.toString')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypedArray.toString")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("TypedArray.prototype.join()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typedarray/values/index.html b/files/ja/web/javascript/reference/global_objects/typedarray/values/index.html
new file mode 100644
index 0000000000..e07a280e0f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typedarray/values/index.html
@@ -0,0 +1,121 @@
+---
+title: TypedArray.prototype.values()
+slug: Web/JavaScript/Reference/Global_Objects/TypedArray/values
+tags:
+ - ECMAScript6
+ - Iterator
+ - JavaScript
+ - Method
+ - Prototype
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/values
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>values()</code></strong> メソッドは、配列の各インデックスの値を持つ新しい配列イテレーターオブジェクトを返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/array-values.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>arr</var>.values()</pre>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>新しい配列イテレーターオブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Iteration_using_for...of_loop" name="Iteration_using_for...of_loop">for...of ループを用いた反復処理</h3>
+
+<pre class="brush: js notranslate">var arr = ['a', 'b', 'c', 'd', 'e'];
+var iterator = arr.values();
+
+for (let letter of iterator) {
+ console.log(letter);
+} //"a" "b" "c" "d" "e"
+</pre>
+
+<p><code>Array.prototype.values</code> は <code>Array.prototype[Symbol.iterator]</code> の既定の実装です。</p>
+
+<pre class="notranslate">Array.prototype.values === Array.prototype[Symbol.iterator] //true</pre>
+
+<h3 id="Iteration_using_.next" name="Iteration_using_.next">.next() を使用した反復処理</h3>
+
+<pre class="brush: js notranslate">var arr = ['a', 'b', 'c', 'd', 'e'];
+var iterator = arr.values();
+iterator.next(); // Object { value: "a", done: false }
+iterator.next().value; // "b"
+iterator.next()["value"]; // "c"
+iterator.next(); // Object { value: "d", done: false }
+iterator.next(); // Object { value: "e", done: false }
+iterator.next(); // Object { value: undefined, done: true }
+iteraror.next().value; // undefined </pre>
+
+<div class="blockIndicator warning">
+<p>一度だけの使用: 配列イテレーターオブジェクトは一度だけの使用または一時オブジェクトです</p>
+</div>
+
+<p>例:</p>
+
+<pre class="brush: js notranslate">var arr = ['a', 'b', 'c', 'd', 'e'];
+ var iterator = arr.values();
+ for (let letter of iterator) {
+ console.log(letter);
+} //"a" "b" "c" "d" "e"
+for (let letter of iterator) {
+console.log(letter);
+} // undefined
+</pre>
+
+<p><strong>理由:</strong> <code>next().done=true</code> または <code>currentIndex&gt;length</code> が <code>for..of</code> の終了条件だからです。<a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復処理プロトコル</a>を参照して下さい。</p>
+
+<p><strong>値</strong>: 配列のイテレーターオブジェクトには値が格納されません。その代わりに、その作成に使用された配列のアドレスが格納されるので、その配列に格納されている値に依存します。</p>
+
+<pre class="brush: js notranslate">var arr = ['a', 'b', 'c', 'd', 'e'];
+var iterator = arr.values();
+console.log(iterator); // Array Iterator { }
+iterator.next().value; // "a"
+arr[1]='n';
+iterator.next().value; // "n"
+</pre>
+
+<div class="blockIndicator note">
+<p>配列内の値が変化した場合は、配列の反復子オブジェクトの値も変化します。</p>
+</div>
+
+<p class="hidden"><strong>TODO</strong>: please write about why we need it, use cases.</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.values', 'Array.prototype.values')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Array.values")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.keys()")}}</li>
+ <li>{{jsxref("Array.prototype.entries()")}}</li>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Array.prototype.every()")}}</li>
+ <li>{{jsxref("Array.prototype.some()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typeerror/index.html b/files/ja/web/javascript/reference/global_objects/typeerror/index.html
new file mode 100644
index 0000000000..adc36d13e9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typeerror/index.html
@@ -0,0 +1,107 @@
+---
+title: TypeError
+slug: Web/JavaScript/Reference/Global_Objects/TypeError
+tags:
+ - Error
+ - JavaScript
+ - Object
+ - Reference
+ - TypeError
+translation_of: Web/JavaScript/Reference/Global_Objects/TypeError
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>TypeError</strong></code> オブジェクトは、演算が実行できなくなった時の新しいエラーを表します。特に値が期待された型ではなかった場合です (ただし、それに限りません)。</p>
+
+<p><code>TypeError</code> は以下のような場合に発生します。</p>
+
+<ul>
+ <li>関数に渡されたオペランドや引数が、その演算子や関数で期待された型と互換性がなかった場合</li>
+ <li>変更できない値を変更しようとした場合</li>
+ <li>適切ではない方法で値を使用しようとした場合</li>
+</ul>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/TypeError/TypeError", "TypeError()")}}</dt>
+ <dd>新しい <code>TypeError</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.message", "TypeError.prototype.message")}}</dt>
+ <dd>エラーメッセージです。 ECMA-262 において {{jsxref("TypeError")}} は自身の <code>message</code> プロパティを提供するべきとされていますが、 <a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> では {{jsxref("Error.prototype.message")}} を継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.name", "TypeError.prototype.name")}}</dt>
+ <dd>エラー名です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.fileName", "TypeError.prototype.fileName")}}</dt>
+ <dd>このエラーが発生したファイルのパスです。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.lineNumber", "TypeError.prototype.lineNumber")}}</dt>
+ <dd>このエラーが発生したファイル内の行番号です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.columnNumber", "TypeError.prototype.columnNumber")}}</dt>
+ <dd>このエラーが発生した行内の桁番号です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.stack", "TypeError.prototype.stack")}}</dt>
+ <dd>スタックトレースです。 {{jsxref("Error")}} から継承しています。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Catching_a_TypeError" name="Catching_a_TypeError">TypeError のキャッチ</h3>
+
+<pre class="brush: js notranslate">try {
+ null.f()
+} catch (e) {
+ console.log(e instanceof TypeError) // true
+ console.log(e.message) // "null has no properties"
+ console.log(e.name) // "TypeError"
+ console.log(e.fileName) // "Scratchpad/1"
+ console.log(e.lineNumber) // 2
+ console.log(e.columnNumber) // 2
+ console.log(e.stack) // "@Scratchpad/2:2:3\n"
+}
+</pre>
+
+<h3 id="Creating_a_TypeError" name="Creating_a_TypeError">TypeError の生成</h3>
+
+<pre class="brush: js notranslate">try {
+ throw new TypeError('Hello', "someFile.js", 10)
+} catch (e) {
+ console.log(e instanceof TypeError) // true
+ console.log(e.message) // "Hello"
+ console.log(e.name) // "TypeError"
+ console.log(e.fileName) // "someFile.js"
+ console.log(e.lineNumber) // 10
+ console.log(e.columnNumber) // 0
+ console.log(e.stack) // "@Scratchpad/2:2:9\n"
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-typeerror', 'TypeError')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypeError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/typeerror/typeerror/index.html b/files/ja/web/javascript/reference/global_objects/typeerror/typeerror/index.html
new file mode 100644
index 0000000000..3827e78965
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/typeerror/typeerror/index.html
@@ -0,0 +1,89 @@
+---
+title: TypeError() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/TypeError/TypeError
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypeError
+translation_of: Web/JavaScript/Reference/Global_Objects/TypeError/TypeError
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>TypeError()</code></strong> コンストラクターは、演算が実行できなくなった時の新しいエラーを生成します。特に値が期待された型ではなかった場合です (ただし、それに限りません)。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new TypeError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>message</var></code> {{optional_inline}}</dt>
+ <dd>人間が読むためのエラーの説明です。</dd>
+ <dt><code><var>fileName</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードを含むファイルの名前です。</dd>
+ <dt><code><var>lineNumber</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードの行番号です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Catching_a_TypeError" name="Catching_a_TypeError">TypeError の捕捉</h3>
+
+<pre class="brush: js notranslate">try {
+ null.f()
+} catch (e) {
+ console.log(e instanceof TypeError) // true
+ console.log(e.message) // "null has no properties"
+ console.log(e.name) // "TypeError"
+ console.log(e.fileName) // "Scratchpad/1"
+ console.log(e.lineNumber) // 2
+ console.log(e.columnNumber) // 2
+ console.log(e.stack) // "@Scratchpad/2:2:3\n"
+}
+</pre>
+
+<h3 id="Creating_a_TypeError" name="Creating_a_TypeError">TypeError の生成</h3>
+
+<pre class="brush: js notranslate">try {
+ throw new TypeError('Hello', "someFile.js", 10)
+} catch (e) {
+ console.log(e instanceof TypeError) // true
+ console.log(e.message) // "Hello"
+ console.log(e.name) // "TypeError"
+ console.log(e.fileName) // "someFile.js"
+ console.log(e.lineNumber) // 10
+ console.log(e.columnNumber) // 0
+ console.log(e.stack) // "@Scratchpad/2:2:9\n"
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-nativeerror-constructors', 'NativeError constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.TypeError.TypeError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/uint16array/index.html b/files/ja/web/javascript/reference/global_objects/uint16array/index.html
new file mode 100644
index 0000000000..b588ea3bd5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/uint16array/index.html
@@ -0,0 +1,168 @@
+---
+title: Uint16Array
+slug: Web/JavaScript/Reference/Global_Objects/Uint16Array
+tags:
+ - Class
+ - JavaScript
+ - TypedArray
+ - TypedArrays
+ - Uint16Array
+translation_of: Web/JavaScript/Reference/Global_Objects/Uint16Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Uint16Array</code></strong> は型付き配列であり、プラットフォームのバイト順による 16 ビット符号なし整数値の配列を表します。バイト順の制御が必要な場合は、代わりに {{jsxref("DataView")}} を使用してください。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Uint16Array/Uint16Array", "Uint16Array()")}}</dt>
+ <dd>新しい <code>Uint16Array</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint16Array.BYTES_PER_ELEMENT")}}</dt>
+ <dd>要素の大きさの数値を返します。 <code>Uint16Array</code> の場合は <code>2</code> になります。</dd>
+ <dt>{{jsxref("TypedArray.name", "Uint16Array.name")}}</dt>
+ <dd>コンストラクターの名前を文字列値で返します。 <code>Uint16Array</code> 型の場合は "<code>Uint16Array</code>" です。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from", "Uint16Array.from()")}}</dt>
+ <dd>新しい <code>Uint16Array</code> を、配列風オブジェクトや反復可能オブジェクトから生成します。 {{jsxref("Array.from()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.of", "Uint16Array.of()")}}</dt>
+ <dd>新しい <code>Uint16Array</code> を、可変長引数で生成します。 {{jsxref("Array.of()")}} も参照してください。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.prototype.buffer", "Uint16Array.prototype.buffer")}}</dt>
+ <dd><code>Uint16Array</code> オブジェクトによって参照される {{jsxref("ArrayBuffer")}} を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength", "Uint16Array.prototype.byteLength")}}</dt>
+ <dd><code>Uint16Array</code> の長さを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset", "Uint16Array.prototype.byteOffset")}}</dt>
+ <dd><code>Uint16Array</code> のオフセットを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length", "Uint16Array.prototype.length")}}</dt>
+ <dd><code>Uint16Array</code> オブジェクト内に保持されている要素の数を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.copyWithin", "Uint16Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内で一連の配列要素をコピーします。 {{jsxref("Array.prototype.copyWithin()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.entries", "Uint16Array.prototype.entries()")}}</dt>
+ <dd>配列内の各添字に対するキーと値の組を含む、新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.entries()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.every", "Uint16Array.prototype.every()")}}</dt>
+ <dd>配列内のすべての要素に対して、指定された関数によるテストに合格するかどうかをテストします。 {{jsxref("Array.prototype.every()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.fill", "Uint16Array.prototype.fill()")}}</dt>
+ <dd>配列の先頭から末尾までのすべての要素を固定値で設定します。 {{jsxref("Array.prototype.fill()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.filter", "Uint16Array.prototype.filter()")}}</dt>
+ <dd>この配列のすべての要素のうち、指定されたフィルタリング関数が与えられたフィルタリング関数が <code>true</code> を返すすべての要素で、新しい配列を生成します。 {{jsxref("Array.prototype.filter()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.find", "Uint16Array.prototype.find()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その値を返します。見つからなかった場合は <code>undefined</code> を返します。 {{jsxref("Array.prototype.find()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.findIndex", "Uint16Array.prototype.findIndex()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その添字を返します。見つからなかった場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.findIndex()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.forEach", "Uint16Array.prototype.forEach()")}}</dt>
+ <dd>配列内の各要素に対してある関数を呼び出します。 {{jsxref("Array.prototype.forEach()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.includes", "Uint16Array.prototype.includes()")}}</dt>
+ <dd>型付き配列にある要素が含まれているかどうかを判断し、それに応じて <code>true</code> または <code>false</code> を返します。 {{jsxref("Array.prototype.includes()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.indexOf", "Uint16Array.prototype.indexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最初の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.indexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.join", "Uint16Array.prototype.join()")}}</dt>
+ <dd>すべての配列要素を1つの文字列に結合します。 {{jsxref("Array.prototype.join()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.keys", "Uint16Array.prototype.keys()")}}</dt>
+ <dd>配列内のすべての添字に対するキーを含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.keys()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.lastIndexOf", "Uint16Array.prototype.lastIndexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最後の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.lastIndexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.map", "Uint16Array.prototype.map()")}}</dt>
+ <dd>この配列のすべての要素を引数として指定された関数を呼び出し、その結果で新しい配列を生成します。 {{jsxref("Array.prototype.map()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduce", "Uint16Array.prototype.reduce()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (左から右へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduce()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduceRight", "Uint16Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (右から左へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduceRight()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reverse", "Uint16Array.prototype.reverse()")}}</dt>
+ <dd>配列要素の順番を反転させます。 — 最初の要素は最後になり、最後の要素は最初になります。 {{jsxref("Array.prototype.reverse()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.set", "Uint16Array.prototype.set()")}}</dt>
+ <dd>指定された配列から複数の入力値を読み込み、型付き配列に格納します。</dd>
+ <dt>{{jsxref("TypedArray.slice", "Uint16Array.prototype.slice()")}}</dt>
+ <dd>配列の一区間を取り出して新しい配列を返します。 {{jsxref("Array.prototype.slice()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.some", "Uint16Array.prototype.some()")}}</dt>
+ <dd>この配列内で、指定されたテスト関数を満たす要素が1つでもあった場合に <code>true</code> を返します。 {{jsxref("Array.prototype.some()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.sort", "Uint16Array.prototype.sort()")}}</dt>
+ <dd>配列の要素をその場でソートし、その配列を返します。 {{jsxref("Array.prototype.sort()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.subarray", "Uint16Array.prototype.subarray()")}}</dt>
+ <dd>指定された開始位置と終了位置の間にある要素から新しい <code>Uint16Array</code> を返します。</dd>
+ <dt>{{jsxref("TypedArray.values", "Uint16Array.prototype.values()")}}</dt>
+ <dd>配列内の各添字に対する値を含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.values()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toLocaleString", "Uint16Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列と要素を表すローカライズされた文字列を返します。 {{jsxref("Array.prototype.toLocaleString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toString", "Uint16Array.prototype.toString()")}}</dt>
+ <dd>配列と要素を表す文字列を返します。 {{jsxref("Array.prototype.toString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.@@iterator", "Uint16Array.prototype[@@iterator]()")}}</dt>
+ <dd>配列内のそれぞれの添字の値を含む新しい<em>配列イテレーター</em>オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_Uint16Array" name="Different_ways_to_create_a_Uint16Array">Uint16Array を生成する様々な方法</h3>
+
+<pre class="brush: js notranslate">// 長さを指定
+var uint16 = new Uint16Array(2);
+uint16[0] = 42;
+console.log(uint16[0]); // 42
+console.log(uint16.length); // 2
+console.log(uint16.BYTES_PER_ELEMENT); // 2
+
+// 配列から
+var arr = new Uint16Array([21,31]);
+console.log(arr[1]); // 31
+
+// 他の型付き配列から
+var x = new Uint16Array([21, 31]);
+var y = new Uint16Array(x);
+console.log(y[0]); // 21
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(8);
+var z = new Uint16Array(buffer, 0, 4);
+
+// 反復可能オブジェクトから
+var iterable = function*(){ yield* [1,2,3]; }();
+var uint16 = new Uint16Array(iterable);
+// Uint16Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Uint16Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/uint16array/uint16array/index.html b/files/ja/web/javascript/reference/global_objects/uint16array/uint16array/index.html
new file mode 100644
index 0000000000..b4efb9ae42
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/uint16array/uint16array/index.html
@@ -0,0 +1,105 @@
+---
+title: Uint16Array() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Uint16Array/Uint16Array
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/Uint16Array/Uint16Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Uint16Array()</code></strong> は型付き配列のコンストラクターで、プラットフォームのバイト順による 16 ビット符号なし整数値の配列を生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Uint16Array(); // new in ES2017
+new Uint16Array(<var>length</var>);
+new Uint16Array(<var>typedArray</var>);
+new Uint16Array(<var>object</var>);
+new Uint16Array(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd><code><var>length</var></code> 引数付きで呼び出されると、メモリ内に内部的な配列バッファーを作成し、大きさは <code><var>length</var></code><em> を <code>BYTES_PER_ELEMENT</code></em> で乗じたバイト数になり、ゼロになることもあります。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code>typedArray</code> 引数付きで呼び出されると、これはあらゆる型付き配列型 (例えば <code>Int32Array</code>) にすることができますが、 <code><var>typedArray</var></code> を新しい型付き配列にコピーします。 <code><var>typedArray</var></code> の中のそれぞれの値は、新しい配列にコピーされる前にコンストラクターの対応する型に変換されます。新しい型付き配列の長さは <code><var>typedArray</var></code> 引数の長さと同じになります。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd><code><var>object</var></code> 引数付きで呼び出されると、あたかも <code><var>TypedArray</var>.from()</code> メソッドであるかのように新しい型付き配列が生成されます。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd><code><var>buffer</var></code> と、オプションで <code><var>byteOffset</var></code> と <code><var>length</var></code> 引数を指定して呼び出されると、指定された {{jsxref("ArrayBuffer")}} を表示する型付き配列ビューが生成されます。 <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数は、型付き配列ビューが表示するメモリ範囲を指定する。 両方を省略した場合は <code><var>buffer</var></code> の全てを表示し、 <code><var>length</var></code> のみを省略した場合は <code><var>buffer</var></code> の残りを表示します。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><strong><code>Uint16Array()</code></strong> は型付き配列のコンストラクターで、プラットフォームのバイト順による 16 ビット符号なし整数値の配列を生成します。バイト順の制御が必要な場合は、代わりに {{jsxref("DataView")}} を使用してください。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<p>ECMAScript 2015 から、 <code>Uint16Array</code> コンストラクターは構築に {{jsxref("Operators/new", "new")}} 演算子が必要になりました。 <code>Uint16Array</code> コンストラクターを <code>new</code> なしで関数として呼び出すと、 {{jsxref("TypeError")}} が発生するようになりました。</p>
+
+<pre class="brush: js example-bad notranslate">var dv = Uint16Array([1, 2, 3]);
+// TypeError: calling a builtin Uint16Array constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good notranslate">var dv = new Uint16Array([1, 2, 3]);</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_Uint16Array" name="Different_ways_to_create_a_Uint16Array">様々な方法による Uint16Array の生成</h3>
+
+<pre class="brush: js notranslate">// From a length
+var uint16 = new Uint16Array(2);
+uint16[0] = 42;
+console.log(uint16[0]); // 42
+console.log(uint16.length); // 2
+console.log(uint16.BYTES_PER_ELEMENT); // 2
+
+// From an array
+var arr = new Uint16Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Uint16Array([21, 31]);
+var y = new Uint16Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(8);
+var z = new Uint16Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var uint16 = new Uint16Array(iterable);
+// Uint16Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typedarray-constructors', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Uint16Array.Uint16Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/uint32array/index.html b/files/ja/web/javascript/reference/global_objects/uint32array/index.html
new file mode 100644
index 0000000000..a2b568caff
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/uint32array/index.html
@@ -0,0 +1,167 @@
+---
+title: Uint32Array
+slug: Web/JavaScript/Reference/Global_Objects/Uint32Array
+tags:
+ - Constructor
+ - JavaScript
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/Uint32Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Uint32Array</code></strong> は型付き配列であり、プラットフォームのバイト順による 32 ビット符号なし整数値の配列を表します。バイト順の制御が必要な場合は、代わりに {{jsxref("DataView")}} を使用してください。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Uint32Array/Uint32Array", "Uint32Array()")}}</dt>
+ <dd>新しい <code>Uint32Array</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint32Array.BYTES_PER_ELEMENT")}}</dt>
+ <dd>要素の大きさの数値を返します。 <code>Uint32Array</code> の場合は <code>4</code> になります。</dd>
+ <dt>{{jsxref("TypedArray.name", "Uint32Array.name")}}</dt>
+ <dd>コンストラクターの名前を文字列値で返します。 <code>Uint32Array</code> 型の場合は "<code>Uint32Array</code>" です。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from", "Uint32Array.from()")}}</dt>
+ <dd>新しい <code>Uint32Array</code> を、配列風オブジェクトや反復可能オブジェクトから生成します。 {{jsxref("Array.from()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.of", "Uint32Array.of()")}}</dt>
+ <dd>新しい <code>Uint32Array</code> を、可変長引数で生成します。 {{jsxref("Array.of()")}} も参照してください。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.prototype.buffer", "Uint32Array.prototype.buffer")}}</dt>
+ <dd><code>Uint32Array</code> オブジェクトによって参照される {{jsxref("ArrayBuffer")}} を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength", "Uint32Array.prototype.byteLength")}}</dt>
+ <dd><code>Uint32Array</code> の長さを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset", "Uint32Array.prototype.byteOffset")}}</dt>
+ <dd><code>Uint32Array</code> のオフセットを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length", "Uint32Array.prototype.length")}}</dt>
+ <dd><code>Uint32Array</code> オブジェクト内に保持されている要素の数を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.copyWithin", "Uint32Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内で一連の配列要素をコピーします。 {{jsxref("Array.prototype.copyWithin()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.entries", "Uint32Array.prototype.entries()")}}</dt>
+ <dd>配列内の各添字に対するキーと値の組を含む、新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.entries()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.every", "Uint32Array.prototype.every()")}}</dt>
+ <dd>配列内のすべての要素に対して、指定された関数によるテストに合格するかどうかをテストします。 {{jsxref("Array.prototype.every()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.fill", "Uint32Array.prototype.fill()")}}</dt>
+ <dd>配列の先頭から末尾までのすべての要素を固定値で設定します。 {{jsxref("Array.prototype.fill()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.filter", "Uint32Array.prototype.filter()")}}</dt>
+ <dd>この配列のすべての要素のうち、指定されたフィルタリング関数が与えられたフィルタリング関数が <code>true</code> を返すすべての要素で、新しい配列を生成します。 {{jsxref("Array.prototype.filter()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.find", "Uint32Array.prototype.find()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その値を返します。見つからなかった場合は <code>undefined</code> を返します。 {{jsxref("Array.prototype.find()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.findIndex", "Uint32Array.prototype.findIndex()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その添字を返します。見つからなかった場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.findIndex()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.forEach", "Uint32Array.prototype.forEach()")}}</dt>
+ <dd>配列内の各要素に対してある関数を呼び出します。 {{jsxref("Array.prototype.forEach()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.includes", "Uint32Array.prototype.includes()")}}</dt>
+ <dd>型付き配列にある要素が含まれているかどうかを判断し、それに応じて <code>true</code> または <code>false</code> を返します。 {{jsxref("Array.prototype.includes()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.indexOf", "Uint32Array.prototype.indexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最初の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.indexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.join", "Uint32Array.prototype.join()")}}</dt>
+ <dd>すべての配列要素を1つの文字列に結合します。 {{jsxref("Array.prototype.join()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.keys", "Uint32Array.prototype.keys()")}}</dt>
+ <dd>配列内のすべての添字に対するキーを含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.keys()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.lastIndexOf", "Uint32Array.prototype.lastIndexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最後の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.lastIndexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.map", "Uint32Array.prototype.map()")}}</dt>
+ <dd>この配列のすべての要素を引数として指定された関数を呼び出し、その結果で新しい配列を生成します。 {{jsxref("Array.prototype.map()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduce", "Uint32Array.prototype.reduce()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (左から右へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduce()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduceRight", "Uint32Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (右から左へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduceRight()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reverse", "Uint32Array.prototype.reverse()")}}</dt>
+ <dd>配列要素の順番を反転させます。 — 最初の要素は最後になり、最後の要素は最初になります。 {{jsxref("Array.prototype.reverse()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.set", "Uint32Array.prototype.set()")}}</dt>
+ <dd>指定された配列から複数の入力値を読み込み、型付き配列に格納します。</dd>
+ <dt>{{jsxref("TypedArray.slice", "Uint32Array.prototype.slice()")}}</dt>
+ <dd>配列の一区間を取り出して新しい配列を返します。 {{jsxref("Array.prototype.slice()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.some", "Uint32Array.prototype.some()")}}</dt>
+ <dd>この配列内で、指定されたテスト関数を満たす要素が1つでもあった場合に <code>true</code> を返します。 {{jsxref("Array.prototype.some()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.sort", "Uint32Array.prototype.sort()")}}</dt>
+ <dd>配列の要素をその場でソートし、その配列を返します。 {{jsxref("Array.prototype.sort()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.subarray", "Uint32Array.prototype.subarray()")}}</dt>
+ <dd>指定された開始位置と終了位置の間にある要素から新しい <code>Uint32Array</code> を返します。</dd>
+ <dt>{{jsxref("TypedArray.values", "Uint32Array.prototype.values()")}}</dt>
+ <dd>配列内の各添字に対する値を含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.values()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toLocaleString", "Uint32Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列と要素を表すローカライズされた文字列を返します。 {{jsxref("Array.prototype.toLocaleString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toString", "Uint32Array.prototype.toString()")}}</dt>
+ <dd>配列と要素を表す文字列を返します。 {{jsxref("Array.prototype.toString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.@@iterator", "Uint32Array.prototype[@@iterator]()")}}</dt>
+ <dd>配列内のそれぞれの添字の値を含む新しい<em>配列イテレーター</em>オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_Uint32Array" name="Different_ways_to_create_a_Uint32Array">Uint32Array を生成する様々な方法</h3>
+
+<pre class="brush: js notranslate">// 長さを指定
+var int16 = new Uint32Array(2);
+int16[0] = 42;
+console.log(int16[0]); // 42
+console.log(int16.length); // 2
+console.log(int16.BYTES_PER_ELEMENT); // 2
+
+// 配列から
+var arr = new Uint32Array([21,31]);
+console.log(arr[1]); // 31
+
+// 他の型付き配列から
+var x = new Uint32Array([21, 31]);
+var y = new Uint32Array(x);
+console.log(y[0]); // 21
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(16);
+var z = new Uint32Array(buffer, 0, 4);
+
+// 反復可能オブジェクトから
+var iterable = function*(){ yield* [1,2,3]; }();
+var int32 = new Uint32Array(iterable);
+// Uint32Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Uint32Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/uint32array/uint32array/index.html b/files/ja/web/javascript/reference/global_objects/uint32array/uint32array/index.html
new file mode 100644
index 0000000000..8ccd48a581
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/uint32array/uint32array/index.html
@@ -0,0 +1,103 @@
+---
+title: Uint32Array() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Uint32Array/Uint32Array
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/Uint32Array/Uint32Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Uint32Array()</code></strong> は型付き配列のコンストラクターで、プラットフォームのバイト順による 32 ビット符号なし整数値の配列を生成します。バイト順の制御が必要な場合は、代わりに {{jsxref("DataView")}} を使用してください。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Uint32Array(); // new in ES2017
+new Uint32Array(<var>length</var>);
+new Uint32Array(<var>typedArray</var>);
+new Uint32Array(<var>object</var>);
+new Uint32Array(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd><code><var>length</var></code> 引数付きで呼び出されると、メモリ内に内部的な配列バッファーを作成し、大きさは <code><var>length</var></code><em> を <code>BYTES_PER_ELEMENT</code></em> で乗じたバイト数になり、ゼロになることもあります。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code>typedArray</code> 引数付きで呼び出されると、これはあらゆる型付き配列型 (例えば <code>Int32Array</code>) にすることができますが、 <code><var>typedArray</var></code> を新しい型付き配列にコピーします。 <code><var>typedArray</var></code> の中のそれぞれの値は、新しい配列にコピーされる前にコンストラクターの対応する型に変換されます。新しい型付き配列の長さは <code><var>typedArray</var></code> 引数の長さと同じになります。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd><code><var>object</var></code> 引数付きで呼び出されると、あたかも <code><var>TypedArray</var>.from()</code> メソッドであるかのように新しい型付き配列が生成されます。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd><code><var>buffer</var></code> と、オプションで <code><var>byteOffset</var></code> と <code><var>length</var></code> 引数を指定して呼び出されると、指定された {{jsxref("ArrayBuffer")}} を表示する型付き配列ビューが生成されます。 <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数は、型付き配列ビューが表示するメモリ範囲を指定する。 両方を省略した場合は <code><var>buffer</var></code> の全てを表示し、 <code><var>length</var></code> のみを省略した場合は <code><var>buffer</var></code> の残りを表示します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_Uint32Array" name="Different_ways_to_create_a_Uint32Array">様々な方法による Uint32Array の生成</h3>
+
+<pre class="brush: js notranslate">// 長さを指定
+var uint32 = new Uint32Array(2);
+uint32[0] = 42;
+console.log(uint32[0]); // 42
+console.log(uint32.length); // 2
+console.log(uint32.BYTES_PER_ELEMENT); // 4
+
+// 配列から
+var arr = new Uint32Array([21,31]);
+console.log(arr[1]); // 31
+
+// 他の型付き配列から
+var x = new Uint32Array([21, 31]);
+var y = new Uint32Array(x);
+console.log(y[0]); // 21
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(16);
+var z = new Uint32Array(buffer, 0, 4);
+
+// 反復可能オブジェクトから
+var iterable = function*(){ yield* [1,2,3]; }();
+var uint32 = new Uint32Array(iterable);
+// Uint32Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typedarray-constructors', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Uint32Array.Uint32Array")}}</p>
+
+<h3 id="Compatibility_notes" name="Compatibility_notes">互換性メモ</h3>
+
+<p>ECMAScript 2015 から、 <code>Uint32Array</code> コンストラクターは構築に {{jsxref("Operators/new", "new")}} 演算子が必要になりました。 <code>Uint32Array</code> コンストラクターを <code>new</code> なしで関数として呼び出すと、 {{jsxref("TypeError")}} が発生するようになりました。</p>
+
+<pre class="brush: js example-bad notranslate">var dv = Uint32Array([1, 2, 3]);
+// TypeError: calling a builtin Uint32Array constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good notranslate">var dv = new Uint32Array([1, 2, 3]);</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/uint8array/index.html b/files/ja/web/javascript/reference/global_objects/uint8array/index.html
new file mode 100644
index 0000000000..8c4da533d2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/uint8array/index.html
@@ -0,0 +1,168 @@
+---
+title: Uint8Array
+slug: Web/JavaScript/Reference/Global_Objects/Uint8Array
+tags:
+ - Class
+ - JavaScript
+ - TypedArray
+ - TypedArrays
+ - Uint8Array
+translation_of: Web/JavaScript/Reference/Global_Objects/Uint8Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Uint8Array</code></strong> は型付き配列であり、 8 ビット符号なし整数値の配列を表します。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Uint8Array/Uint8Array", "Uint8Array()")}}</dt>
+ <dd>新しい <code>Uint8Array</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint8Array.BYTES_PER_ELEMENT")}}</dt>
+ <dd>要素の大きさの数値を返します。 <code>Uint8Array</code> の場合は <code>1</code> になります。</dd>
+ <dt>{{jsxref("TypedArray.name", "Uint8Array.name")}}</dt>
+ <dd>コンストラクターの名前を文字列値で返します。 <code>Uint8Array</code> 型の場合は "<code>Uint8Array</code>" です。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from", "Uint8Array.from()")}}</dt>
+ <dd>新しい <code>Uint8Array</code> を、配列風オブジェクトや反復可能オブジェクトから生成します。 {{jsxref("Array.from()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.of", "Uint8Array.of()")}}</dt>
+ <dd>新しい <code>Uint8Array</code> を、可変長引数で生成します。 {{jsxref("Array.of()")}} も参照してください。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.prototype.buffer", "Uint8Array.prototype.buffer")}}</dt>
+ <dd><code>Uint8Array</code> オブジェクトによって参照される {{jsxref("ArrayBuffer")}} を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength", "Uint8Array.prototype.byteLength")}}</dt>
+ <dd><code>Uint8Array</code> の長さをバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset", "Uint8Array.prototype.byteOffset")}}</dt>
+ <dd><code>Uint8Array</code> のオフセットを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length", "Uint8Array.prototype.length")}}</dt>
+ <dd><code>Uint8Array</code> オブジェクト内に保持されている要素の数を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.copyWithin", "Uint8Array.prototype.copyWithin()")}}</dt>
+ <dd>配列内で一連の配列要素をコピーします。 {{jsxref("Array.prototype.copyWithin()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.entries", "Uint8Array.prototype.entries()")}}</dt>
+ <dd>配列内の各添字に対するキーと値の組を含む、新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.entries()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.every", "Uint8Array.prototype.every()")}}</dt>
+ <dd>配列内のすべての要素に対して、指定された関数によるテストに合格するかどうかをテストします。 {{jsxref("Array.prototype.every()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.fill", "Uint8Array.prototype.fill()")}}</dt>
+ <dd>配列の先頭から末尾までのすべての要素を固定値で設定します。 {{jsxref("Array.prototype.fill()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.filter", "Uint8Array.prototype.filter()")}}</dt>
+ <dd>この配列のすべての要素のうち、指定されたフィルタリング関数が与えられたフィルタリング関数が <code>true</code> を返すすべての要素で、新しい配列を生成します。 {{jsxref("Array.prototype.filter()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.find", "Uint8Array.prototype.find()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その値を返します。見つからなかった場合は <code>undefined</code> を返します。 {{jsxref("Array.prototype.find()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.findIndex", "Uint8Array.prototype.findIndex()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その添字を返します。見つからなかった場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.findIndex()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.forEach", "Uint8Array.prototype.forEach()")}}</dt>
+ <dd>配列内の各要素に対してある関数を呼び出します。 {{jsxref("Array.prototype.forEach()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.includes", "Uint8Array.prototype.includes()")}}</dt>
+ <dd>型付き配列にある要素が含まれているかどうかを判断し、それに応じて <code>true</code> または <code>false</code> を返します。 {{jsxref("Array.prototype.includes()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.indexOf", "Uint8Array.prototype.indexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最初の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.indexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.join", "Uint8Array.prototype.join()")}}</dt>
+ <dd>すべての配列要素を1つの文字列に結合します。 {{jsxref("Array.prototype.join()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.keys", "Uint8Array.prototype.keys()")}}</dt>
+ <dd>配列内のすべての添字に対するキーを含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.keys()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.lastIndexOf", "Uint8Array.prototype.lastIndexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最後の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.lastIndexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.map", "Uint8Array.prototype.map()")}}</dt>
+ <dd>この配列のすべての要素を引数として指定された関数を呼び出し、その結果で新しい配列を生成します。 {{jsxref("Array.prototype.map()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduce", "Uint8Array.prototype.reduce()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (左から右へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduce()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduceRight", "Uint8Array.prototype.reduceRight()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (右から左へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduceRight()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reverse", "Uint8Array.prototype.reverse()")}}</dt>
+ <dd>配列要素の順番を反転させます。 — 最初の要素は最後になり、最後の要素は最初になります。 {{jsxref("Array.prototype.reverse()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.set", "Uint8Array.prototype.set()")}}</dt>
+ <dd>指定された配列から複数の入力値を読み込み、型付き配列に格納します。</dd>
+ <dt>{{jsxref("TypedArray.slice", "Uint8Array.prototype.slice()")}}</dt>
+ <dd>配列の一区間を取り出して新しい配列を返します。 {{jsxref("Array.prototype.slice()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.some", "Uint8Array.prototype.some()")}}</dt>
+ <dd>この配列内で、指定されたテスト関数を満たす要素が1つでもあった場合に <code>true</code> を返します。 {{jsxref("Array.prototype.some()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.sort", "Uint8Array.prototype.sort()")}}</dt>
+ <dd>配列の要素をその場でソートし、その配列を返します。 {{jsxref("Array.prototype.sort()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.subarray", "Uint8Array.prototype.subarray()")}}</dt>
+ <dd>指定された開始位置と終了位置の間にある要素から新しい <code>Uint8Array</code> を返します。</dd>
+ <dt>{{jsxref("TypedArray.values", "Uint8Array.prototype.values()")}}</dt>
+ <dd>配列内の各添字に対する値を含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.values()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toLocaleString", "Uint8Array.prototype.toLocaleString()")}}</dt>
+ <dd>配列と要素を表すローカライズされた文字列を返します。 {{jsxref("Array.prototype.toLocaleString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toString", "Uint8Array.prototype.toString()")}}</dt>
+ <dd>配列と要素を表す文字列を返します。 {{jsxref("Array.prototype.toString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.@@iterator", "Uint8Array.prototype[@@iterator]()")}}</dt>
+ <dd>配列内のそれぞれの添字の値を含む新しい<em>配列イテレーター</em>オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_Uint8Array" name="Different_ways_to_create_a_Uint8Array">Uint8Array を生成する様々な方法</h3>
+
+<pre class="brush: js notranslate">// 長さを指定
+var int8 = new Uint8Array(2);
+int8[0] = 42;
+console.log(int8[0]); // 42
+console.log(int8.length); // 2
+console.log(int8.BYTES_PER_ELEMENT); // 1
+
+// 配列から
+var arr = new Uint8Array([21,31]);
+console.log(arr[1]); // 31
+
+// 他の型付き配列から
+var x = new Uint8Array([21, 31]);
+var y = new Uint8Array(x);
+console.log(y[0]); // 21
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(8);
+var z = new Uint8Array(buffer, 1, 4);
+
+// 反復可能オブジェクトから
+var iterable = function*(){ yield* [1,2,3]; }();
+var uint8 = new Uint8Array(iterable);
+// Uint8Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Uint8Array")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/uint8array/uint8array/index.html b/files/ja/web/javascript/reference/global_objects/uint8array/uint8array/index.html
new file mode 100644
index 0000000000..fccdf9aaa3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/uint8array/uint8array/index.html
@@ -0,0 +1,103 @@
+---
+title: Uint8Array() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Uint8Array/Uint8Array
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypedArray
+translation_of: Web/JavaScript/Reference/Global_Objects/Uint8Array/Uint8Array
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Uint8Array()</code></strong> は型付き配列のコンストラクターで、 8 ビット符号なし整数値の配列を生成します。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Uint8Array(); // new in ES2017
+new Uint8Array(<var>length</var>);
+new Uint8Array(<var>typedArray</var>);
+new Uint8Array(<var>object</var>);
+new Uint8Array(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd><code><var>length</var></code> 引数付きで呼び出されると、メモリ内に内部的な配列バッファーを作成し、大きさは <code><var>length</var></code><em> を <code>BYTES_PER_ELEMENT</code></em> で乗じたバイト数になり、ゼロになることもあります。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code>typedArray</code> 引数付きで呼び出されると、これはあらゆる型付き配列型 (例えば <code>Int32Array</code>) にすることができますが、 <code><var>typedArray</var></code> を新しい型付き配列にコピーします。 <code><var>typedArray</var></code> の中のそれぞれの値は、新しい配列にコピーされる前にコンストラクターの対応する型に変換されます。新しい型付き配列の長さは <code><var>typedArray</var></code> 引数の長さと同じになります。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd><code><var>object</var></code> 引数付きで呼び出されると、あたかも <code><var>TypedArray</var>.from()</code> メソッドであるかのように新しい型付き配列が生成されます。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd><code><var>buffer</var></code> と、オプションで <code><var>byteOffset</var></code> と <code><var>length</var></code> 引数を指定して呼び出されると、指定された {{jsxref("ArrayBuffer")}} を表示する型付き配列ビューが生成されます。 <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数は、型付き配列ビューが表示するメモリ範囲を指定する。 両方を省略した場合は <code><var>buffer</var></code> の全てを表示し、 <code><var>length</var></code> のみを省略した場合は <code><var>buffer</var></code> の残りを表示します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_Uint8Array" name="Different_ways_to_create_a_Uint8Array">様々な方法による Uint8Array の生成</h3>
+
+<pre class="brush: js notranslate">// 長さを指定
+var uint8 = new Uint8Array(2);
+uint8[0] = 42;
+console.log(uint8[0]); // 42
+console.log(uint8.length); // 2
+console.log(uint8.BYTES_PER_ELEMENT); // 1
+
+// 配列から
+var arr = new Uint8Array([21,31]);
+console.log(arr[1]); // 31
+
+// 他の型付き配列から
+var x = new Uint8Array([21, 31]);
+var y = new Uint8Array(x);
+console.log(y[0]); // 21
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(8);
+var z = new Uint8Array(buffer, 1, 4);
+
+// 反復可能オブジェクトから
+var iterable = function*(){ yield* [1,2,3]; }();
+var uint8 = new Uint8Array(iterable);
+// Uint8Array[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typedarray-constructors', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Uint8Array.Uint8Array")}}</p>
+
+<h3 id="Compatibility_notes" name="Compatibility_notes">互換性メモ</h3>
+
+<p>ECMAScript 2015 から、 <code>Uint8Array</code> コンストラクターは構築に {{jsxref("Operators/new", "new")}} 演算子が必要になりました。 <code>Uint8Array</code> コンストラクターを <code>new</code> なしで関数として呼び出すと、 {{jsxref("TypeError")}} が発生するようになりました。</p>
+
+<pre class="brush: js example-bad notranslate">var dv = Uint8Array([1, 2, 3]);
+// TypeError: calling a builtin Uint8Array constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good notranslate">var dv = new Uint8Array([1, 2, 3]);</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/uint8clampedarray/index.html b/files/ja/web/javascript/reference/global_objects/uint8clampedarray/index.html
new file mode 100644
index 0000000000..ec2d72b7bb
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/uint8clampedarray/index.html
@@ -0,0 +1,169 @@
+---
+title: Uint8ClampedArray
+slug: Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray
+tags:
+ - Class
+ - JavaScript
+ - TypedArray
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Uint8ClampedArray</code></strong> は型付き配列であり、 0-255 に制約される 8 ビット符号なし整数値の配列を生成します。指定された値が [0,255] の範囲を超えた場合、 0 または 255 が代わりに設定されます。整数以外を指定しようとすると、最も近い整数が設定されます。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/Uint8ClampedArray/Uint8ClampedArray", "Uint8ClampedArray()")}}</dt>
+ <dd>新しい <code>Uint8ClampedArray</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint8ClampedArray.BYTES_PER_ELEMENT")}}</dt>
+ <dd>要素の大きさの数値を返します。 <code>Uint8ClampedArray</code> の場合は <code>1</code> になります。</dd>
+ <dt>{{jsxref("TypedArray.name", "Uint8ClampedArray.name")}}</dt>
+ <dd>コンストラクターの名前を文字列値で返します。 <code>Uint8ClampedArray</code> 型の場合は "<code>Uint8ClampedArray</code>" です。</dd>
+</dl>
+
+<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.from", "Uint8ClampedArray.from()")}}</dt>
+ <dd>新しい <code>Uint8ClampedArray</code> を、配列風オブジェクトや反復可能オブジェクトから生成します。 {{jsxref("Array.from()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.of", "Uint8ClampedArray.of()")}}</dt>
+ <dd>新しい <code>Uint8ClampedArray</code> を、可変長引数から生成します。 {{jsxref("Array.of()")}} も参照してください。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.prototype.buffer", "Uint8ClampedArray.prototype.buffer")}}</dt>
+ <dd><code>Uint8ClampedArray</code> オブジェクトによって参照される {{jsxref("ArrayBuffer")}} を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteLength", "Uint8ClampedArray.prototype.byteLength")}}</dt>
+ <dd><code>Uint8ClampedArray</code> の長さを {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.byteOffset", "Uint8ClampedArray.prototype.byteOffset")}}</dt>
+ <dd><code>Uint8ClampedArray</code> のオフセットを、 {{jsxref("ArrayBuffer")}} の先頭からのバイト単位で返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+ <dt>{{jsxref("TypedArray.prototype.length", "Uint8ClampedArray.prototype.length")}}</dt>
+ <dd><code>Uint8ClampedArray</code> オブジェクト内に保持されている要素の数を返します。構築時に設定され、<strong>読取専用</strong>です。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("TypedArray.copyWithin", "Uint8ClampedArray.prototype.copyWithin()")}}</dt>
+ <dd>配列内で一連の配列要素をコピーします。 {{jsxref("Array.prototype.copyWithin()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.entries", "Uint8ClampedArray.prototype.entries()")}}</dt>
+ <dd>配列内の各添字に対するキーと値の組を含む、新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.entries()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.every", "Uint8ClampedArray.prototype.every()")}}</dt>
+ <dd>配列内のすべての要素に対して、指定された関数によるテストに合格するかどうかをテストします。 {{jsxref("Array.prototype.every()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.fill", "Uint8ClampedArray.prototype.fill()")}}</dt>
+ <dd>配列の先頭から末尾までのすべての要素を固定値で設定します。 {{jsxref("Array.prototype.fill()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.filter", "Uint8ClampedArray.prototype.filter()")}}</dt>
+ <dd>この配列のすべての要素のうち、指定されたフィルタリング関数が与えられたフィルタリング関数が <code>true</code> を返すすべての要素で、新しい配列を生成します。 {{jsxref("Array.prototype.filter()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.find", "Uint8ClampedArray.prototype.find()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その値を返します。見つからなかった場合は <code>undefined</code> を返します。 {{jsxref("Array.prototype.find()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.findIndex", "Uint8ClampedArray.prototype.findIndex()")}}</dt>
+ <dd>指定されたテスト関数を満足する要素が見つかった場合、その添字を返します。見つからなかった場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.findIndex()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.forEach", "Uint8ClampedArray.prototype.forEach()")}}</dt>
+ <dd>配列内の各要素に対してある関数を呼び出します。 {{jsxref("Array.prototype.forEach()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.includes", "Uint8ClampedArray.prototype.includes()")}}</dt>
+ <dd>型付き配列にある要素が含まれているかどうかを判断し、それに応じて <code>true</code> または <code>false</code> を返します。 {{jsxref("Array.prototype.includes()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.indexOf", "Uint8ClampedArray.prototype.indexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最初の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.indexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.join", "Uint8ClampedArray.prototype.join()")}}</dt>
+ <dd>すべての配列要素を1つの文字列に結合します。 {{jsxref("Array.prototype.join()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.keys", "Uint8ClampedArray.prototype.keys()")}}</dt>
+ <dd>配列内のすべての添字に対するキーを含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.keys()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.lastIndexOf", "Uint8ClampedArray.prototype.lastIndexOf()")}}</dt>
+ <dd>配列内の要素のうち、指定された値と等しい最後の要素の添字を返します。見つからない場合は <code>-1</code> を返します。 {{jsxref("Array.prototype.lastIndexOf()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.map", "Uint8ClampedArray.prototype.map()")}}</dt>
+ <dd>この配列のすべての要素を引数として指定された関数を呼び出し、その結果で新しい配列を生成します。 {{jsxref("Array.prototype.map()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduce", "Uint8ClampedArray.prototype.reduce()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (左から右へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduce()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reduceRight", "Uint8ClampedArray.prototype.reduceRight()")}}</dt>
+ <dd>アキュームレーターと配列の各要素に対して (右から左へ) 関数を適用し、単一の値に縮小します。 {{jsxref("Array.prototype.reduceRight()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.reverse", "Uint8ClampedArray.prototype.reverse()")}}</dt>
+ <dd>配列要素の順番を反転させます。 — 最初の要素は最後になり、最後の要素は最初になります。 {{jsxref("Array.prototype.reverse()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.set", "Uint8ClampedArray.prototype.set()")}}</dt>
+ <dd>指定された配列から複数の入力値を読み込み、型付き配列に格納します。</dd>
+ <dt>{{jsxref("TypedArray.slice", "Uint8ClampedArray.prototype.slice()")}}</dt>
+ <dd>配列の一区間を取り出して新しい配列を返します。 {{jsxref("Array.prototype.slice()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.some", "Uint8ClampedArray.prototype.some()")}}</dt>
+ <dd>この配列内で、指定されたテスト関数を満たす要素が1つでもあった場合に <code>true</code> を返します。 {{jsxref("Array.prototype.some()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.sort", "Uint8ClampedArray.prototype.sort()")}}</dt>
+ <dd>配列の要素をその場でソートし、その配列を返します。 {{jsxref("Array.prototype.sort()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.subarray", "Uint8ClampedArray.prototype.subarray()")}}</dt>
+ <dd>指定された開始位置と終了位置の間にある要素から新しい <code>Uint8ClampedArray</code> を返します。</dd>
+ <dt>{{jsxref("TypedArray.values", "Uint8ClampedArray.prototype.values()")}}</dt>
+ <dd>配列内の各添字に対する値を含む新しい<em>配列イテレーター</em>を返します。 {{jsxref("Array.prototype.values()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toLocaleString", "Uint8ClampedArray.prototype.toLocaleString()")}}</dt>
+ <dd>配列と要素を表すローカライズされた文字列を返します。 {{jsxref("Array.prototype.toLocaleString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.toString", "Uint8ClampedArray.prototype.toString()")}}</dt>
+ <dd>配列と要素を表す文字列を返します。 {{jsxref("Array.prototype.toString()")}} も参照してください。</dd>
+ <dt>{{jsxref("TypedArray.@@iterator", "Uint8ClampedArray.prototype[@@iterator]()")}}</dt>
+ <dd>配列内のそれぞれの添字の値を含む新しい<em>配列イテレーター</em>オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_Uint8ClampedArray" name="Different_ways_to_create_a_Uint8ClampedArray">Uint8ClampedArray を生成する様々な方法</h3>
+
+<pre class="brush: js notranslate">// 長さを指定
+var uintc8 = new Uint8ClampedArray(2);
+uintc8[0] = 42;
+uintc8[1] = 1337;
+console.log(uintc8[0]); // 42
+console.log(uintc8[1]); // 255 (clamped)
+console.log(uintc8.length); // 2
+console.log(uintc8.BYTES_PER_ELEMENT); // 1
+
+// 配列から
+var arr = new Uint8ClampedArray([21,31]);
+console.log(arr[1]); // 31
+
+// 他の型付き配列から
+var x = new Uint8ClampedArray([21, 31]);
+var y = new Uint8ClampedArray(x);
+console.log(y[0]); // 21
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(8);
+var z = new Uint8ClampedArray(buffer, 1, 4);
+
+// 反復可能オブジェクトから
+var iterable = function*(){ yield* [1,2,3]; }();
+var uintc8 = new Uint8ClampedArray(iterable);
+// Uint8ClampedArray[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Uint8ClampedArray")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/uint8clampedarray/uint8clampedarray/index.html b/files/ja/web/javascript/reference/global_objects/uint8clampedarray/uint8clampedarray/index.html
new file mode 100644
index 0000000000..794d248c32
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/uint8clampedarray/uint8clampedarray/index.html
@@ -0,0 +1,105 @@
+---
+title: Uint8ClampedArray() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray/Uint8ClampedArray
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - TypedArray
+translation_of: Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray/Uint8ClampedArray
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>Uint8ClampedArray()</code></strong> は型付き配列のコンストラクターで、 0-255 に制約される 8 ビット符号なし整数値の配列を生成します。指定された値が [0,255] の範囲を超えた場合、 0 または 255 が代わりに設定されます。整数以外を指定しようとすると、最も近い整数が設定されます。中身は <code>0</code> で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new Uint8ClampedArray(); // new in ES2017
+new Uint8ClampedArray(<var>length</var>);
+new Uint8ClampedArray(<var>typedArray</var>);
+new Uint8ClampedArray(<var>object</var>);
+new Uint8ClampedArray(<var>buffer</var> [, <var>byteOffset</var> [, <var>length</var>]]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd><code><var>length</var></code> 引数付きで呼び出されると、メモリ内に内部的な配列バッファーを作成し、大きさは <code><var>length</var></code><em> を <code>BYTES_PER_ELEMENT</code></em> で乗じたバイト数になり、ゼロになることもあります。</dd>
+ <dt><code><var>typedArray</var></code></dt>
+ <dd><code>typedArray</code> 引数付きで呼び出されると、これはあらゆる型付き配列型 (例えば <code>Int32Array</code>) にすることができますが、 <code><var>typedArray</var></code> を新しい型付き配列にコピーします。 <code><var>typedArray</var></code> の中のそれぞれの値は、新しい配列にコピーされる前にコンストラクターの対応する型に変換されます。新しい型付き配列の長さは <code><var>typedArray</var></code> 引数の長さと同じになります。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd><code><var>object</var></code> 引数付きで呼び出されると、あたかも <code><var>TypedArray</var>.from()</code> メソッドであるかのように新しい型付き配列が生成されます。</dd>
+ <dt><code><var>buffer</var></code>, <code><var>byteOffset</var></code>, <code><var>length</var></code></dt>
+ <dd><code><var>buffer</var></code> と、オプションで <code><var>byteOffset</var></code> と <code><var>length</var></code> 引数を指定して呼び出されると、指定された {{jsxref("ArrayBuffer")}} を表示する型付き配列ビューが生成されます。 <code><var>byteOffset</var></code> および <code><var>length</var></code> 引数は、型付き配列ビューが表示するメモリ範囲を指定する。 両方を省略した場合は <code><var>buffer</var></code> の全てを表示し、 <code><var>length</var></code> のみを省略した場合は <code><var>buffer</var></code> の残りを表示します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Different_ways_to_create_a_Uint8ClampedArray" name="Different_ways_to_create_a_Uint8ClampedArray">様々な方法による Uint8ClampedArray の生成</h3>
+
+<pre class="brush: js notranslate">// 長さを指定
+var uintc8 = new Uint8ClampedArray(2);
+uintc8[0] = 42;
+uintc8[1] = 1337;
+console.log(uintc8[0]); // 42
+console.log(uintc8[1]); // 255 (clamped)
+console.log(uintc8.length); // 2
+console.log(uintc8.BYTES_PER_ELEMENT); // 1
+
+// 配列から
+var arr = new Uint8ClampedArray([21,31]);
+console.log(arr[1]); // 31
+
+// 他の型付き配列から
+var x = new Uint8ClampedArray([21, 31]);
+var y = new Uint8ClampedArray(x);
+console.log(y[0]); // 21
+
+// ArrayBuffer から
+var buffer = new ArrayBuffer(8);
+var z = new Uint8ClampedArray(buffer, 1, 4);
+
+// 反復可能オブジェクトから
+var iterable = function*(){ yield* [1,2,3]; }();
+var uintc8 = new Uint8ClampedArray(iterable);
+// Uint8ClampedArray[1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typedarray-constructors', 'TypedArray constructors')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.Uint8ClampedArray.Uint8ClampedArray")}}</p>
+
+<h3 id="Compatibility_notes" name="Compatibility_notes">互換性メモ</h3>
+
+<p>ECMAScript 2015 から、 <code>Uint8ClampedArray</code> コンストラクターは構築に {{jsxref("Operators/new", "new")}} 演算子が必要になりました。 <code>Uint8ClampedArray</code> コンストラクターを <code>new</code> なしで関数として呼び出すと、 {{jsxref("TypeError")}} が発生するようになりました。</p>
+
+<pre class="brush: js example-bad notranslate">var dv = Uint8ClampedArray([1, 2, 3]);
+// TypeError: calling a builtin Uint8ClampedArray constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good notranslate">var dv = new Uint8ClampedArray([1, 2, 3]);</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript 型付き配列</a></li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li>{{jsxref("DataView")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/undefined/index.html b/files/ja/web/javascript/reference/global_objects/undefined/index.html
new file mode 100644
index 0000000000..6e3c6e1bb1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/undefined/index.html
@@ -0,0 +1,143 @@
+---
+title: undefined
+slug: Web/JavaScript/Reference/Global_Objects/undefined
+tags:
+ - JavaScript
+ - Language feature
+ - Reference
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Global_Objects/undefined
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p>グローバルの <code><strong>undefined</strong></code> プロパティはプリミティブ値 <code>{{Glossary("Undefined", "undefined")}}</code> を表します。これは JavaScript における{{Glossary("Primitive", "プリミティブ型")}}の一つです。</p>
+
+<p>{{js_property_attributes(0,0,0)}}</p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-undefined.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">undefined</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>undefined</code> は、<em>グローバルオブジェクト</em>のプロパティです。すなわちグローバルスコープ内の変数です。 <code>undefined</code> の初期値はプリミティブ値である <code>{{Glossary("Undefined", "undefined")}}</code> です。</p>
+
+<p>最近のブラウザー (JavaScript 1.8.5 / Firefox 4 以降) での <code>undefined</code> は、 ECMAScript 5 仕様により、設定不可、書込不可のプロパティとなります。 (そうでない場合でも、上書きは避けてください。)</p>
+
+<p>まだ値が代入されていない変数は <code>undefined</code> 型となります。評価しようとしている変数に値が代入されていない場合、メソッドや文も <code>undefined</code> を返します。値を {{jsxref("Statements/return", "return")}} しない関数も <code>undefined</code> を返します。</p>
+
+<div class="note">
+<p><strong>ご注意ください</strong> グローバルスコープ以外のスコープでは{{Glossary("Identifier", "識別子")}} (変数名) として使うことができますが (<code>undefined</code> は{{jsxref("Reserved_Words", "予約語", "", 1)}}でないため)、コードの管理やデバッグが困難になるためおすすめできません。</p>
+
+<pre class="brush: js example-bad notranslate">//こんなことはしないこと!
+
+// "foo string" をログ出力する
+(function() {
+ var undefined = 'foo';
+ console.log(undefined, typeof undefined);
+})();
+
+// "foo string" をログ出力する
+(function(undefined) {
+ console.log(undefined, typeof undefined);
+})('foo');
+</pre>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Strict_equality_and_undefined" name="Strict_equality_and_undefined">厳密等価と undefined</h3>
+
+<p><code>undefined</code> と厳密等価・非等価演算子を使って、変数に値があるか調べることができます。次のコードでは、変数 <code>x</code> が定義されていないため、 <code>if</code> 文は true に評価されます。</p>
+
+<pre class="brush: js notranslate">var x;
+if (x === undefined) {
+ // ここの文は実行される
+}
+else {
+ // ここの文は実行されない
+}
+</pre>
+
+<div class="note">
+<p><strong>注:</strong> ここでは、標準の等価演算子ではなく厳密等価演算子を使わないといけません。厳密等価演算子とは違い、 <code>x == undefined</code> は、 <code>x</code> が <code>null</code> であるかどうかもチェックするからです。 <code>null</code> は <code>undefined</code> と等しくありません。</p>
+
+<p>詳しくは、{{jsxref("Operators/Comparison_Operators", "比較演算子","","true")}}を参照してください。</p>
+</div>
+
+<h3 id="typeof_operator_and_undefined" name="typeof_operator_and_undefined">typeof 演算子と undefined</h3>
+
+<p>代わりに、 {{jsxref("Operators/typeof", "typeof")}} を使用することができます。</p>
+
+<pre class="brush: js notranslate">var x;
+if (typeof x === 'undefined') {
+ // ここの文は実行される
+}
+</pre>
+
+<p>{{jsxref("Operators/typeof", "typeof")}} を使う理由の一つとして、こちらは変数が宣言されていなくてもエラーにはなりません。</p>
+
+<pre class="brush: js notranslate">// 直前まで x は宣言されていない
+if (typeof x === 'undefined') { // エラーなしで true と評価される
+ // ここの文は実行される
+}
+
+if (x === undefined) { // ReferenceError が発生
+
+}
+</pre>
+
+<p>しかし、もう一つの選択肢があります。JavaScriptは静的にスコープされた言語なので、変数が宣言されているかどうかを知るには、それが含まれるコンテキストで宣言されているかどうかを見ることで読み取ることができます。</p>
+
+<p>グローバルスコープは{{jsxref("globalThis", "グローバルオブジェクト", "", 1)}}に結びつけられているので、グローバルコンテキストに変数が存在するかどうかのチェックは、<em>グローバルオブジェクト</em>にプロパティが存在することを、 {{jsxref("Operators/in", "in")}} 演算子を使用してチェックすることで行うことができます。</p>
+
+<pre class="brush: js notranslate">if ('x' in window) {
+ // x がグローバルに定義されている場合のみ、ここの文を実行
+}</pre>
+
+<h3 id="void_operator_and_undefined" name="void_operator_and_undefined">void 演算子と undefined</h3>
+
+<p>3 つ目の方法として、{{jsxref("Operators/void", "void")}} 演算子があります。</p>
+
+<pre class="brush: js notranslate">var x;
+if (x === void 0) {
+ // ここの文は実行される
+}
+
+// 直前まで y は宣言されていない
+if (y === void 0) {
+ // ReferenceError: y is not defined が発生
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-undefined', 'undefined')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.undefined")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>JavaScript の {{Glossary("Primitive", "プリミティブ型")}}</li>
+ <li>{{jsxref("null")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/unescape/index.html b/files/ja/web/javascript/reference/global_objects/unescape/index.html
new file mode 100644
index 0000000000..8e12ccab38
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/unescape/index.html
@@ -0,0 +1,77 @@
+---
+title: unescape()
+slug: Web/JavaScript/Reference/Global_Objects/unescape
+tags:
+ - Deprecated
+ - JavaScript
+ - Method
+translation_of: Web/JavaScript/Reference/Global_Objects/unescape
+---
+<p>{{jsSidebar("Objects")}}</p>
+
+<div class="warning">警告: <code>unescape()</code> は厳密には (「ウェブ標準から削除された」という意味では) 非推奨になっていませんが、 ECMA-262 標準の <a href="https://www.ecma-international.org/ecma-262/9.0/index.html#sec-additional-ecmascript-features-for-web-browsers">Annex B</a> において定義されており、導入部で次のように位置付けられています。
+
+<blockquote>… この附属書で規定されているすべての言語機能および動作は、1つ以上の望ましくない特性を有しており、古い使用例がない場合には,この仕様から削除される。 …<br>
+… プログラマーは、新しい ECMAScript コードを書く際に、これらの機能や動作の存在を利用したり、仮定したりしてはいけない。 …</blockquote>
+</div>
+
+<p><code><strong>unescape()</strong></code> 関数は 16 進数エスケープシーケンスを、それが表す文字列に置換します。エスケープシーケンスは {{jsxref("escape")}} などの関数によって生成されます。通常は {{jsxref("decodeURI")}} または {{jsxref("decodeURIComponent")}} が <code>unescape</code> よりも推奨されます。</p>
+
+<div class="note"><strong>注 :</strong> URI のデコードに <code>unescape</code> を使用しないでください。代わりに <code>decodeURI</code> を使用してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">unescape(<var>str</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>str</var></code></dt>
+ <dd>デコードされる文字列。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>特定の文字のエスケープが解除された新しい文字列です。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>unescape</code> 関数は<em>グローバルオブジェクト</em>のプロパティです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_unescape" name="Using_unescape">unescape の使用</h3>
+
+<pre class="brush: js notranslate">unescape('abc123'); // "abc123"
+unescape('%E4%F6%FC'); // "äöü"
+unescape('%u0107'); // "ć"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-unescape-string', 'unescape')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.unescape")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("decodeURI")}}</li>
+ <li>{{jsxref("decodeURIComponent")}}</li>
+ <li>{{jsxref("escape")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/uneval/index.html b/files/ja/web/javascript/reference/global_objects/uneval/index.html
new file mode 100644
index 0000000000..7e592322d2
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/uneval/index.html
@@ -0,0 +1,74 @@
+---
+title: uneval()
+slug: Web/JavaScript/Reference/Global_Objects/uneval
+tags:
+ - Function
+ - JavaScript
+ - Method
+ - Non-standard
+ - Obsolete
+ - Reference
+ - uneval
+translation_of: Web/JavaScript/Reference/Global_Objects/uneval
+---
+<p>{{JSSidebar("Objects")}}{{Non-standard_Header}}{{Obsolete_Header("Gecko74")}}</p>
+
+<p><code><strong>uneval()</strong></code> 関数は、オブジェクトのソースコードを表す文字列を生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">uneval(<var>object</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>object</var></code></dt>
+ <dd>Javascript の式、あるいは文。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>与えられた <code><var>object</var></code> のソースコードを表す文字列です。</p>
+
+<div class="note"><strong>注:</strong> 返値は <code><var>object</var></code> に対する正しい JSON 表現になるとは限りません。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>uneval()</code> は最上位関数であり、どのオブジェクトにも関連付けられていません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_uneval" name="Using_uneval">uneval の使用</h3>
+
+<pre class="brush:js notranslate">var a = 1;
+uneval(a); // 1 を含む文字列が返される
+
+var b = '1';
+uneval(b) // "1" を含む文字列が返される
+
+uneval(function foo() {}); // "(function foo(){})" が返される
+
+
+var a = uneval(function foo() { return 'hi'; });
+var foo = eval(a);
+foo(); // "hi" が返される
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<p><span class="pl-s">いずれかの標準の一部ではありません。</span></p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.uneval")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Global_Objects/eval", "eval()")}}</li>
+ <li>{{JSxRef("JSON.stringify()")}}</li>
+ <li>{{JSxRef("JSON.parse()")}}</li>
+ <li>{{JSxRef("Object.toSource()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/urierror/index.html b/files/ja/web/javascript/reference/global_objects/urierror/index.html
new file mode 100644
index 0000000000..efb13e2539
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/urierror/index.html
@@ -0,0 +1,103 @@
+---
+title: URIError
+slug: Web/JavaScript/Reference/Global_Objects/URIError
+tags:
+ - Error
+ - JavaScript
+ - Object
+ - Reference
+ - URIError
+translation_of: Web/JavaScript/Reference/Global_Objects/URIError
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>URIError</strong></code> オブジェクトは、グローバル URI 処理関数が間違った方法で使用された場合のエラーを表します。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/URIError/URIError", "URIError()")}}</dt>
+ <dd>新しい <code>URIError</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.message", "URIError.prototype.message")}}</dt>
+ <dd>エラーメッセージです。 ECMA-262 において {{jsxref("URIError")}} は自身の <code>message</code> プロパティを提供するべきとされていますが、 <a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> では {{jsxref("Error.prototype.message")}} を継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.name", "URIError.prototype.name")}}</dt>
+ <dd>エラー名です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.fileName", "URIError.prototype.fileName")}}</dt>
+ <dd>このエラーが発生したファイルのパスです。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.lineNumber", "URIError.prototype.lineNumber")}}</dt>
+ <dd>このエラーが発生したファイル内の行番号です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.columnNumber", "URIError.prototype.columnNumber")}}</dt>
+ <dd>このエラーが発生した行内の桁番号です。 {{jsxref("Error")}} から継承しています。</dd>
+ <dt>{{jsxref("Error.prototype.stack", "URIError.prototype.stack")}}</dt>
+ <dd>スタックトレースです。 {{jsxref("Error")}} から継承しています。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Catching_an_URIError" name="Catching_an_URIError">URIError のキャッチ</h3>
+
+<pre class="brush: js notranslate">try {
+ decodeURIComponent('%')
+} catch (e) {
+ console.log(e instanceof URIError) // true
+ console.log(e.message) // "malformed URI sequence"
+ console.log(e.name) // "URIError"
+ console.log(e.fileName) // "Scratchpad/1"
+ console.log(e.lineNumber) // 2
+ console.log(e.columnNumber) // 2
+ console.log(e.stack) // "@Scratchpad/2:2:3\n"
+}
+</pre>
+
+<h3 id="Creating_an_URIError" name="Creating_an_URIError">URIError の生成</h3>
+
+<pre class="brush: js notranslate">try {
+ throw new URIError('Hello', 'someFile.js', 10)
+} catch (e) {
+ console.log(e instanceof URIError) // true
+ console.log(e.message) // "Hello"
+ console.log(e.name) // "URIError"
+ console.log(e.fileName) // "someFile.js"
+ console.log(e.lineNumber) // 10
+ console.log(e.columnNumber) // 0
+ console.log(e.stack) // "@Scratchpad/2:2:9\n"
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-syntaxerror', 'SyntaxError')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.URIError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+ <li>{{jsxref("Global_Objects/decodeURI", "decodeURI()")}}</li>
+ <li>{{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent()")}}</li>
+ <li>{{jsxref("Global_Objects/encodeURI", "encodeURI()")}}</li>
+ <li>{{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/urierror/urierror/index.html b/files/ja/web/javascript/reference/global_objects/urierror/urierror/index.html
new file mode 100644
index 0000000000..0e26b2bc49
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/urierror/urierror/index.html
@@ -0,0 +1,93 @@
+---
+title: URIError() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/URIError/URIError
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - URIError
+translation_of: Web/JavaScript/Reference/Global_Objects/URIError/URIError
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>URIError</code></strong> コンストラクターは、グローバルの URI 操作関数が間違った方法で使用された場合のエラーを生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new URIError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>message</var></code> {{optional_inline}}</dt>
+ <dd>人間が読むためのエラーの説明です。</dd>
+ <dt><code><var>fileName</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードを含むファイルの名前です。</dd>
+ <dt><code><var>lineNumber</var></code> {{optional_inline}}</dt>
+ <dd>例外が発生したコードの行番号です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Catching_a_URIError" name="Catching_a_URIError">URIError の捕捉</h3>
+
+<pre class="brush: js notranslate">try {
+ decodeURIComponent('%')
+} catch (e) {
+ console.log(e instanceof URIError) // true
+ console.log(e.message) // "malformed URI sequence"
+ console.log(e.name) // "URIError"
+ console.log(e.fileName) // "Scratchpad/1"
+ console.log(e.lineNumber) // 2
+ console.log(e.columnNumber) // 2
+ console.log(e.stack) // "@Scratchpad/2:2:3\n"
+}
+</pre>
+
+<h3 id="Creating_a_URIError" name="Creating_a_URIError">URIError の生成</h3>
+
+<pre class="brush: js notranslate">try {
+ throw new URIError('Hello', 'someFile.js', 10)
+} catch (e) {
+ console.log(e instanceof URIError) // true
+ console.log(e.message) // "Hello"
+ console.log(e.name) // "URIError"
+ console.log(e.fileName) // "someFile.js"
+ console.log(e.lineNumber) // 10
+ console.log(e.columnNumber) // 0
+ console.log(e.stack) // "@Scratchpad/2:2:9\n"
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-nativeerror-constructors', 'NativeError constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.URIError.URIError")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+ <li>{{jsxref("Global_Objects/decodeURI", "decodeURI()")}}</li>
+ <li>{{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent()")}}</li>
+ <li>{{jsxref("Global_Objects/encodeURI", "encodeURI()")}}</li>
+ <li>{{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/clear/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/clear/index.html
new file mode 100644
index 0000000000..5616cd0a70
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakmap/clear/index.html
@@ -0,0 +1,99 @@
+---
+title: WeakMap.prototype.clear()
+slug: Web/JavaScript/Reference/Global_Objects/WeakMap/clear
+tags:
+ - JavaScript
+ - Method
+ - Obsolete
+ - Prototype
+ - WeakMap
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/clear
+---
+<div>{{JSRef}} {{obsolete_header}}</div>
+
+<p><code><strong>clear()</strong></code> メソッドは、<code>WeakMap</code> オブジェクトからすべての要素を削除するために使用されていましたが、もはや ECMAScript とその実装に含まれていません。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox"><code><em>wm</em>.clear();</code></pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="clear_メソッドを使う"><code>clear</code> メソッドを使う</h3>
+
+<pre class="brush: js;highlight:[10] example-bad">var wm = new WeakMap();
+var obj = {};
+
+wm.set(obj, "foo");
+wm.set(window, "bar");
+
+wm.has(obj); // true
+wm.has(window); // true
+
+wm.clear();
+
+wm.has(obj) // false
+wm.has(window) // false
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<p>すべての現在の仕様やドラフトでサポートされていません。このメソッドは、リビジョン 28 (October 14, 2014 のバージョン)まで ECMAScript 第 6 版ドラフトでサポートされていました。しかし、最新バージョンのドラフトで削除されました。最終仕様では、サポートされていません。</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{CompatibilityTable}}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>36</td>
+ <td>{{CompatNo}} [1]</td>
+ <td>11</td>
+ <td>23</td>
+ <td>7.1</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}} [1]</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>iOS 8</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>[1] <code>clear()</code> メソッドは、バージョン 20 から 45 までサポートされていました。</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakMap")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/delete/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/delete/index.html
new file mode 100644
index 0000000000..66f97e0a53
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakmap/delete/index.html
@@ -0,0 +1,72 @@
+---
+title: WeakMap.prototype.delete()
+slug: Web/JavaScript/Reference/Global_Objects/WeakMap/delete
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - WeakMap
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/delete
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>delete()</code></strong> メソッドは、 {{jsxref("WeakMap")}} オブジェクトから指定された要素を削除します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/weakmap-prototype-delete.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>wm</var>.delete(<var>key</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>key</var></code></dt>
+ <dd><code>WeakMap</code> オブジェクトから削除する要素のキーです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>WeakMap</code> オブジェクト内の要素を削除するのに成功した場合、<code>true</code> を返します。<code>WeakMap</code> 内でキーが見つからなかったり、キーがオブジェクトでなかったりした場合、<code>false</code> を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_delete_method" name="Using_the_delete_method">delete() メソッドの使用</h3>
+
+<pre class="brush: js;highlight:[4] notranslate">var wm = new WeakMap();
+wm.set(window, 'foo');
+
+wm.delete(window); // true を返す。削除に成功。
+
+wm.has(window); // false を返す。 window はもう WeakMap に存在しない。
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakmap.prototype.delete', 'WeakMap.prototype.delete')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakMap.delete")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakMap")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/get/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/get/index.html
new file mode 100644
index 0000000000..5292e8a053
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakmap/get/index.html
@@ -0,0 +1,73 @@
+---
+title: WeakMap.prototype.get()
+slug: Web/JavaScript/Reference/Global_Objects/WeakMap/get
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - WeakMap
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/get
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>get()</code></strong> メソッドは、<code>WeakMap</code> オブジェクトから指定された要素を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/weakmap-prototype-get.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>wm</var>.get(<var>key</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>key</var></code></dt>
+ <dd>必須。<code>WeakMap</code> オブジェクトから返す要素のキーです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定されたキーと関連した要素を返します。キーが <code>WeakMap</code> オブジェクトに見つからない場合、 {{jsxref("undefined")}} を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_get_method" name="Using_the_get_method">get() メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var wm = new WeakMap();
+wm.set(window, 'foo');
+
+wm.get(window); // "foo" を返す
+wm.get('baz'); // undefined を返す
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakmap.prototype.get', 'WeakMap.prototype.get')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakMap.get")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakMap")}}</li>
+ <li>{{jsxref("WeakMap.set()")}}</li>
+ <li>{{jsxref("WeakMap.has()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/has/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/has/index.html
new file mode 100644
index 0000000000..4f63c37dff
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakmap/has/index.html
@@ -0,0 +1,76 @@
+---
+title: WeakMap.prototype.has()
+slug: Web/JavaScript/Reference/Global_Objects/WeakMap/has
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - WeakMap
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/has
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>has()</code></strong> メソッドは、特定のキーをもつ要素が <code>WeakMap</code> オブジェクト内に存在するかどうかを示す真偽値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/weakmap-prototype-has.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>ws</var>.has(<var>key</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>key</var></code></dt>
+ <dd><code>WeakMap</code> オブジェクトに存在するかテストする要素のキーです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<dl>
+ <dt>Boolean</dt>
+ <dd><code>WeakMap</code> オブジェクト内に特定のキーをもつ要素が存在していたら <code>true</code> を返します。さもなければ <code>false</code> を返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_has_method" name="Using_the_has_method">has() メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var wm = new WeakMap();
+wm.set(window, 'foo');
+
+wm.has(window); // true を返す
+wm.has('baz'); // false を返す
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakmap.prototype.has', 'WeakMap.prototype.has')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakMap.has")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakMap")}}</li>
+ <li>{{jsxref("WeakMap.prototype.set()")}}</li>
+ <li>{{jsxref("WeakMap.prototype.get()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/index.html
new file mode 100644
index 0000000000..72370dbf22
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakmap/index.html
@@ -0,0 +1,144 @@
+---
+title: WeakMap
+slug: Web/JavaScript/Reference/Global_Objects/WeakMap
+tags:
+ - Class
+ - ECMAScript 2015
+ - JavaScript
+ - Reference
+ - WeakMap
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap
+---
+<div>{{JSRef}}</div>
+
+<p><span class="seoSummary"><strong><code>WeakMap</code></strong> オブジェクトは、キーが弱く参照されるキーと値の組のコレクションです。キーはオブジェクトでなければならず、値は任意の値を取ることができます。</span></p>
+
+<p><code>WeakMap</code> については、 <a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections">WeakMap オブジェクト</a>のガイド (<a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections">キー付きコレクション</a>内) でより詳しく解説しています。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>WeakMap のキーは <code>Object</code> に限ります。{{Glossary("Primitive", "プリミティブ型")}} はキーとして使えません(例えば {{jsxref("Symbol")}} は <code>WeakMap</code> のキーとして使えません)。</p>
+
+<h3 id="Why_WeakMap" name="Why_WeakMap">なぜ <em>Weak</em>Map なのか?</h3>
+
+<p>map API は、4 つの API メソッドから共有される 2 つの配列 (1 つはキー用、もう 1 つは値用) を用いることで、JavaScript で実装<em>できます</em>。このマップに要素を設定すると、それぞれの配列の最後に同時にキーと値を追加することになります。その結果、両方の配列でキーと値のインデックスは対応がとれています。マップから値を取得するには、すべてのキーを操作して一致するものを見つけ、見つかったキーのインデックスを使用して値の配列から対応する値を取り出します。</p>
+
+<p>そうした実装では、主に 2 つの不都合が生じることとなります。</p>
+
+<ol>
+ <li>第一に、設定や探索の計算量が <em>O(<var>n</var>)</em> となること (<var>n</var> はマップ中におけるキーの数) で、どちらの操作も一致する値を見つけるためにキーのリストを反復しなければならないからです。</li>
+ <li>第二の不都合は、配列が各キーと各値への参照を無期限に維持することを保証しているため、メモリリークが発生することです。これらの参照は、オブジェクトへの他の参照がない場合でも、キーがガベージコレクションされるのを防ぎます。これにより、対応する値がガベージコレクションされるのを防ぐことにもなります。</li>
+</ol>
+
+<p>これに対して、ネイティブの <code>WeakMap</code> では、キーとなるオブジェクトに対しては"弱い"参照が保持されます。これにより、キーとなったオブジェクトへの参照が他に存在しない場合に、そのオブジェクトはガベージコレクションの対象に含まれるようになります。ネイティブの WeakMap はキーとそのキーに関する情報をマッピングする場合に、キーがガベージコレクションされていないときにだけ意味があるため特に有用な構造です。</p>
+
+<p><strong>弱い参照を用いるため、<code>WeakMap</code> のキーは列挙できません。</strong> キーの一覧を取得するメソッドは存在しません。もし、可能であれば、キーの一覧はガベージコレクションに依存することになり、非決定性が生まれます。キーの一覧が必要な場合は、{{jsxref("Map")}}を使うことになります。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("WeakMap/WeakMap", "WeakMap()")}}</dt>
+ <dd>新しい <code>WeakMap</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("WeakMap.delete", "WeakMap.prototype.delete(<var>key</var>)")}}</dt>
+ <dd><code><var>key</var></code> に関連した値を削除します。その後 <code>WeakMap.prototype.has(<var>key</var>)</code> は <code>false</code> を返します。</dd>
+ <dt>{{jsxref("WeakMap.get", "WeakMap.prototype.get(<var>key</var>)")}}</dt>
+ <dd><code><var>key</var></code> に関連した値を返します。見つからない場合、<code>undefined</code> を返します。</dd>
+ <dt>{{jsxref("WeakMap.has", "WeakMap.prototype.has(<var>key</var>)")}}</dt>
+ <dd><code>WeakMap</code> オブジェクト内に <code><var>key</var></code> に関連した値があるかどうか示す Boolean を返します。</dd>
+ <dt>{{jsxref("WeakMap.set", "WeakMap.prototype.set(<var>key</var>, <var>value</var>)")}}</dt>
+ <dd><code>WeakMap</code> オブジェクト内に <code><var>key</var></code> に対する値を設定し、<code>WeakMap</code> オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="Example" name="Example">例</h2>
+
+<h3 id="Using_WeakMap" name="Using_WeakMap">WeakMap の使用</h3>
+
+<pre class="brush: js notranslate">const wm1 = new WeakMap(),
+ wm2 = new WeakMap(),
+ wm3 = new WeakMap();
+const o1 = {},
+ o2 = function() {},
+ o3 = window;
+
+wm1.set(o1, 37);
+wm1.set(o2, 'azerty');
+wm2.set(o1, o2); // 値は(オブジェクトまたは関数を含む)何であってもかまいません
+wm2.set(o3, undefined);
+wm2.set(wm1, wm2); // キーも値もどんなオブジェクトでもかまいません。 WeakMap であってもよいのです!
+
+wm1.get(o2); // "azerty"
+wm2.get(o2); // wm2 には o2 に関連付けられた値が無い為、undefined が返ってきます
+wm2.get(o3); // 値が undefined と関連付けられている為、undefined が返ってきます
+
+wm1.has(o2); // true
+wm2.has(o2); // false
+wm2.has(o3); // true (値が関連付けられているならば、たとえ値が 'undefined' であっても true となります)
+
+wm3.set(o1, 37);
+wm3.get(o1); // 37
+
+wm1.has(o1); // true
+wm1.delete(o1);
+wm1.has(o1); // false
+</pre>
+
+<h3 id="Implementing_a_WeakMap-like_class_with_a_.clear_method" name="Implementing_a_WeakMap-like_class_with_a_.clear_method">.clear() メソッドを持つ WeakMap 風のクラスの実装</h3>
+
+<pre class="brush: js notranslate">class ClearableWeakMap {
+ constructor(init) {
+ this._wm = new WeakMap(init);
+ }
+ clear() {
+ this._wm = new WeakMap();
+ }
+ delete(k) {
+ return this._wm.delete(k);
+ }
+ get(k) {
+ return this._wm.get(k);
+ }
+ has(k) {
+ return this._wm.has(k);
+ }
+ set(k, v) {
+ this._wm.set(k, v);
+ return this;
+ }
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakmap-objects', 'WeakMap')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakMap")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections#WeakMap_object">JavaScript ガイド内の <code>WeakMap</code></a></li>
+ <li><a href="http://fitzgeraldnick.com/weblog/53/">Hiding Implementation Details with ECMAScript 6 WeakMaps</a></li>
+ <li>{{jsxref("Map")}}</li>
+ <li>{{jsxref("Set")}}</li>
+ <li>{{jsxref("WeakSet")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/set/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/set/index.html
new file mode 100644
index 0000000000..2cd2dc35d8
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakmap/set/index.html
@@ -0,0 +1,78 @@
+---
+title: WeakMap.prototype.set()
+slug: Web/JavaScript/Reference/Global_Objects/WeakMap/set
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - WeakMap
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/set
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>set()</code></strong> メソッドは、指定されたキーと値をもつ新しい要素を <code>WeakMap</code> オブジェクトへ追加します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/weakmap-prototype-set.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>wm</var>.set(<var>key</var>, <var>value</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>key</var></code></dt>
+ <dd>必須です。 <code>object</code> である必要があります。 <code>WeakMap</code> オブジェクトに追加する要素のキーです。</dd>
+ <dt><code><var>value</var></code></dt>
+ <dd>必須です。任意の値です。 <code>WeakMap</code> オブジェクトに追加する要素の値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>WeakMap</code> オブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_set_method" name="Using_the_set_method">set() メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var wm = new WeakMap();
+var obj = {};
+
+// Add new elements to the WeakMap
+wm.set(obj, 'foo').set(window, 'bar'); // chainable
+
+// Update an element in the WeakMap
+wm.set(obj, 'baz');
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakmap.prototype.set', 'WeakMap.prototype.set')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakMap.set")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakMap")}}</li>
+ <li>{{jsxref("WeakMap.prototype.get()")}}</li>
+ <li>{{jsxref("WeakMap.prototype.has()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakmap/weakmap/index.html b/files/ja/web/javascript/reference/global_objects/weakmap/weakmap/index.html
new file mode 100644
index 0000000000..cf1585cb9d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakmap/weakmap/index.html
@@ -0,0 +1,90 @@
+---
+title: WeakMap() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/WeakMap/WeakMap
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - WeakMap
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/WeakMap
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>WeakMap()</code> コンストラクター</strong>は、キーが弱く参照されている、キーと値の組のコレクションである <code>WeakMap</code> オブジェクトを生成します。キーはオブジェクトでなければならず、値は任意の値を指定することができます。</p>
+
+<p><code>WeakMap</code> については、<a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections">キー付きコレクション</a>の <a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections#WeakMap_object">WeakMap オブジェクト</a>の節を参照してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new WeakMap([<var>iterable</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>iterable</var></code></dt>
+ <dd>iterable は配列などの反復可能オブジェクトであり、その要素はキーと値の組 (2 要素の配列) となります。それぞれのキーと値の組は、新しい WeakMap に追加されます。 null は undefined として扱われます。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_WeakMap" name="Using_WeakMap">WeakMap の使用</h3>
+
+<pre class="brush: js notranslate">const wm1 = new WeakMap(),
+ wm2 = new WeakMap(),
+ wm3 = new WeakMap();
+const o1 = {},
+ o2 = function() {},
+ o3 = window;
+
+wm1.set(o1, 37);
+wm1.set(o2, 'azerty');
+wm2.set(o1, o2); // 値は何でもよく、オブジェクトでも関数でもよい
+wm2.set(o3, undefined);
+wm2.set(wm1, wm2); // キーと値はあらゆるオブジェクトになれる。 WeakMap も同様。
+
+wm1.get(o2); // "azerty"
+wm2.get(o2); // undefined、 o2 というキーが wm2 にないため
+wm2.get(o3); // undefined、 設定された値がそうであるため
+
+wm1.has(o2); // true
+wm2.has(o2); // false
+wm2.has(o3); // true (値自身が 'undefined' であっても)
+
+wm3.set(o1, 37);
+wm3.get(o1); // 37
+
+wm1.has(o1); // true
+wm1.delete(o1);
+wm1.has(o1); // false
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakmap-constructor', 'WeakMap constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakMap.WeakMap")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Keyed_collections#WeakMap_object"><code>WeakMap</code> (JavaScript ガイド)</a></li>
+ <li><a href="http://fitzgeraldnick.com/weblog/53/">Hiding Implementation Details with ECMAScript 6 WeakMaps</a></li>
+ <li>{{jsxref("Map")}}</li>
+ <li>{{jsxref("Set")}}</li>
+ <li>{{jsxref("WeakSet")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakref/index.html b/files/ja/web/javascript/reference/global_objects/weakref/index.html
new file mode 100644
index 0000000000..08327348d7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakref/index.html
@@ -0,0 +1,149 @@
+---
+title: WeakRef
+slug: Web/JavaScript/Reference/Global_Objects/WeakRef
+tags:
+ - Class
+ - JavaScript
+ - NeedsTranslation
+ - Reference
+ - TopicStub
+ - WeakRef
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakRef
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>WeakRef</code></strong> オブジェクトにより、ガベージコレクションが行われることを妨げない他のオブジェクトへの弱い参照を保持します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>WeakRef</code> オブジェクトはオブジェクトへの弱い参照を含み、これは<em>ターゲット</em>または<em>リファレント</em>と呼ばれます。オブジェクトへの弱い参照は、ガベージコレクターによるオブジェクトの回収を妨げない参照です。対照的に、通常の (または<em>強い</em>) 参照はオブジェクトをメモリに保持します。オブジェクトが強い参照を持たなくなった場合、 JavaScript エンジンのガベージコレクターはオブジェクトを破棄してメモリを再取得することがあります。そうなると、弱い参照からオブジェクトを取得することはできなくなります。</p>
+
+<div class="note">
+<p><strong>注:</strong> 下記の<a href="#Avoid_where_possible">できる限り避ける</a>の節をご覧ください。正しい <code>WeakRef</code> の使用は注意深く考える必要があり、可能であれば避けるのが最良です。</p>
+</div>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("WeakRef/WeakRef", "WeakRef()")}}</dt>
+ <dd>新しい <code>WeakRef</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("WeakRef.deref", "WeakRef.prototype.deref()")}}</dt>
+ <dd><code>WeakRef</code> オブジェクトの対象オブジェクトを返すか、対象オブジェクトが既に回収されている場合は <code>undefined</code> を返します。</dd>
+</dl>
+
+<h2 id="Avoid_where_possible" name="Avoid_where_possible">可能な限り避ける</h2>
+
+<p><code>WeakRef</code> の正しい使用には慎重な検討が必要であり、可能であれば避けた方が良いでしょう。また、仕様で保証されていない特定の動作に依存しないことも重要です。ガベージコレクションがいつ、どのように、そしてどのように発生するかは、使用している JavaScript エンジンの実装に依存します。あるエンジンで観察した動作が、別のエンジン、同じエンジンの別のバージョン、あるいは同じエンジンの同じバージョンでも少し違う状況では異なる可能性があります。ガベージコレクションは、 JavaScript エンジンの実装者が常に解決策を改良している難しい問題です。</p>
+
+<p>ここでは、 WeakRef の提案の著者がその<a href="https://github.com/tc39/proposal-weakrefs/blob/master/README.md">説明文書</a>に盛り込んだ具体的なポイントをいくつか紹介します。</p>
+
+<blockquote>
+<p><a href="https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3">ガベージコレクション</a>は複雑です。アプリケーションもしくはライブラリが WeakRef のガベージコレクションの解放処理か、即時にファイナライザ (解放処理のコールバック) の呼出処理に依存している場合は、予想した動作とは異なる動作を行うかもしれません。解放処理は予想よりもかなり後に行われるか、もしくは行われないからです。以下に挙げた様々な原因が考えられます。</p>
+
+<ul>
+ <li>One object might be garbage-collected much sooner than another object, even if they become unreachable at the same time, e.g., due to generational collection.</li>
+ <li>Garbage collection work can be split up over time using incremental and concurrent techniques.</li>
+ <li>Various runtime heuristics can be used to balance memory usage, responsiveness.</li>
+ <li>The JavaScript engine may hold references to things which look like they are unreachable (e.g., in closures, or inline caches).</li>
+ <li>Different JavaScript engines may do these things differently, or the same engine may change its algorithms across versions.</li>
+ <li>Complex factors may lead to objects being held alive for unexpected amounts of time, such as use with certain APIs.</li>
+</ul>
+</blockquote>
+
+<h2 id="Notes_on_WeakRefs" name="Notes_on_WeakRefs">WeakRef における注意</h2>
+
+<p>Some notes on <code>WeakRef</code>s:</p>
+
+<ul>
+ <li>If your code has just created a <code>WeakRef</code> for a target object, or has gotten a target object from a <code>WeakRef</code>'s <code>deref</code> method, that target object will not be reclaimed until the end of the current JavaScript <a href="https://tc39.es/ecma262/#job">job</a> (including any promise reaction jobs that run at the end of a script job). That is, you can only "see" an object get reclaimed between turns of the event loop. This is primarily to avoid making the behavior of any given JavaScript engine's garbage collector apparent in code — because if it were, people would write code relying on that behavior, which would break when the garbage collector's behavior changed. (Garbage collection is a hard problem; JavaScript engine implementers are constantly refining and improving how it works.)</li>
+ <li>If multiple <code>WeakRef</code>s have the same target, they're consistent with one another. The result of calling <code>deref</code> on one of them will match the result of calling <code>deref</code> on another of them (in the same job), you won't get the target object from one of them but <code>undefined</code> from another.</li>
+ <li>If the target of a <code>WeakRef</code> is also in a {{jsxref("FinalizationRegistry")}}, the <code>WeakRef</code>'s target is cleared at the same time or before any cleanup callback associated with the registry is called; if your cleanup callback calls <code>deref</code> on a <code>WeakRef</code> for the object, it will receive <code>undefined</code>.</li>
+ <li>You cannot change the target of a <code>WeakRef</code>, it will always only ever be the original target object or <code>undefined</code> when that target has been reclaimed.</li>
+ <li>A <code>WeakRef</code> might never return <code>undefined</code> from <code>deref</code>, even if nothing strongly holds the target, because the garbage collector may never decide to reclaim the object.</li>
+</ul>
+
+<h2 id="Example" name="Example">例</h2>
+
+<h3 id="Using_a_WeakRef_object" name="Using_a_WeakRef_object">WeakRef オブジェクトの使用</h3>
+
+<p>This example starts a counter shown in a DOM element, stopping when the element doesn't exist anymore:</p>
+
+<pre class="brush: js notranslate">class Counter {
+ constructor(element) {
+ // Remember a weak reference to the DOM element
+ this.ref = new WeakRef(element);
+ this.start();
+ }
+
+ start() {
+ if (this.timer) {
+ return;
+ }
+
+ this.count = 0;
+
+ const tick = () =&gt; {
+ // Get the element from the weak reference, if it still exists
+ const element = this.ref.deref();
+ if (element) {
+ element.textContent = ++this.count;
+ } else {
+ // The element doesn't exist anymore
+ console.log("The element is gone.");
+ this.stop();
+ this.ref = null;
+ }
+ };
+
+ tick();
+ this.timer = setInterval(tick, 1000);
+ }
+
+ stop() {
+ if (this.timer) {
+ clearInterval(this.timer);
+ this.timer = 0;
+ }
+ }
+}
+
+const counter = new Counter(document.getElementById("counter"));
+counter.start();
+setTimeout(() =&gt; {
+ document.getElementById("counter").remove();
+}, 5000);
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WeakRefs', '#sec-weak-ref-objects', 'WeakRef')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakMap")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("FinalizationRegistry")}}</li>
+ <li>{{jsxref("WeakSet")}}</li>
+ <li>{{jsxref("WeakMap")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakref/weakref/index.html b/files/ja/web/javascript/reference/global_objects/weakref/weakref/index.html
new file mode 100644
index 0000000000..5791b22c1a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakref/weakref/index.html
@@ -0,0 +1,67 @@
+---
+title: WeakRef() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/WeakRef/WeakRef
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - WeakRef
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakRef/WeakRef
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>WeakRef</code></strong> コンストラクターは、指定された対象オブジェクトを参照する {{jsxref("WeakRef")}} オブジェクトを生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new WeakRef(<var>targetObject</var>);
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>targetObject</var></code></dt>
+ <dd>WeakRef が参照する対象オブジェクト (<em>referent</em> とも呼ばれます)。</dd>
+</dl>
+
+<h2 id="Example" name="Example">例</h2>
+
+<h3 id="Creating_a_new_WeakRef_object" name="Creating_a_new_WeakRef_object">新しい WeakRef オブジェクトの生成</h3>
+
+<p>完全な例は中心となる <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/WeakRef#Examples"><code>WeakRef</code></a> ページを参照してください。</p>
+
+<pre class="brush: js notranslate">class Counter {
+ constructor(element) {
+ // DOM 要素への弱い参照を覚える
+ this.ref = new WeakRef(element);
+ this.start();
+ }
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WeakRefs', '#sec-weak-ref-constructor', 'WeakRef constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakRef.WeakRef")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakRef")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakset/add/index.html b/files/ja/web/javascript/reference/global_objects/weakset/add/index.html
new file mode 100644
index 0000000000..c7a096b6d9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakset/add/index.html
@@ -0,0 +1,77 @@
+---
+title: WeakSet.prototype.add()
+slug: Web/JavaScript/Reference/Global_Objects/WeakSet/add
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - WeakSet
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/add
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>add()</code></strong> メソッドは、新しい要素を <code>WeakSet</code> オブジェクトの最後に追加します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/weakset-prototype-add.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>ws</var>.add(<var>value</var>);</pre>
+
+<h3 id="Syntax" name="Syntax">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>必須。 <code>WeakSet</code> コレクションに追加する要素の値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>WeakSet</code> オブジェクトです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_add" name="Using_add">add() の使用</h3>
+
+<pre class="brush: js notranslate">var ws = new WeakSet();
+
+ws.add(window); //window オブジェクトを WeakSet へ追加
+
+ws.has(window); // true
+
+// WeakSet は引数としてオブジェクトのみを取ります。
+ws.add(1);
+// 結果は "TypeError: Invalid value used in weak set" (Chrome)
+// "TypeError: 1 is not a non-null object" (Firefox)</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakset.prototype.add', 'WeakSet.prototype.add')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakSet.add")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakSet")}}</li>
+ <li>{{jsxref("WeakSet.prototype.delete()")}}</li>
+ <li>{{jsxref("WeakSet.prototype.has()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakset/clear/index.html b/files/ja/web/javascript/reference/global_objects/weakset/clear/index.html
new file mode 100644
index 0000000000..071596ce79
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakset/clear/index.html
@@ -0,0 +1,95 @@
+---
+title: WeakSet.prototype.clear()
+slug: Web/JavaScript/Reference/Global_Objects/WeakSet/clear
+tags:
+ - JavaScript
+ - Method
+ - Obsolute
+ - Prototype
+ - WeakSet
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/clear
+---
+<div>{{JSRef("Global_Objects", "WeakSet")}} {{obsolete_header}}</div>
+
+<h2 id="Summary" name="Summary">概要</h2>
+
+<p><code>WeakSet</code>オブジェクトからすべての要素を削除します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code><em>ws</em>.clear();</code></pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Example:_Testing_size_of_all_array_elements" name="Example:_Testing_size_of_all_array_elements">例: <code>clear</code> メソッドを使う</h3>
+
+<pre class="brush: js">var ws = new WeakSet();
+
+ws.add(window);
+ws.has(window); // true
+
+ws.clear();
+
+ws.has(window); // false
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<p>すべての現在の標準やドラフトでサポートされていません。このメソッドは、リビジョン 28 (October 14, 2014のバージョン)までECMAScript第6版ドラフト仕様でサポートされました。しかし、最新バージョンのドラフトで削除されました。最終仕様では、サポートされていません。</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{CompatibilityTable}}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>36</td>
+ <td>{{ CompatGeckoDesktop(34) }}</td>
+ <td>{{CompatNo}}</td>
+ <td>23</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatNo}}</td>
+ <td>{{ CompatGeckoMobile(34) }}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakSet")}}</li>
+ <li>{{jsxref("WeakSet.prototype.delete()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakset/delete/index.html b/files/ja/web/javascript/reference/global_objects/weakset/delete/index.html
new file mode 100644
index 0000000000..4be137c50d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakset/delete/index.html
@@ -0,0 +1,76 @@
+---
+title: WeakSet.prototype.delete()
+slug: Web/JavaScript/Reference/Global_Objects/WeakSet/delete
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - WeakSet
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/delete
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>delete()</code></strong> メソッドは、<code>WeakSet</code> オブジェクトから指定された要素を取り除きます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/weakset-prototype-delete.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>ws</var>.delete(<var>value</var>);</pre>
+
+<h3 id="Syntax" name="Syntax">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd>必須。 <code>WeakSet</code> オブジェクトから取り除くオブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p><code>WeakSet</code> オブジェクトの中の要素が正常に削除された場合は <code>true</code> を返します。 <code><var>value</var></code> が <code>WeakSet</code> の中で見つからなかったり、 <code><var>value</var></code> がオブジェクトではなかった場合は <code>false</code> を返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_delete_method" name="Using_the_delete_method">delete() メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var ws = new WeakSet();
+var obj = {};
+
+ws.add(window);
+
+ws.delete(obj); // false を返します。削除する obj が見つかりません。
+ws.delete(window); // true を返します。正常に削除されます。
+
+ws.has(window); // false を返します。 window はもう WeakSet の中にないからです。
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakset.prototype.delete', 'WeakSet.prototype.delete')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakSet.delete")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakSet")}}</li>
+ <li>{{jsxref("WeakSet.prototype.clear()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakset/has/index.html b/files/ja/web/javascript/reference/global_objects/weakset/has/index.html
new file mode 100644
index 0000000000..b1ea0ffdb6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakset/has/index.html
@@ -0,0 +1,77 @@
+---
+title: WeakSet.prototype.has()
+slug: Web/JavaScript/Reference/Global_Objects/WeakSet/has
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Method
+ - Prototype
+ - WeakSet
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/has
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>has()</code></strong> メソッドは、特定の値をもつ要素が <code>WeakSet</code> オブジェクト内に存在するかどうかを示す真偽値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/weakset-prototype-has.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>ws</var>.has(<var>value</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>value</var></code></dt>
+ <dd><code>WeakSet</code> オブジェクトに存在するかテストする値です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<dl>
+ <dt>Boolean</dt>
+ <dd><code>WeakSet</code> オブジェクト内に特定の値をもつ要素が存在していたら <code>true</code> を返します。さもなければ <code>false</code> を返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_has_method" name="Using_the_has_method">has() メソッドの使用</h3>
+
+<pre class="brush: js notranslate">var ws = new WeakSet();
+var obj = {};
+ws.add(window);
+
+mySet.has(window); // returns true
+mySet.has(obj); // returns false
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakset.prototype.has', 'WeakSet.prototype.has')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakSet.has")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakSet")}}</li>
+ <li>{{jsxref("WeakSet.prototype.add()")}}</li>
+ <li>{{jsxref("WeakSet.prototype.delete()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakset/index.html b/files/ja/web/javascript/reference/global_objects/weakset/index.html
new file mode 100644
index 0000000000..d8d9f87dfb
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakset/index.html
@@ -0,0 +1,133 @@
+---
+title: WeakSet
+slug: Web/JavaScript/Reference/Global_Objects/WeakSet
+tags:
+ - Class
+ - ECMAScript 2015
+ - JavaScript
+ - WeakSet
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>WeakSet</code></strong> オブジェクトは、コレクションに弱く参照された<em>オブジェクト</em>を格納することができます。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>WeakSet</code> オブジェクトはコレクションオブジェクトです。 {{jsxref("Set")}} と同様に、 <code>WeakSet</code> 内の各オブジェクトは一度だけ存在します。すなわち、 <code>WeakSet</code> コレクション内で固有になります。</p>
+
+<p>{{jsxref("Set")}} オブジェクトとの主な違いは下記の通りです。</p>
+
+<ul>
+ <li><code>WeakSet</code> は<strong>オブジェクトのみ</strong>のコレクションです。 {{jsxref("Set")}} のように、任意の型の自由な値を入れることはできません。</li>
+ <li><code>WeakSet</code> は<em>弱い参照</em>です。コレクション内のオブジェクトへの<em>弱い参照</em>で保持されます。 <code>WeakSet</code> 内に格納されているオブジェクトへの参照が他にない場合、ガベージコレクションにより削除されます。
+ <div class="blockIndicator note">
+ <p><strong>注:</strong> これは、このコレクションに格納されているオブジェクトの現在のリストが存在しないことを意味します。 <code>WeakSets</code> は列挙可能ではありません。</p>
+ </div>
+ </li>
+</ul>
+
+<h3 id="Use_case_Detecting_circular_references" name="Use_case_Detecting_circular_references">使用例: 循環参照の検出</h3>
+
+<p>自分自身を再帰的に呼び出す関数は、どのオブジェクトが処理済みであるかを追跡することで、循環したデータ構造を防ぐ必要があります。</p>
+
+<p><code>WeakSet</code> はこの目的に理想的です。</p>
+
+<pre class="brush: js notranslate">// Execute a callback on everything stored inside an object
+function execRecursively(fn, subject, _refs = null){
+ if(!_refs)
+ _refs = new WeakSet();
+
+ // Avoid infinite recursion
+ if(_refs.has(subject))
+ return;
+
+ fn(subject);
+ if("object" === typeof subject){
+ _refs.add(subject);
+ for(let key in subject)
+ execRecursively(fn, subject[key], _refs);
+ }
+}
+
+const foo = {
+ foo: "Foo",
+ bar: {
+ bar: "Bar"
+ }
+};
+
+foo.bar.baz = foo; // Circular reference!
+execRecursively(obj =&gt; console.log(obj), foo);
+</pre>
+
+<p>ここで、 <code>WeakSet</code> は最初の実行時に作成され、その後の関数呼び出しのたびに (内部の <code>_refs</code> 引数を使用して) 渡されます。</p>
+
+<p>オブジェクトの数や探索順序は重要ではないので、オブジェクトの参照を追跡するには <code>WeakSet</code> のほうが {{jsxref("Set")}} よりも、特に巨大な数のオブジェクトを処理する場合にはよりふさわしい (そして性能もよい) ものです。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("WeakSet/WeakSet", "WeakSet()")}}</dt>
+ <dd>新しい<code>WeakSet</code>オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
+
+<dl>
+ <dt>{{jsxref("WeakSet.add", "WeakSet.prototype.add(<var>value</var>)")}}</dt>
+ <dd><code><var>value</var></code> を <code>WeakSet</code> オブジェクトに追加します。</dd>
+ <dt>{{jsxref("WeakSet.delete", "WeakSet.prototype.delete(<var>value</var>)")}}</dt>
+ <dd><code><var>value</var></code> を <code>WeakSet</code> オブジェクトから削除します。削除後、 <code>WeakSet.prototype.has(<var>value</var>)</code> は <code>false</code> を返します。</dd>
+ <dt>{{jsxref("WeakSet.has", "WeakSet.prototype.has(<var>value</var>)")}}</dt>
+ <dd><code><var>value</var></code> が <code>WeakSet</code> オブジェクト内の要素に含まれているかどうかを示す論理値を返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_WeakSet_object" name="Using_the_WeakSet_object">WeakSet オブジェクトの使用</h3>
+
+<pre class="brush: js notranslate">const ws = new WeakSet();
+const foo = {};
+const bar = {};
+
+ws.add(foo);
+ws.add(bar);
+
+ws.has(foo); // true
+ws.has(bar); // true
+
+ws.delete(foo); // foo を set から削除
+ws.has(foo); // false, foo は削除済み
+ws.has(bar); // true, bar は残っている</pre>
+
+<p><code>foo !== bar</code> であることに注意してください。これらは似たオブジェクトですが、<em><strong>まったく同じオブジェクト</strong>ではありません</em>。したがって、両方のオブジェクトが set に追加されます。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakset-objects', 'WeakSet')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakSet")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Map")}}</li>
+ <li>{{jsxref("Set")}}</li>
+ <li>{{jsxref("WeakMap")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/weakset/weakset/index.html b/files/ja/web/javascript/reference/global_objects/weakset/weakset/index.html
new file mode 100644
index 0000000000..1876754199
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/weakset/weakset/index.html
@@ -0,0 +1,71 @@
+---
+title: WeakSet() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/WeakSet/WeakSet
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - WeakSet
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/WeakSet
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>WeakSet</code></strong> コンストラクターで、 <code>WeakSet</code> オブジェクトを生成し、これに弱い参照で<em>オブジェクト</em>をコレクションで保持することができます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new WeakSet([<var>iterable</var>]);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><var>iterable</var></dt>
+ <dd><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">反復可能オブジェクト</a>が渡された場合、すべての要素が新しい <code>WeakSet</code> に追加されます。 null は undefined として扱われます。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_WeakSet_object" name="Using_the_WeakSet_object">WeakSet オブジェクトの使用</h3>
+
+<pre class="brush: js notranslate">var ws = new WeakSet();
+var foo = {};
+var bar = {};
+
+ws.add(foo);
+ws.add(bar);
+
+ws.has(foo); // true
+ws.has(bar); // true
+
+ws.delete(foo); // foo を set から削除
+ws.has(foo); // false, foo は削除済み
+ws.has(bar); // true, bar は残っている</pre>
+
+<p><code>foo !== bar</code> であることに注意してください。これらは似たオブジェクトですが、<em><strong>まったく同じオブジェクト</strong>ではありません</em>。したがって、両方のオブジェクトが set に追加されます。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakset-constructor', 'WeakSet constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WeakSet.WeakSet")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WeakSet")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/compile/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/compile/index.html
new file mode 100644
index 0000000000..1cdf19f657
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/compile/index.html
@@ -0,0 +1,97 @@
+---
+title: WebAssembly.compile()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/compile
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/compile
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p><strong><code>WebAssembly.compile()</code></strong> 関数は WebAssembly バイナリコードから {{jsxref("WebAssembly.Module")}} にコンパイルします。この関数はモジュールをインスタンス化する前にコンパイルする必要がある時に便利です。(そうでなければ、 {{jsxref("WebAssembly.instantiate()")}} 関数の使用が推奨されます。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">Promise&lt;WebAssembly.Module&gt; WebAssembly.compile(bufferSource);</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><em>bufferSource</em></dt>
+ <dd>コンパイルする <a href="/ja/docs/Web/JavaScript/Typed_arrays">型付き配列</a> か <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer">ArrayBuffer</a> を含む .wasm モジュールのバイナリコード。</dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>解決時にコンパイルされたモジュールを表す {{jsxref("WebAssembly.Module")}} オブジェクト渡す <code>Promise 。</code></p>
+
+<h3 id="例外">例外</h3>
+
+<ul>
+ <li><font face="Consolas, Liberation Mono, Courier, monospace">バイナリソースが</font> <a href="/ja/docs/Web/JavaScript/Typed_arrays">型付き配列</a> でない場合、 {{jsxref("TypeError")}} がスローされます。</li>
+ <li>コンパイルが失敗したとき、プロミスは {{jsxref("WebAssembly.CompileError")}} で棄却されます。</li>
+</ul>
+
+<h2 id="例">例</h2>
+
+<p>以下の例では (Github上のデモ <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/index-compile.html">index-compile.html</a> と <a href="https://mdn.github.io/webassembly-examples/js-api-examples/index-compile.html">動作例</a> をご確認ください) <code>compile()</code> 関数を使ってロードした simple.wasm のバイトコードをコンパイルして、その後 <a href="/ja/docs/Web/API/Worker/postMessage">postMessage()</a> を使って <a href="https://developer.mozilla.org/ja/docs/Web/API/Web_Workers_API">worker</a> に送信しています。</p>
+
+<pre class="brush: js">var worker = new Worker("wasm_worker.js");
+
+fetch('simple.wasm').then(response =&gt;
+  response.arrayBuffer()
+).then(bytes =&gt;
+  WebAssembly.compile(bytes)
+).then(mod =&gt;
+  worker.postMessage(mod)
+);</pre>
+
+<p>ワーカー内で (<code><a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/wasm_worker.js">wasm_worker.js</a> を参照</code>) モジュールで使用するためのインポートオブジェクトを定義して、メインスレッドからモジュールを受け取るためのイベントハンドラをセットアップします。モジュールを受け取ったとき、 {{jsxref("WebAssembly.Instantiate()")}} メソッドを使用してモジュールからインスタンスを生成します。内部からエクスポートされた関数を実行して、その後に {{jsxref("WebAssembly.Module/exports", "WebAssembly.Module.exports")}} プロパティを使用してモジュール上で利用可能なエクスポートに関する情報を確認する方法を示します。</p>
+
+<pre class="brush: js">var importObject = {
+ imports: {
+ imported_func: function(arg) {
+ console.log(arg);
+ }
+ }
+};
+
+onmessage = function(e) {
+ console.log('module received from main thread');
+ var mod = e.data;
+
+ WebAssembly.instantiate(mod, importObject).then(function(instance) {
+ instance.exports.exported_func();
+ });
+
+ var exports = WebAssembly.Module.exports(mod);
+ console.log(exports[0]);
+};</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#webassemblycompile', 'compile()')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>初回ドラフト定義。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{Compat("javascript.builtins.WebAssembly.compile")}}</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="https://developer.mozilla.org/ja/docs/WebAssembly/Concepts">WebAssembly のコンセプト</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/compileerror/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/compileerror/index.html
new file mode 100644
index 0000000000..785e7f604e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/compileerror/index.html
@@ -0,0 +1,110 @@
+---
+title: WebAssembly.CompileError()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p><code><strong>WebAssembly.CompileError()</strong></code> コンストラクタは WebAssembly <code>CompileError</code> オブジェクトを生成します。WebAssembly のデコードやバリデーション中にエラーが発生したことを示します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox"><code>new WebAssembly.CompileError(<var>message</var>, <var>fileName</var>, <var>lineNumber</var>)</code></pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>message</code> {{optional_inline}}</dt>
+ <dd>ヒューマンリーダブルなエラーの説明。</dd>
+ <dt><code>fileName</code> {{optional_inline}}{{non-standard_inline}}</dt>
+ <dd>例外の原因となったコードを含むファイルの名前。</dd>
+ <dt><code>lineNumber</code> {{optional_inline}}{{non-standard_inline}}</dt>
+ <dd>例外の原因となったコードの行番号。</dd>
+</dl>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<p><em><code>CompileError</code> コンストラクタは自身のプロパティを持ちませんが、プロトタイプチェーンを通していくつかのプロパティを継承します。</em></p>
+
+<dl>
+ <dt><code>WebAssembly.CompileError.prototype.constructor</code></dt>
+ <dd>インスタンスのプロトタイプを生成した関数を示します。</dd>
+ <dt>{{jsxref("Error.prototype.message", "WebAssembly.CompileError.prototype.message")}}</dt>
+ <dd>エラーメッセージ。ECMA-262では {{jsxref("URIError")}} は自身の <code>message</code> プロパティを提供する必要がありますが、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> では {{jsxref("Error.prototype.message")}} を継承します。</dd>
+ <dt>{{jsxref("Error.prototype.name", "WebAssembly.CompileError.prototype.name")}}</dt>
+ <dd>エラー名。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.fileName", "WebAssembly.CompileError.prototype.fileName")}}</dt>
+ <dd>このエラーを発生させたファイルのパス。 {{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.lineNumber", "WebAssembly.CompileError.prototype.lineNumber")}}</dt>
+ <dd>このエラーを発生させたファイルの行番号。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.columnNumber", "WebAssembly.CompileError.prototype.columnNumber")}}</dt>
+ <dd>このエラーが発生した行の列番号。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.stack", "WebAssembly.CompileError.prototype.stack")}}</dt>
+ <dd>スタックトレース。{{jsxref("Error")}} から継承されます。</dd>
+</dl>
+
+<h2 id="メソッド">メソッド</h2>
+
+<p><em><code>CompileError</code> コンストラクタは自身のメソッドを持ちませんが、プロトタイプチェーンを通していくつかのメソッドを継承します。</em></p>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.toSource", "WebAssembly.CompileError.prototype.toSource()")}}</dt>
+ <dd>同じエラーを評価できるコードを返します。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.toString", "WebAssembly.CompileError.prototype.toString()")}}</dt>
+ <dd>指定された <code>Error</code> オブジェクトを表す文字列を返します。{{jsxref("Error")}} から継承されます。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<p>以下のスニペットで <code>CompileError</code> インスタンスを生成して、詳細をコンソールに表示します。</p>
+
+<pre class="brush: js">try {
+ throw new WebAssembly.CompileError('Hello', 'someFile', 10);
+} catch (e) {
+ console.log(e instanceof CompileError); // true
+ console.log(e.message); // "Hello"
+ console.log(e.name); // "CompileError"
+ console.log(e.fileName); // "someFile"
+ console.log(e.lineNumber); // 10
+ console.log(e.columnNumber); // 0
+ console.log(e.stack); // コードが実行された場所を返す
+}</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#constructor-properties-of-the-webassembly-object', 'WebAssembly constructors')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>WebAssembly の初回ドラフト定義。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard', 'NativeError')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td>標準の NativeError 型の定義。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{Compat("javascript.builtins.WebAssembly.CompileError")}}</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly のコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
+
+<dl>
+</dl>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html
new file mode 100644
index 0000000000..e3048ea38f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html
@@ -0,0 +1,77 @@
+---
+title: WebAssembly.compileStreaming()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p><strong><code>WebAssembly.compileStreaming()</code></strong> 関数はソースのストリームから直接 {{jsxref("WebAssembly.Module")}} にコンパイルします。この関数はモジュールをインスタンス化する前にコンパイルする必要がある場合に役立ちます (そうでない場合は、{{jsxref("WebAssembly.instantiateStreaming()")}} 関数の仕様が推奨されます)。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">Promise&lt;WebAssembly.Module&gt; WebAssembly.compileStreaming(<em>source</em>);</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><em>source</em></dt>
+ <dd>ストリーム、コンパイルする .wasm モジュールのソースコードを表す {{domxref("Response")}} オブジェクトか、それを fulfill するプロミス。 </dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>解決時にコンパイルされたモジュールを表す {{jsxref("WebAssembly.Module")}} を渡す <code>Promise</code> 。</p>
+
+<h3 id="例外">例外</h3>
+
+<ul>
+ <li><code>bufferSource</code> が <a href="/ja/docs/Web/JavaScript/Typed_arrays">型付き配列</a> でない場合、 {{jsxref("TypeError")}} がスローされます。</li>
+ <li>失敗した場合、プロミスは {{jsxref("WebAssembly.CompileError")}} を持って棄却されます。</li>
+</ul>
+
+<h2 id="例">例</h2>
+
+<p>次の例 (Github上のデモ <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/compile-streaming.html">compile-streaming.html</a> と、<a href="https://mdn.github.io/webassembly-examples/js-api-examples/compile-streaming.html">動作例</a> を参照してください) では、ソースから直接 .wasm モジュールをストリームして、 {{jsxref("WebAssembly.Module")}} オブジェクトにコンパイルしています。<code>compileStreaming()</code>  関数は {{domxref("Response")}} オブジェクトを渡すプロミスを受け取るので、直接 {{domxref("WindowOrWorkerGlobalScope.fetch()")}} の呼び出し結果を渡すことができます。</p>
+
+<pre class="brush: js">var importObject = { imports: { imported_func: arg =&gt; console.log(arg) } };
+
+WebAssembly.compileStreaming(fetch('simple.wasm'))
+.then(module =&gt; WebAssembly.instantiate(module, importObject))
+.then(instance =&gt; instance.exports.exported_func());</pre>
+
+<p>結果として受け取ったモジュールインスタンスはその後 {{jsxref("WebAssembly.instantiate()")}} を使用してインスタンス化され、エクスポートされた関数が実行されます。</p>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly Embedding', '#webassemblycompilestreaming', 'compileStreaming()')}}</td>
+ <td>{{Spec2('WebAssembly Embedding')}}</td>
+ <td>初回ドラフト定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.WebAssembly.compileStreaming")}}</p>
+</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssemblyのコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript APIを使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/global/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/global/index.html
new file mode 100644
index 0000000000..16817b0777
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/global/index.html
@@ -0,0 +1,118 @@
+---
+title: WebAssembly.Global
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Global
+tags:
+ - API
+ - Constructor
+ - JavaScript
+ - Reference
+ - WebAssembly
+ - global
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Global
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>WebAssembly.Global</code></strong> はグローバル変数として存在し、JavaScript または {{jsxref("WebAssembly.Module")}} インスタンスから参照することができます。これにより動的に複数のモジュールをリンクすることができます。</p>
+
+<h2 id="Constructor_Syntax" name="Constructor_Syntax">コンストラクターの文法</h2>
+
+<pre class="syntaxbox">var myGlobal = new WebAssembly.Global(<em>descriptor</em>, <em>value</em>);</pre>
+
+<h3 id="Parameters" name="Parameters">パラメーター</h3>
+
+<dl>
+ <dt><em>descriptor</em></dt>
+ <dd><code>GlobalDescriptor</code> 辞書オブジェクト、2 つの要素を持っている:
+ <ul>
+ <li><code>value</code>: {{domxref("USVString")}} はグローバルデータ形式を表し値として <code>i32</code>、<code>i64</code>、<code>f32</code>、<code>f64</code> のうち一つを取ります。</li>
+ <li><code>mutable</code>: グローバルがミュータブルかどうかの真偽値です。デフォルトでは <code>false</code> です。</li>
+ </ul>
+ </dd>
+ <dt><em>value</em></dt>
+ <dd>変数が保持する値です。変数のデータ型に合う限りどんな値でも取れます。もしも何の値も渡されないと、<a href="https://webassembly.github.io/spec/js-api/#defaultvalue"><code>DefaultValue</code> algorithm</a> で指定した時の様な 型ありの 0 が使われます。</dd>
+</dl>
+
+<h2 id="Function_properties_of_the_Global_constructor" name="Function_properties_of_the_Global_constructor">グローバルコンストラクターによる関数プロパティ</h2>
+
+<p>無し</p>
+
+<h2 id="Global_instances" name="Global_instances">グローバルインスタンス</h2>
+
+<p>すべてのグローバルインスタンスは <code>Global()</code> コンストラクターのプロパティオブジェクトを受け継ぐ — これによりすべての <code>Global</code> インスタンスを変更できる</p>
+
+<h3 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h3>
+
+<p>{{page('/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/prototype', 'Properties')}}</p>
+
+<h3 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h3>
+
+<p>{{page('/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/prototype', 'Methods')}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>以下の例では新しいグローバルインスタンスは <code>WebAssembly.Global()</code> コンストラクターを用いて初期化され、初期値 0 のミュータブルな <code>i32</code> 型として定義されます。</p>
+
+<p>その後この値は、<code>Global.value</code> プロパティを使うことによって <code>42</code> に、<code>global.wasm</code> モジュールから公開された <code>incGlobal()</code> 関数 (入力に限らず 1 を加算する) を使うことによって <code>43</code> になります。</p>
+
+<pre class="brush: js">const output = document.getElementById('output');
+
+function assertEq(msg, got, expected) {
+ output.innerHTML += `Testing ${msg}: `;
+ if (got !== expected)
+ output.innerHTML += `FAIL!&lt;br&gt;Got: ${got}&lt;br&gt;Expected: ${expected}&lt;br&gt;`;
+ else
+ output.innerHTML += `SUCCESS! Got: ${got}&lt;br&gt;`;
+}
+
+assertEq("WebAssembly.Global exists", typeof WebAssembly.Global, "function");
+
+const global = new WebAssembly.Global({value:'i32', mutable:true}, 0);
+
+WebAssembly.instantiateStreaming(fetch('global.wasm'), { js: { global } })
+.then(({instance}) =&gt; {
+ assertEq("getting initial value from wasm", instance.exports.getGlobal(), 0);
+ global.value = 42;
+ assertEq("getting JS-updated value from wasm", instance.exports.getGlobal(), 42);
+ instance.exports.incGlobal();
+ assertEq("getting wasm-updated value from JS", global.value, 43);
+});</pre>
+
+<div class="note">
+<p><strong>メモ</strong>: <a href="https://mdn.github.io/webassembly-examples/js-api-examples/global.html">GitHub 上で動くデモ</a>が試せます。<a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/global.html">ソースコード</a>も確認してみてください。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#globals', 'WebAssembly.Global()')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>初回ドラフト定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.WebAssembly.Global")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">参考</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly とは何か</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+ <li><a href="https://github.com/WebAssembly/mutable-global/blob/master/proposals/mutable-global/Overview.md">Import/Export mutable globals proposal</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/index.html
new file mode 100644
index 0000000000..721d647799
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/index.html
@@ -0,0 +1,116 @@
+---
+title: WebAssembly
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly
+tags:
+ - API
+ - JavaScript
+ - Namespace
+ - Object
+ - Reference
+ - WebAssembly
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly
+---
+<div>{{JSRef}}{{SeeCompatTable}}</div>
+
+<p><strong><code>WebAssembly</code></strong> JavaScript オブジェクトは全ての <a href="/ja/docs/WebAssembly">WebAssembly</a> に関連する機能の名前空間として振る舞います。</p>
+
+<p>他のグローバルオブジェクトとは異なり、<code>WebAssembly</code> はコンストラクタではありません (関数オブジェクトではない) 。数学定数、関数の名前空間である {{jsxref("Math")}} や 、国際化コンストラクタと他の言語に依存する関数のための {{jsxref("Intl")}} と同等のものです。</p>
+
+<h2 id="概要">概要</h2>
+
+<p><code>WebAssembly</code> オブジェクトの主な用途は次のとおりです:</p>
+
+<ul>
+ <li>{{jsxref("WebAssembly.instantiate()")}} 関数を用いて WebAssembly コードをロードします。</li>
+ <li>{{jsxref("WebAssembly.Memory()")}}/{{jsxref("WebAssembly.Table()")}} コンストラクタ経由で新しいメモリやテーブルを生成します。</li>
+ <li>{{jsxref("WebAssembly.CompileError()")}}/{{jsxref("WebAssembly.LinkError()")}}/{{jsxref("WebAssembly.RuntimeError()")}} コンストラクタを経由して、WebAssembly で発生するエラーを処理する機能を提供します、</li>
+</ul>
+
+<h2 id="メソッド">メソッド</h2>
+
+<dl>
+ <dt>{{jsxref("WebAssembly.instantiate()")}}</dt>
+ <dd>WebAssembly コードをコンパイル、インスタンス化するための主要な API で、 <code>Module</code> と、その最初の <code>Instance</code> を返します。</dd>
+ <dt>{{jsxref("WebAssembly.instantiateStreaming()")}}</dt>
+ <dd>ソースのストリームから直接 WebAssembly モジュールをコンパイル、インスタンス化し、 <code>Module</code> と、その最初の <code>Instance</code> を返します。</dd>
+ <dt>{{jsxref("WebAssembly.compile()")}}</dt>
+ <dd>{{jsxref("WebAssembly.Module")}} を用いて WebAssembly バイナリコードからコンパイルします。インスタンス化は別ステップとして分離されます。</dd>
+ <dt>{{jsxref("WebAssembly.compileStreaming()")}}</dt>
+ <dd>ソースのストリームから直接 {{jsxref("WebAssembly.Module")}} にコンパイルします。インスタンス化は別ステップとして分離されます。</dd>
+ <dt>{{jsxref("WebAssembly.validate()")}}</dt>
+ <dd>WebAssembly バイナリコードの型付き配列を検証し、バイト列が有効な WebAssembly コードか (<code>true</code>) 否か (<code>false</code>) を返します。</dd>
+</dl>
+
+<h2 id="コンストラクタ">コンストラクタ</h2>
+
+<dl>
+ <dt>{{jsxref("WebAssembly.Module()")}}</dt>
+ <dd>新しい WebAssembly <code>Module</code> オブジェクトを生成します。</dd>
+ <dt>{{jsxref("WebAssembly.Instance()")}}</dt>
+ <dd>新しい WebAssembly <code>Instance</code> オブジェクトを生成します。</dd>
+ <dt>{{jsxref("WebAssembly.Memory()")}}</dt>
+ <dd>新しい WebAssembly <code>Memory</code> オブジェクトを生成します。</dd>
+ <dt>{{jsxref("WebAssembly.Table()")}}</dt>
+ <dd>新しい WebAssembly <code>Table</code> オブジェクトを生成します。</dd>
+ <dt>{{jsxref("WebAssembly.CompileError()")}}</dt>
+ <dd>新しい WebAssembly <code>CompileError</code> オブジェクトを生成します。</dd>
+ <dt>{{jsxref("WebAssembly.LinkError()")}}</dt>
+ <dd>新しい WebAssembly <code>LinkError</code> オブジェクトを生成します。</dd>
+ <dt>{{jsxref("WebAssembly.RuntimeError()")}}</dt>
+ <dd>新しい WebAssembly <code>RuntimeError</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<p>fetch を使用して WebAssembly バイトコードをフェッチした後、{{jsxref("WebAssembly.instantiate()")}} 関数を使用してモジュールをコンパイル、インスタンス化します。その過程で、WebAssembly モジュールに JavaScript の関数をインポートします。このプロミスは解決時に <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module">Module</a></code> と <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance">Instance</a></code> を含むオブジェクト (<code>result</code>) を渡します。次に、<code>Instance</code> からエクスポートされている <a href="/ja/docs/WebAssembly/Exported_functions">エクスポートされた WebAssembly 関数</a> を呼び出します。</p>
+
+<pre class="brush: js notranslate">var importObject = {
+ imports: {
+ imported_func: function(arg) {
+ console.log(arg);
+ }
+ }
+};
+
+fetch('simple.wasm').then(response =&gt;
+  response.arrayBuffer()
+).then(bytes =&gt;
+  WebAssembly.instantiate(bytes, importObject)
+).then(result =&gt;
+  result.instance.exports.exported_func()
+);</pre>
+
+<div class="note">
+<p><strong>注</strong>: GitHub上の例 (<a href="https://mdn.github.io/webassembly-examples/js-api-examples/">動作例</a>) の<a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/index.html">index.html</a>では、我々で定義した <code><a href="https://github.com/mdn/webassembly-examples/blob/master/wasm-utils.js#L1">fetchAndInstantiate()</a></code> ライブラリ関数を使用しています。</p>
+</div>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#the-webassembly-object', 'WebAssembly')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>初回ドラフト定義。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{Compat("javascript.builtins.WebAssembly")}}</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly のコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/instance/exports/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/instance/exports/index.html
new file mode 100644
index 0000000000..1e7a2bb83c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/instance/exports/index.html
@@ -0,0 +1,69 @@
+---
+title: WebAssembly.Instance.prototype.exports
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/exports
+tags:
+ - API
+ - JavaScript
+ - Property
+ - Reference
+ - WebAssembly
+ - exports
+ - instance
+ - プロパティ
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/exports
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>exports</code></strong> は {{jsxref("WebAssembly.Instance")}} オブジェクトプロトタイプの読み取り専用プロパティで、 WebAssembly モジュールインスタンスからエクスポートされたすべての関数をメンバ-として持つオブジェクトを返します。これらは、 JavaScript からアクセスして使用することができます。</p>
+
+<pre class="syntaxbox">instance.exports</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>fetch を使用して WebAssembly バイトコードを読み取った後、 {{jsxref("WebAssembly.instantiate()")}} 関数を使用してモジュールをコンパイル、インスタンス化します。このプロセスの中で、 JavaScript 関数を WebAssembly モジュールにインポートします。その後、 <code>Instance</code> からエクスポートされた<a href="/ja/docs/WebAssembly/Exported_functions">エクスポート済み WebAssembly 関数</a> を呼び出します。</p>
+
+<pre class="brush: js">var importObject = {
+ imports: {
+ imported_func: function(arg) {
+ console.log(arg);
+ }
+ }
+};
+
+WebAssembly.instantiateStreaming(fetch('simple.wasm'), importObject)
+.then(obj =&gt; obj.instance.exports.exported_func());</pre>
+
+<div class="note">
+<p><strong>メモ</strong>: この例は GitHub 上の <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/instantiate-streaming.html">instantiate-streaming.html</a> (<a href="https://mdn.github.io/webassembly-examples/js-api-examples/instantiate-streaming.html">ライブでも</a>) で見ることができます。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-instance-exports', 'WebAssembly.Instance: exports')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Instance.exports")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/instance/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/instance/index.html
new file mode 100644
index 0000000000..2f8ad23054
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/instance/index.html
@@ -0,0 +1,69 @@
+---
+title: WebAssembly.Instance
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance
+tags:
+ - Class
+ - JavaScript
+ - Reference
+ - WebAssembly
+ - クラス
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>WebAssembly.Instance</code></strong> オブジェクトはステートフルで、実行可能な {{jsxref("WebAssembly.Module")}} のインスタンスです。 <code>Instance</code> オブジェクトには JavaScript から WebAssembly コードを呼び出すことができるすべての<a href="/en-US/docs/WebAssembly/Exported_functions">エクスポートされた WebAssembly 関数</a>が含まれます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("WebAssembly.Instance()")}}</dt>
+ <dd>新しい <code>Instance</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Instance_のインスタンス"><code>Instance</code> のインスタンス</h2>
+
+<p>全ての <code>Instance</code> インスタンスは <code>Instance()</code> コンストラクターのプロトタイプオブジェクトを継承します。これは全ての <code>Instance</code> インスタンスに影響するように変更可能です。</p>
+
+<h3 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h3>
+
+<dl>
+ <dt><code>Instance.prototype.constructor</code></dt>
+ <dd>このオブジェクトインスタンスを生成した関数を返します。既定では、これは {{jsxref("WebAssembly.Instance()")}} コンストラクターです。</dd>
+ <dt>{{jsxref("WebAssembly/Instance/exports", "Instance.prototype.exports")}} {{readonlyinline}}</dt>
+ <dd>メンバーとして WebAssembly モジュールのインスタンスからエクスポートされたすべての関数を含むオブジェクトを返します。 JavaScript からアクセスしたり使用したりすることができます。</dd>
+</dl>
+
+<h3 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h3>
+
+<p>なし。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#instances', 'Instance')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Memory")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/instance/instance/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/instance/instance/index.html
new file mode 100644
index 0000000000..117e82225f
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/instance/instance/index.html
@@ -0,0 +1,64 @@
+---
+title: WebAssembly.Instance() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/Instance
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - WebAssembly
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/Instance
+---
+<div>{{JSRef}}</div>
+
+<p> <strong><code>WebAssembly.Instance()</code></strong> コンストラクターは、新しい <code>Instance</code> オブジェクトを生成し、これはステートフルで実行可能な {{jsxref("WebAssembly.Module")}} のインスタンスです。</p>
+
+<p> <code>WebAssembly.Instance()</code> コンストラクター関数は同期的に {{jsxref("WebAssembly.Module")}} オブジェクトをインスタンス化することができます。しかし、主な <code>Instance</code> の取得方法は非同期の {{jsxref("WebAssembly.instantiateStreaming()")}} 関数を使用する方法です。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<div class="warning">
+<p><strong>重要</strong>: 巨大なモジュールのインスタンス化は高コストになる可能性があります。開発者が同期的な <code>Instance()</code> コンストラクターを使用するのは、絶対に必要な場合のみにするべきです。他のすべての場合で非同期の {{jsxref("WebAssembly.instantiateStreaming()")}} メソッドの使用が推奨されます。</p>
+</div>
+
+<pre class="syntaxbox">new WebAssembly.Instance(<em>module</em>, <em>importObject</em>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><em>module</em></dt>
+ <dd>インスタンス化する {{jsxref("WebAssembly.Module")}} オブジェクト。</dd>
+ <dt><em>importObject</em> {{optional_inline}}</dt>
+ <dd>関数や {{jsxref("WebAssembly.Memory")}} オブジェクトなどの新しく生成される <code>Instance</code> にインポートされる値を持つオブジェクト。モジュール内で宣言されたインポートそれぞれに対応するプロパティが存在する必要があります。そうでない場合、 {{jsxref("WebAssembly.LinkError")}} が発生します。</dd>
+</dl>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-instance-instance', 'Instance')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Instance.Instance")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/instance/prototype/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/instance/prototype/index.html
new file mode 100644
index 0000000000..f1f8361b0c
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/instance/prototype/index.html
@@ -0,0 +1,63 @@
+---
+title: WebAssembly.Instance.prototype
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/prototype
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p><code><strong>WebAssembly.Instance</strong></code><strong><code>.prototype</code></strong> プロパティは {{jsxref("WebAssembly.Instance()")}} コンストラクタのプロトタイプを表します。</p>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="説明">説明</h2>
+
+<p>全ての {{jsxref("WebAssembly.Instance")}} インスタンスは <code>Instance.prototype</code> を継承します。{{jsxref("WebAssembly.Instance()")}} コンストラクタのプロトタイプオブジェクトは全ての {{jsxref( "WebAssembly.Instance")}} インスタンスに影響するように変更可能です。 </p>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<dl>
+ <dt><code>Instance.prototype.constructor</code></dt>
+ <dd>このオブジェクトのインスタンスを生成した関数を返します。デフォルトでは  {{jsxref("WebAssembly.Instance()")}} コンストラクタです。</dd>
+ <dt><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/exports">Instance.prototype.exports</a></code> {{readonlyinline}}</dt>
+ <dd>WebAssembly モジュールインスタンスからエクスポートされた全ての関数をメンバとして持つオブジェクトを返します。これらは、JavaScriptからアクセスして使用することができます。</dd>
+</dl>
+
+<h2 id="メソッド">メソッド</h2>
+
+<p>なし。</p>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#webassemblymodule-objects', 'WebAssembly.Module()')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>初回ドラフト定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.WebAssembly.Instance.prototype")}}</p>
+</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WebAssembly.Instance()")}}</li>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssemblyのコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/instantiate/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/instantiate/index.html
new file mode 100644
index 0000000000..4d42c91ee5
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/instantiate/index.html
@@ -0,0 +1,171 @@
+---
+title: WebAssembly.instantiate()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate
+tags:
+ - API
+ - JavaScript
+ - Method
+ - Object
+ - Reference
+ - WebAssembly
+ - instantiate
+ - オブジェクト
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>WebAssembly.instantiate()</code></strong> 関数は WebAssembly コードをコンパイルおよびインスタンス化することができます。この関数は2つのオーバーロードを持ちます。</p>
+
+<ul>
+ <li>第一のオーバーロードは、 <a href="/ja/docs/Web/JavaScript/Typed_arrays">型付き配列</a> または {{jsxref("ArrayBuffer")}} で表現された WebAssembly バイナリコードを受け取り、そして、コンパイルとインスタンス化の両方を1ステップで行います。返された <code>Promise</code> は解決時にコンパイルされた {{jsxref("WebAssembly.Module")}} と最初の {{jsxref("WebAssembly.Instance")}} を渡します。</li>
+ <li>第二のオーバーロードは、すでにコンパイルされた {{jsxref("WebAssembly.Module")}} を受け取り、解決時にその <code>Module</code> の <code>Instance</code> を渡す <code>Promise</code> を返します。このオーバーロードは、すでに <code>Module</code> がコンパイル済みの場合に有用です。</li>
+</ul>
+
+<div class="warning">
+<p><strong>重要</strong>: このメソッドは wasm モジュールの読み込みとインスタンス化に最も効率で黄な方法ではありません。可能であれば、代わりにもっと新しい {{jsxref("WebAssembly.instantiateStreaming()")}} メソッドを使用すれば、生のバイトコードから直接モジュールの読み込み、コンパイル、インスタンス化を1ステップで行うことができ、 {{jsxref("ArrayBuffer")}} へ変換する必要がありません。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<h3 id="Primary_overload_—_taking_wasm_binary_code" name="Primary_overload_—_taking_wasm_binary_code">第一のオーバーロード — wasm バイナリコード</h3>
+
+<pre class="syntaxbox notranslate">Promise&lt;ResultObject&gt; WebAssembly.instantiate(bufferSource, importObject);
+</pre>
+
+<h4 id="Parameters" name="Parameters">引数</h4>
+
+<dl>
+ <dt><em>bufferSource</em></dt>
+ <dd>コンパイルする .wasm モジュールを含む <a href="/ja/docs/Web/JavaScript/Typed_arrays">型付き配列</a> または {{jsxref("ArrayBuffer")}}。</dd>
+ <dt><em>importObject</em> {{optional_inline}}</dt>
+ <dd>関数や {{jsxref("WebAssembly.Memory")}} オブジェクトなどの新しく生成される <code>Instance</code> にインポートされる値を持つオブジェクト。モジュール内で宣言されたインポートそれぞれに対応するプロパティが存在する必要があります。そうでない場合、 {{jsxref("WebAssembly.LinkError")}} がスローされます。</dd>
+</dl>
+
+<h4 id="Return_value" name="Return_value">返値</h4>
+
+<p>解決時に次の2つのフィールドを持つ <code>ResultObject</code> を渡す <code>Promise</code>。</p>
+
+<ul>
+ <li><code>module</code>: コンパイルされた {{jsxref("WebAssembly.Module")}} オブジェクト。この <code>Module</code> は再度インスタンス化することや、 {{domxref("Worker.postMessage", "postMessage()")}} 経由で共有したり、 <a href="/ja/docs/WebAssembly/Caching_modules">IndexedDB にキャッシュ</a>することができます。</li>
+ <li><code>instance</code>: {{jsxref("WebAssembly.Instance")}} オブジェクトで、すべての <a href="/en-US/docs/WebAssembly/Exported_functions">エクスポートされた WebAssembly 関数</a> を含む。</li>
+</ul>
+
+<h4 id="Exceptions" name="Exceptions">例外</h4>
+
+<ul>
+ <li>いずれかの引数が正しい型、または構造でない場合、 {{jsxref("TypeError")}} がスローされます。</li>
+ <li>失敗した場合、プロミスは失敗の原因に応じて {{jsxref("WebAssembly.CompileError")}}, {{jsxref("WebAssembly.LinkError")}}, {{jsxref("WebAssembly.RuntimeError")}} をもって棄却されます。</li>
+</ul>
+
+<h3 id="Secondary_overload_—_taking_a_module_object_instance" name="Secondary_overload_—_taking_a_module_object_instance">第二のオーバーロード — モジュールオブジェクトのインスタンスを取る</h3>
+
+<pre class="syntaxbox notranslate">Promise&lt;WebAssembly.Instance&gt; WebAssembly.instantiate(module, importObject);
+</pre>
+
+<h4 id="Parameters_2" name="Parameters_2">引数</h4>
+
+<dl>
+ <dt><em>module</em></dt>
+ <dd>インスタンス化する {{jsxref("WebAssembly.Module")}} オブジェクト。</dd>
+ <dt><em>importObject</em> {{optional_inline}}</dt>
+ <dd>関数や {{jsxref("WebAssembly.Memory")}} オブジェクトなどの新しく生成される <code>Instance</code> にインポートされる値を含むオブジェクト。宣言されたモジュールのインポートごとに1つの一致するプロパティが存在する必要があります。そうでない場合、 {{jsxref("WebAssembly.LinkError")}} がスローされます。</dd>
+</dl>
+
+<h4 id="Return_value_2" name="Return_value_2">返値</h4>
+
+<p>解決時に {{jsxref("WebAssembly.Instance")}} オブジェクトを渡す <code>Promise</code> 。</p>
+
+<h4 id="Exceptions_2" name="Exceptions_2">例外</h4>
+
+<ul>
+ <li>いずれかの引数が正しくない型や構造のオブジェクトの場合、 {{jsxref("TypeError")}} がスローされます。</li>
+ <li>失敗した場合、プロミスは失敗の原因に応じて {{jsxref("WebAssembly.CompileError")}}, {{jsxref("WebAssembly.LinkError")}}, {{jsxref("WebAssembly.RuntimeError")}} をもって棄却されます。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p><strong>注</strong>: おそらく多くの場合は {{jsxref("WebAssembly.instantiateStreaming()")}} を使用したほうが、 <code>instantiate()</code> よりも効率的でしょう。</p>
+
+<h3 id="First_overload_example" name="First_overload_example">第一のオーバーロードの例</h3>
+
+<p>fetch を使用して WebAssembly バイトコードを読み込んだ後、 {{jsxref("WebAssembly.instantiate()")}} 関数を使用してモジュールをコンパイル、インスタンス化し、その処理中に JavaScript の関数を WebAssembly モジュールにインポートします。次に、 <code>Instance</code> によってエクスポートされた<a href="/ja/docs/WebAssembly/Exported_functions">エクスポート済み WebAssembly 関数</a>を呼び出します。</p>
+
+<pre class="brush: js notranslate">var importObject = {
+ imports: {
+ imported_func: function(arg) {
+ console.log(arg);
+ }
+ }
+};
+
+fetch('simple.wasm').then(response =&gt;
+  response.arrayBuffer()
+).then(bytes =&gt;
+  WebAssembly.instantiate(bytes, importObject)
+).then(result =&gt;
+  result.instance.exports.exported_func()
+);</pre>
+
+<div class="note">
+<p><strong>注</strong>: この例は Github 上の <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/index.html">index.html</a> でも見ることができます (<a href="https://mdn.github.io/webassembly-examples/js-api-examples/">動作例</a>)。</p>
+</div>
+
+<h3 id="Second_overload_example" name="Second_overload_example">第二のオーバーロードの例</h3>
+
+<p>次の例 (GitHub上の <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/index-compile.html">index-compile.html</a> デモを参照、 そして <a href="https://mdn.github.io/webassembly-examples/js-api-examples/index-compile.html">動作例</a> も確認してください) では、読み込まれた simple.wasm バイトコードを {{jsxref("WebAssembly.compileStreaming()")}} メソッドを使用してコンパイルし、 {{domxref("Worker.postMessage", "postMessage()")}} を使用して<a href="/ja/docs/Web/API/Web_Workers_API">ワーカー</a>に送信しています。</p>
+
+<pre class="brush: js notranslate">var worker = new Worker("wasm_worker.js");
+
+WebAssembly.compileStreaming(fetch('simple.wasm'))
+.then(mod =&gt;
+  worker.postMessage(mod)
+);</pre>
+
+<p>ワーカーでは (<code><a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/wasm_worker.js">wasm_worker.js</a>を参照</code>) モジュールで使用するためのインポートオブジェクトを定義して、メインスレッドからモジュールを受け取るイベントハンドラーを設定し、 {{jsxref("WebAssembly.instantiate()")}} メソッドを使用してインスタンスを生成し、エクスポートされた関数を呼び出します。</p>
+
+<pre class="brush: js notranslate">var importObject = {
+ imports: {
+ imported_func: function(arg) {
+ console.log(arg);
+ }
+ }
+};
+
+onmessage = function(e) {
+ console.log('module received from main thread');
+ var mod = e.data;
+
+ WebAssembly.instantiate(mod, importObject).then(function(instance) {
+ instance.exports.exported_func();
+ });
+};</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-webassembly-instantiate', 'instantiate()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<div>{{Compat("javascript.builtins.WebAssembly.instantiate")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/instantiatestreaming/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/instantiatestreaming/index.html
new file mode 100644
index 0000000000..fb3ba701c1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/instantiatestreaming/index.html
@@ -0,0 +1,83 @@
+---
+title: WebAssembly.instantiateStreaming()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p><strong><code>WebAssembly.instantiateStreaming()</code></strong> 関数はソースのストリームから直接 WebAssembly モジュールをコンパイルしてインスタンス化します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">Promise&lt;ResultObject&gt; WebAssembly.instantiateStreaming(<em>source</em>, <em>importObject</em>);</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><em>source</em></dt>
+ <dd>コンパイルしてインスタンス化する .wasm モジュールのソースを表す {{domxref("Response")}} オブジェクトか、それをfulfillするプロミス。</dd>
+ <dt><em>importObject</em> {{optional_inline}}</dt>
+ <dd>関数や {{jsxref("WebAssembly.Module")}} オブジェクトなどの新しく生成される <code>Instance</code> にインポートされる値を持つオブジェクト。モジュール内で宣言されたインポートそれぞれに対応するプロパティが存在する必要があります。そうでない場合、{{jsxref("WebAssembly.LinkError")}} がスローされます。</dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>解決時に次の2つのフィールドを持つ <code>ResultObject</code> を渡す <code>Promise</code>:</p>
+
+<ul>
+ <li><code>module</code>: コンパイルされた {{jsxref("WebAssembly.Module")}} オブジェクト。この <code>Module</code> は再度インスタンス化することや、<a href="/en-US/docs/Web/API/Worker/postMessage">postMessage()</a> 経由で共有したり、<a href="/en-US/docs/WebAssembly/Caching_modules">IndexedDBにキャッシュ</a>することができます。</li>
+ <li><code>instance</code>: 全ての <a href="/en-US/docs/WebAssembly/Exported_functions">エクスポートされたWebAssembly関数</a> を含む {{jsxref("WebAssembly.Instance")}} オブジェクト。</li>
+</ul>
+
+<h3 id="例外">例外</h3>
+
+<ul>
+ <li>いずれかのパラメータが正しい型、または構造でない場合、{{jsxref("TypeError")}} がスローされます。</li>
+ <li>失敗した場合、プロミスは失敗の原因に応じて {{jsxref("WebAssembly.CompileError")}}、{{jsxref("WebAssembly.LinkError")}} または {{jsxref("WebAssembly.RuntimeError")}} を持って棄却されます。</li>
+</ul>
+
+<h2 id="例">例</h2>
+
+<p>次の例 (Github上のデモ <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/instantiate-streaming.html">instantiate-streaming.html</a> と、 <a href="https://mdn.github.io/webassembly-examples/js-api-examples/instantiate-streaming.html">動作例</a> を参照してください) では、ソースから .wasm モジュールを直接コンパイルしてインスタンス化しています。プロミスは <code>ResultObject</code> で fulfill されます。<code>instantiateStreaming()</code>  関数は {{domxref("Response")}} オブジェクトを渡すプロミスを受け取るので、直接 {{domxref("WindowOrWorkerGlobalScope.fetch()")}} 呼び出し結果を渡すことができます。</p>
+
+<pre class="brush: js">var importObject = { imports: { imported_func: arg =&gt; console.log(arg) } };
+
+WebAssembly.instantiateStreaming(fetch('simple.wasm'), importObject)
+.then(obj =&gt; obj.instance.exports.exported_func());</pre>
+
+<p>最後に <code>ResultObject</code> が持つ instance メンバーにアクセスして、エクスポートされた関数を実行しています。</p>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly Embedding', '#webassemblyinstantiatestreaming', 'instantiateStreaming()')}}</td>
+ <td>{{Spec2('WebAssembly Embedding')}}</td>
+ <td>初回ドラフト定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.WebAssembly.instantiateStreaming")}}</p>
+</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssemblyのコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/linkerror/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/linkerror/index.html
new file mode 100644
index 0000000000..df9758010e
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/linkerror/index.html
@@ -0,0 +1,107 @@
+---
+title: WebAssembly.LinkError()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p><code><strong>WebAssembly.LinkError()</strong></code> コンストラクタは WebAssembly <code>LinkError</code> オブジェクトを生成します。これはモジュールのインスタンス化中にエラーが発生したことを示します (スタート関数からの <a href="http://webassembly.org/docs/semantics/#traps">トラップ</a> も含みます) 。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">new WebAssembly.LinkError(<var>message</var>, <var>fileName</var>, <var>lineNumber</var>)</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>message</code> {{optional_inline}}</dt>
+ <dd>ヒューマンリーダブルなエラーの説明。</dd>
+ <dt><code>fileName</code> {{optional_inline}}{{non-standard_inline}}</dt>
+ <dd>例外の原因となったコードを含むファイルの名前。</dd>
+ <dt><code>lineNumber</code> {{optional_inline}}{{non-standard_inline}}</dt>
+ <dd>例外の原因となったコードの行番号。</dd>
+</dl>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<p><em><code>LinkError</code> コンストラクタは自身のプロパティを持ちませんが、プロトタイプチェーンを通していくつかのプロパティを継承します。</em></p>
+
+<dl>
+ <dt><code>WebAssembly.LinkError.prototype.constructor</code></dt>
+ <dd>インスタンスのプロトタイプを生成した関数を示します。</dd>
+ <dt>{{jsxref("Error.prototype.message", "WebAssembly.LinkError.prototype.message")}}</dt>
+ <dd>エラーメッセージ。ECMA-262 では {{jsxref("URIError")}} は自身の <code>message</code> プロパティを提供する必要がありますが、<a href="/en-US/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> では {{jsxref("Error.prototype.message")}} を継承します。</dd>
+ <dt>{{jsxref("Error.prototype.name", "WebAssembly.LinkError.prototype.name")}}</dt>
+ <dd>エラー名。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.fileName", "WebAssembly.LinkError.prototype.fileName")}}</dt>
+ <dd>このエラーを発生させたファイルのパス。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.lineNumber", "WebAssembly.LinkError.prototype.lineNumber")}}</dt>
+ <dd>このエラーを発生させたファイルの行番号。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.columnNumber", "WebAssembly.LinkError.prototype.columnNumber")}}</dt>
+ <dd>このエラーが発生した行の列番号。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.stack", "WebAssembly.LinkError.prototype.stack")}}</dt>
+ <dd>スタックトレース。{{jsxref("Error")}} から継承されます。</dd>
+</dl>
+
+<h2 id="メソッド">メソッド</h2>
+
+<p><em><code>LinkError</code> コンストラクタは自身のメソッドを持ちませんが、プロトタイプチェーンを通していくつかのメソッドを継承します。</em></p>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.toSource", "WebAssembly.LinkError.prototype.toSource()")}}</dt>
+ <dd>同じエラーを評価できるコードを返します。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.toString", "WebAssembly.LinkError.prototype.toString()")}}</dt>
+ <dd>指定された <code>Error</code> オブジェクトを表す文字列を返します。{{jsxref("Error")}} から継承されます。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<p>以下のスニペットで <code>LinkError</code> インスタンスを生成して、詳細をコンソールに表示します。</p>
+
+<pre class="brush: js">try {
+ throw new WebAssembly.LinkError('Hello', 'someFile', 10);
+} catch (e) {
+ console.log(e instanceof LinkError); // true
+ console.log(e.message); // "Hello"
+ console.log(e.name); // "LinkError"
+ console.log(e.fileName); // "someFile"
+ console.log(e.lineNumber); // 10
+ console.log(e.columnNumber); // 0
+ console.log(e.stack); // コードが実行された場所を返す
+}</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#constructor-properties-of-the-webassembly-object', 'WebAssembly constructors')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>WebAssembly の初回ドラフト定義。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard', 'NativeError')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td>標準の NativeError 型の定義。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{Compat("javascript.builtins.WebAssembly.LinkError")}}</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly のコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.html
new file mode 100644
index 0000000000..edf93b9c7b
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.html
@@ -0,0 +1,62 @@
+---
+title: WebAssembly.Memory.prototype.buffer
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer
+tags:
+ - API
+ - Buffer
+ - JavaScript
+ - Property
+ - Reference
+ - WebAssembly
+ - memory
+ - プロパティ
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>buffer</code></strong> は {{jsxref("WebAssembly.Memory")}} オブジェクトのプロトタイププロパティで、メモリに含まれるバッファーを返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>次の例では (GitHub 上の <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/memory.html">memory.html</a> および<a href="https://mdn.github.io/webassembly-examples/js-api-examples/memory.html">ライブデモ版</a> もご覧ください)、 memory.wasm バイトコードを {{jsxref("WebAssembly.instantiateStreaming()")}} メソッドを使用して読み込みんでインスタンス化し、その上の行で生成されたメモリにインポートします。それから、メモリにいくつかの値を格納し、関数をエクスポートして使用し、いくつかの値を合計します。</p>
+
+<pre class="brush: js">WebAssembly.instantiateStreaming(fetch('memory.wasm'), { js: { mem: memory } })
+.then(obj =&gt; {
+  var i32 = new Uint32Array(memory.buffer);
+  for (var i = 0; i &lt; 10; i++) {
+    i32[i] = i;
+  }
+  var sum = obj.instance.exports.accumulate(0, 10);
+  console.log(sum);
+});</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-memory-buffer', 'buffer')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Memory.buffer")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.html
new file mode 100644
index 0000000000..28df2da77d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.html
@@ -0,0 +1,80 @@
+---
+title: WebAssembly.Memory.prototype.grow()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow
+tags:
+ - API
+ - JavaScript
+ - Method
+ - Reference
+ - WebAssembly
+ - grow
+ - memory
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>grow()</code></strong> は {{jsxref("WebAssembly.Memory")}} オブジェクトのプロトタイプメソッドで、指定した WebAssembly ページの数だけメモリインスタンスの大きさを拡張します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">memory.grow(<em>number</em>);
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><em>number</em></dt>
+ <dd>メモリを拡大する WebAssembly ページ数 (それぞれは 64KiB の大きさ)。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>以前のメモリの大きさを、 WebAssembly ページ単位で返します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>以下の例では、新しい WebAssembly メモリインスタンスを初期サイズ1ページ (64KiB)、最大サイズ10ページ (640KiB) で作成します。</p>
+
+<pre class="brush: js">var memory = new WebAssembly.Memory({initial:1, maximum:10});</pre>
+
+<p>それから、インスタンスを1ページ分拡張することができます。</p>
+
+<pre class="brush: js">const bytesPerPage = 64 * 1024;
+console.log(memory.buffer.byteLength / bytesPerPage); // "1"
+console.log(memory.grow(1)); // "1"
+console.log(memory.buffer.byteLength / bytesPerPage); // "2"
+</pre>
+
+<p>なお、ここでの <code>grow()</code> の返値は直前の WebAssembly ページ数です。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-memory-grow', 'grow()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Memory.grow")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/memory/index.html
new file mode 100644
index 0000000000..39a3a1ddea
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/memory/index.html
@@ -0,0 +1,91 @@
+---
+title: WebAssembly.Memory()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory
+tags:
+ - Class
+ - JavaScript
+ - Reference
+ - WebAssembly
+ - クラス
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>WebAssembly.Memory</strong></code> オブジェクトは {{jsxref("WebAssembly/Memory/buffer","buffer")}} プロパティを持ち、これはサイズ変更可能な {{jsxref("ArrayBuffer")}} で、 WebAssembly <code>Instance</code> からアクセスする生のバイト列のメモリを持ちます。</p>
+
+<p>JavaScript または WebAssembly コードから生成されたメモリは JavaScript と WebAssembly のどちらからもアクセス、変更が可能になります。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("WebAssembly.Memory()")}}</dt>
+ <dd>新しい <code>Memory</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Memory_インスタンス"><code>Memory</code> インスタンス</h2>
+
+<p>全ての <code>Memory</code> インスタンスは <code>Memory()</code> コンストラクターの<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/prototype">プロトタイプオブジェクト</a>を継承しています。これは全ての <code>Memory</code> インスタンスに影響するように変更可能です。</p>
+
+<h3 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h3>
+
+<dl>
+ <dt><code>Memory.prototype.constructor</code></dt>
+ <dd>このオブジェクトのインスタンスを生成した関数を返します。既定では {{jsxref("WebAssembly.Memory()")}} コンストラクターです。</dd>
+ <dt>{{jsxref("WebAssembly/Memory/buffer","Memory.prototype.buffer")}}</dt>
+ <dd>メモリに格納されているバッファーを返すアクセサープロパティです。/dd&gt;</dd>
+</dl>
+
+<h3 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h3>
+
+<dl>
+ <dt>{{jsxref("WebAssembly/Memory/grow","Memory.prototype.grow()")}}</dt>
+ <dd>指定した WebAssembly ページの数 (64KBを1単位とする) で <code>Memory</code> インスタンスのサイズを増やします。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p><code>WebAssembly.Memory</code> オブジェクトを取得する方法は2つあります。1つ目は JavaScript から生成する方法です。以下の例では、初期サイズが10ページ (640KiB) 、最大サイズが100ページ (6.4MiB) で新しい WebAssembly Memory インスタンスを生成しています。</p>
+
+<pre class="brush: js">var memory = new WebAssembly.Memory({initial:10, maximum:100});</pre>
+
+<p>2つ目は WebAssembly モジュールからエクスポートされた <code>WebAssembly.Memory</code> オブジェクトを使用する方法です。次の例では (GitHub 上の <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/memory.html">memory.html</a> および<a href="https://mdn.github.io/webassembly-examples/js-api-examples/memory.html">ライブデモ版</a> もご覧ください)、 memory.wasm バイトコードを {{jsxref("WebAssembly.instantiateStreaming()")}} メソッドを使用して読み込みんでインスタンス化し、その上の行で生成されたメモリにインポートします。それから、メモリにいくつかの値を格納し、関数をエクスポートして使用し、いくつかの値を合計します。</p>
+
+<pre class="brush: js">fetchAndInstantiate('memory.wasm').then(function(instance) {
+ var i32 = new Uint32Array(instance.exports.mem.buffer);
+ for (var i = 0; i &lt; 10; i++) {
+ i32[i] = i;
+ }
+ var sum = instance.exports.accumulate(0, 10);
+ console.log(sum);
+});</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#memories', 'Memory')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Memory")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.html
new file mode 100644
index 0000000000..ff8180c361
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.html
@@ -0,0 +1,94 @@
+---
+title: WebAssembly.Memory() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/Memory
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - WebAssembly
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/Memory
+---
+<div>{{JSRef}}</div>
+
+<p>The <code><strong>WebAssembly.Memory()</strong></code> コンストラクターは新しい <code>Memory</code> オブジェクトを生成します。これは {{jsxref("WebAssembly/Memory/buffer","buffer")}} プロパティでサイズ変更可能な {{jsxref("ArrayBuffer")}} により、 WebAssembly <code>Instance</code> からアクセスする生のバイト列のメモリを持ちます。</p>
+
+<p>JavaScript または WebAssembly コードから生成されたメモリは JavaScript と WebAssembly のどちらからもアクセス、変更が可能になります。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">new WebAssembly.Memory(<var>memoryDescriptor</var>);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>memoryDescriptor</var></code></dt>
+ <dd>以下のメンバーを含むことができるオブジェクトです。
+ <dl>
+ <dt><em>initial</em></dt>
+ <dd>WebAssembly メモリの初期サイズで、単位は WebAssembly ページ数です。</dd>
+ <dt><em>maximum {{optional_inline}}</em></dt>
+ <dd>WebAssembly メモリを拡張できる最大サイズで、単位は WebAssembly ページ数です。存在する場合、 <code>maximum</code> 引数はエンジンがメモリを予約するヒントとして使用されます。ただし、エンジンはこの予約リクエストを無視したり固定したりすることがあります。一般的に、ほとんどの WebAssembly モジュールは <code>maximum</code> を設定する必要はありません。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<div class="note">
+<p><strong>メモ</strong>: WebAssembly ページは 65,536 バイト、すなわち 64KiB の固定長です。</p>
+</div>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li><code>memoryDescriptor</code> がオブジェクトでない場合は、 {{jsxref("TypeError")}} が発生します。</li>
+ <li><code>maximum</code> が設定されており、かつ <code>initial</code> よりも小さい場合は、 {{jsxref("RangeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p><code>WebAssembly.Memory</code> オブジェクトを取得する方法は2つあります。1つ目は JavaScript から生成する方法です。以下の例では、初期サイズが10ページ (640KiB) 、最大サイズが100ページ (6.4MiB) で新しい WebAssembly Memory インスタンスを生成しています。</p>
+
+<pre class="brush: js">var memory = new WebAssembly.Memory({initial:10, maximum:100});</pre>
+
+<p>2つ目は WebAssembly モジュールからエクスポートされた <code>WebAssembly.Memory</code> オブジェクトを使用する方法です。次の例では (GitHub 上の <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/memory.html">memory.html</a> および<a href="https://mdn.github.io/webassembly-examples/js-api-examples/memory.html">ライブデモ版</a> もご覧ください)、 memory.wasm バイトコードを {{jsxref("WebAssembly.instantiateStreaming()")}} メソッドを使用して読み込みんでインスタンス化し、その上の行で生成されたメモリにインポートします。それから、メモリにいくつかの値を格納し、関数をエクスポートして使用し、いくつかの値を合計します。</p>
+
+<pre class="brush: js">WebAssembly.instantiateStreaming(fetch('memory.wasm'), { js: { mem: memory } })
+.then(obj =&gt; {
+  var i32 = new Uint32Array(memory.buffer);
+  for (var i = 0; i &lt; 10; i++) {
+    i32[i] = i;
+  }
+  var sum = obj.instance.exports.accumulate(0, 10);
+  console.log(sum);
+});</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-memory-memory', 'Memory')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Memory.Memory")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/prototype/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/memory/prototype/index.html
new file mode 100644
index 0000000000..e9e48b5bec
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/memory/prototype/index.html
@@ -0,0 +1,70 @@
+---
+title: WebAssembly.Memory.prototype
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/prototype
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - WebAssembly
+ - memory
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p><code><strong>WebAssembly.Memory</strong></code><strong><code>.prototype</code></strong> プロパティは {{jsxref("WebAssembly.Memory()")}} コンストラクタのプロトタイプを表します。</p>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="説明">説明</h2>
+
+<p>全ての {{jsxref("WebAssembly.Memory")}} インスタンスは <code>Memory.prototype</code> を継承します。 {{jsxref("WebAssembly.Memory()")}} コンストラクタのプロトタイプオブジェクトは全ての {{jsxref( "WebAssembly.Memory")}} インスタンスに影響するように変更可能です。</p>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<dl>
+ <dt><code>Memory.prototype.constructor</code></dt>
+ <dd>このオブジェクトのインスタンスを生成した関数を返します。デフォルトでは {{jsxref("WebAssembly.Memory()")}} コンストラクタです。</dd>
+ <dt>{{jsxref("WebAssembly/Memory/buffer","Memory.prototype.buffer")}}</dt>
+ <dd>メモリーに格納されているバッファを返すアクセサプロパティ。</dd>
+ <dt>
+ <h2 id="メソッド">メソッド</h2>
+ </dt>
+ <dt>{{jsxref("WebAssembly/Memory/grow","Memory.prototype.grow()")}}</dt>
+ <dd>指定した WebAssembly ページの数 (64KBを1単位とする) で <code>Memory</code> インスタンスのサイズを増やします。</dd>
+</dl>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#webassemblymemory-objects', 'Memory')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>初回ドラフト定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.WebAssembly.Memory.prototype")}}</p>
+</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WebAssembly.Memory()")}}</li>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssemblyのコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/module/customsections/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/module/customsections/index.html
new file mode 100644
index 0000000000..757c3e33e4
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/module/customsections/index.html
@@ -0,0 +1,144 @@
+---
+title: WebAssembly.Module.customSections()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/customSections
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/customSections
+---
+<div>{{JSRef}}{{SeeCompatTable}}</div>
+
+<p><strong><code>WebAssembly.customSections()</code></strong> 関数はモジュールと文字列名を指定して、全てのカスタムセクションのコンテンツのコピーを返します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">var custSec = WebAssembly.Module.customSections(<em>module</em>, <em>sectionName</em>);</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><em>module</em></dt>
+ <dd>カスタムセクションが考慮されている {{jsxref("WebAssembly.Module")}} オブジェクト。</dd>
+ <dt><em>sectionName</em></dt>
+ <dd>目的のカスタムセクションの文字列名。</dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p><code>sectionName</code> にマッチした全てのカスタムセクションの {{domxref("ArrayBuffer")}} コピーの配列 (もしかしたら空の場合もあります) 。</p>
+
+<h3 id="例外">例外</h3>
+
+<p>もし <code>module</code> が {{jsxref("WebAssembly.Module")}} オブジェクトインスタンスでない場合、{{jsxref("TypeError")}} がスローされます。</p>
+
+<h2 id="カスタムセクション">カスタムセクション</h2>
+
+<p>wasm モジュールは一連の <strong>セクション</strong> で構成されています。これらのセクションのほとんどは wasm の仕様によって完全に指定、バリデーションされますが、バリデーション中に無視されスキップされる <strong>カスタムセクション</strong> をモジュールに含めることができます (通常のセクション("既知のセクション")とカスタムセクションを区別するための情報は <a href="https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md#high-level-structure">高レベルの構造</a> を読んでください)。</p>
+
+<p>これにより開発者は他の目的のために wasm モジュール内にカスタムデータを含めることができます。例えば、開発者がモジュール内の全ての関数とローカル変数に名前を付けられる (ネイティブビルドにおける "シンボル" のようなもの) <a href="https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md#name-section">ネームカスタムセクション</a> のようなものがあります 。</p>
+
+<p>Note that the WebAssembly テキストフォーマットには現在新しいカスタムセクションのための構文の仕様がありません。しかし、テキストフォーマットから .wasm に変換するときに wasm にネームセクションを追加することができます。<a href="https://github.com/webassembly/wabt">wabt tool</a>  の一部である wast2wasm コマンドで <code>--debug-names</code> オプションを指定することができます。これを指定することにより、ネームカスタムセクションを持つ .wasm に変換することができます:</p>
+
+<pre class="brush: bash">wast2wasm simple-name-section.was -o simple-name-section.wasm --debug-names</pre>
+
+<h2 id="例">例</h2>
+
+<p>次の例では(custom-section.html の <a href="https://github.com/mdn/webassembly-examples/blob/master/other-examples/custom-section.html">ソース</a> と <a href="https://mdn.github.io/webassembly-examples/other-examples/custom-section.html">動作例</a> をご確認ください) 、ロードした section.wasm バイトコードをコンパイルしています。</p>
+
+<p>それから、<code>WebAssembly.Module.customSections</code> を使用して <code>length</code> が0より大きいかチェックして、モジュールに "name" カスタムセクションが含まれているかどうかチェックします。この例では "name" カスタムセクションが存在するため、<code>ArrayBuffer</code> オブジェクトが返されます。</p>
+
+<pre class="brush: js">fetch('simple-name-section.wasm').then(response =&gt;
+  response.arrayBuffer()
+).then(bytes =&gt;
+  WebAssembly.compile(bytes)
+).then(function(mod) {
+  var nameSections = WebAssembly.Module.customSections(mod, "name");
+  if (nameSections.length != 0) {
+    console.log("Module contains a name section");
+    console.log(nameSections[0]);
+  };
+});</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#webassemblymodulecustomsections', 'customSections()')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>初回ドラフト定義。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{CompatibilityTable}}</div>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Feature</th>
+ <th>Chrome</th>
+ <th>Edge</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari (WebKit)</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>57</td>
+ <td>15<sup>[2]</sup></td>
+ <td>{{CompatGeckoDesktop(52)}}<sup>[1]</sup></td>
+ <td>{{CompatNo}}</td>
+ <td>44</td>
+ <td>11</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Feature</th>
+ <th>Chrome for Android</th>
+ <th>Android Webview</th>
+ <th>Edge Mobile</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>57</td>
+ <td>57</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatGeckoMobile(52)}}<sup>[1]</sup></td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatNo}}</td>
+ <td>11</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>[1] WebAssemblyはFirefox 52+で有効です。<a href="https://www.mozilla.org/en-US/firefox/organizations/">Firefox 52 Extended Support Release</a> (ESR.)では無効化されています。</p>
+
+<p>[2] 現在、“Experimental JavaScript Features” フラグを付けることでサポートされます。詳細については <a href="https://blogs.windows.com/msedgedev/2017/04/20/improved-javascript-performance-webassembly-shared-memory/">このブログ記事</a> を参照してください。</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly のコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/module/exports/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/module/exports/index.html
new file mode 100644
index 0000000000..fb852a1a29
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/module/exports/index.html
@@ -0,0 +1,109 @@
+---
+title: WebAssembly.Module.exports()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/exports
+tags:
+ - API
+ - Constructor
+ - Experimental
+ - JavaScript
+ - Method
+ - Module
+ - Object
+ - Reference
+ - WebAssembly
+ - exports
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/exports
+---
+<div>{{JSRef}} {{ SeeCompatTable}}</div>
+
+<p><strong><code>WebAssembly.exports()</code></strong> 関数は指定した <code>Module</code> のエクスポート宣言の定義の配列を返します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">var exports = WebAssembly.Module.exports(module);</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><em>module</em></dt>
+ <dd>{{jsxref("WebAssembly.Module")}} オブジェクト。</dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>指定したモジュールのエクスポートされた関数を表現するオブジェクトの配列。</p>
+
+<h3 id="例外">例外</h3>
+
+<p>もしモジュールが {{jsxref("WebAssembly.Module")}} オブジェクトインスタンス出ない場合、{{jsxref("TypeError")}} がスローされます。</p>
+
+<h2 id="例">例</h2>
+
+<p>次の例では (Github のデモ <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/index-compile.html">index-compile.html</a> と、<a href="https://mdn.github.io/webassembly-examples/js-api-examples/index-compile.html">動作例</a> もご確認ください) {{jsxref("WebAssembly.compile()")}} 関数を使用してロードした simple.wasm をコンパイルして、 <a href="/ja/docs/Web/API/Worker/postMessage">postMessage()</a> を使用してそれを <a href="https://developer.mozilla.org/ja/docs/Web/API/Web_Workers_API">worker</a> に送信しています。</p>
+
+<pre class="brush: js">var worker = new Worker("wasm_worker.js");
+
+fetch('simple.wasm').then(response =&gt;
+  response.arrayBuffer()
+).then(bytes =&gt;
+  WebAssembly.compile(bytes)
+).then(mod =&gt;
+  worker.postMessage(mod)
+);</pre>
+
+<p>worker (<code><a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/wasm_worker.js">wasm_worker.js</a></code> を参照) 内で、モジュールで使用するためにインポートオブジェクトを定義して、そのあとにメインスレッドからモジュールを受け取るためのイベントハンドラをセットアップします。モジュールを受け取ったとき、{{jsxref("WebAssembly.Instantiate()")}} メソッドを使用してインスタンスを生成し、その内部でエクスポートされた関数を実行します。そのあとに <code>WebAssembly.Module.exports</code> を使用してモジュール上の利用可能なエクスポートの情報を返す方法を示します。</p>
+
+<pre class="brush: js">var importObject = {
+ imports: {
+ imported_func: function(arg) {
+ console.log(arg);
+ }
+ }
+};
+
+onmessage = function(e) {
+ console.log('module received from main thread');
+ var mod = e.data;
+
+ WebAssembly.instantiate(mod, importObject).then(function(instance) {
+ instance.exports.exported_func();
+ });
+
+ var exports = WebAssembly.Module.exports(mod);
+ console.log(exports[0]);
+};</pre>
+
+<p><code>exports[0]</code> のアウトプットはこのようになります:</p>
+
+<pre class="brush: js">{ name: "exported_func", kind: "function" }</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#webassemblymoduleexports', 'exports()')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>Initial draft definition.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{Compat("javascript.builtins.WebAssembly.Module.exports")}}</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly のコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/module/imports/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/module/imports/index.html
new file mode 100644
index 0000000000..2d2cea9f08
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/module/imports/index.html
@@ -0,0 +1,83 @@
+---
+title: WebAssembly.Module.imports()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/imports
+tags:
+ - API
+ - JavaScript
+ - Method
+ - Module
+ - Object
+ - Reference
+ - WebAssembly
+ - imports
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/imports
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>WebAssembly.imports()</code></strong> 関数は、指定した <code>Module</code> の全てのインポート宣言の定義を配列として返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">WebAssembly.Module.imports(module);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><em>module</em></dt>
+ <dd>{{jsxref("WebAssembly.Module")}} オブジェクトです。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定したモジュールのインポートされた関数を表現するオブジェクトの配列。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>もしモジュールが {{jsxref("WebAssembly.Module")}} オブジェクトのインスタンスでなければ {{jsxref("TypeError")}} が発生します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>次の例では (imports.html の <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/imports.html">ソースコード</a> と <a href="https://mdn.github.io/webassembly-examples/js-api-examples/imports.html">動作例</a> もご確認ください) ロードした simple.wasm モジュールをコンパイルした後、インポート宣言を問い合わせています。</p>
+
+<pre class="brush: js">WebAssembly.compileStreaming(fetch('simple.wasm'))
+.then(function(mod) {
+  var imports = WebAssembly.Module.imports(mod);
+  console.log(imports[0]);
+});
+</pre>
+
+<p>出力結果は次のようになります。</p>
+
+<pre class="brush: js">{ module: "imports", name: "imported_func", kind: "function" }</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-module-imports', 'imports()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Module.imports")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/module/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/module/index.html
new file mode 100644
index 0000000000..3db453a95d
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/module/index.html
@@ -0,0 +1,97 @@
+---
+title: WebAssembly.Module
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Module
+tags:
+ - API
+ - Constructor
+ - Experimental
+ - JavaScript
+ - Module
+ - Reference
+ - WebAssembly
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Module
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>WebAssembly.Module</code></strong> オブジェクトには、ブラウザーでコンパイルされたステートレスな WebAssembly コードが含まれています。これを効率的に<a href="/ja/docs/Web/API/Worker/postMessage">ワーカー間で共有</a>したり、複数回インスタンス化したりすることができます。</p>
+
+<h2 id="Constructor" name="Constructor">コンストラクター</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/WebAssembly/Module/Module", "WebAssembly.Module()")}}</dt>
+ <dd>新しい <code>Module</code> オブジェクトを生成します。</dd>
+</dl>
+
+<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/WebAssembly/Module/customSections", "WebAssembly.Module.customSections()")}}</dt>
+ <dd><code>Module</code> と文字列を指定すると、モジュール内の与えられた文字列を名前に持つ全てのカスタムセクションの内容を返します。</dd>
+ <dt>{{jsxref("Global_Objects/WebAssembly/Module/exports", "WebAssembly.Module.exports()")}}</dt>
+ <dd><code>Module</code> を指定すると、エクスポート宣言の情報を配列として返します。</dd>
+ <dt>{{jsxref("Global_Objects/WebAssembly/Module/imports", "WebAssembly.Module.imports()")}}</dt>
+ <dd><code>Module</code> を指定すると、インポート宣言の情報を配列として返します。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Sending_a_compiled_module_to_a_worker" name="Sending_a_compiled_module_to_a_worker">コンパイル済みのモジュールをワーカーに送信</h3>
+
+<p>以下の例では (GitHub 上の <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/index-compile.html">index-compile.html</a> および<a href="https://mdn.github.io/webassembly-examples/js-api-examples/index-compile.html">ライブ表示</a>も参照してください)、読み込まれた <code>simple.wasm</code> のバイトコードを {{jsxref("WebAssembly.compileStreaming()")}} メソッドでコンパイルし、結果の <code>Module</code> インスタンスを<a href="/ja/docs/Web/API/Web_Workers_API">ワーカー</a>へ、 {{domxref("Worker/postMessage", "postMessage()")}} を使用して送信します。</p>
+
+<pre class="brush: js notranslate">var worker = new Worker("wasm_worker.js");
+
+WebAssembly.compileStreaming(fetch('simple.wasm'))
+.then(mod =&gt;
+  worker.postMessage(mod)
+);</pre>
+
+<p>ワーカー内では (<code><a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/wasm_worker.js">wasm_worker.js</a></code> を参照)、モジュールを使用するための import オブジェクトを定義し、メインスレッドからモジュールを受け取るためのイベントハンドラーをセットアップします。モジュールを受け取ったら、 {{jsxref("WebAssembly.instantiate()")}} メソッドを使ってインスタンスを作成し、その中からエクスポートされた関数を呼び出します。</p>
+
+<pre class="brush: js notranslate">var importObject = {
+ imports: {
+ imported_func: function(arg) {
+ console.log(arg);
+ }
+ }
+};
+
+onmessage = function(e) {
+ console.log('module received from main thread');
+ var mod = e.data;
+
+ WebAssembly.instantiate(mod, importObject).then(function(instance) {
+ instance.exports.exported_func();
+ });
+};</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#modules', 'WebAssembly.Module()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Module")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/runtimeerror/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/runtimeerror/index.html
new file mode 100644
index 0000000000..9b0b408383
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/runtimeerror/index.html
@@ -0,0 +1,107 @@
+---
+title: WebAssembly.RuntimeError()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p><code><strong>WebAssembly.RuntimeError()</strong></code> コンストラクタは WebAssembly <code>RuntimeError</code> オブジェクトを生成します。WebAssembly で定義されている <a href="http://webassembly.org/docs/semantics/#traps">トラップ</a> が発生するごとにスローされます。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">new WebAssembly.RuntimeError(<var>message</var>, <var>fileName</var>, <var>lineNumber</var>)</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>message</code> {{optional_inline}}</dt>
+ <dd>ヒューマンリーダブルなエラーの説明。</dd>
+ <dt><code>fileName</code> {{optional_inline}}{{non-standard_inline}}</dt>
+ <dd>例外の原因となったコードを含むファイルの名前。</dd>
+ <dt><code>lineNumber</code> {{optional_inline}}{{non-standard_inline}}</dt>
+ <dd>例外の原因となったコードの行番号。</dd>
+</dl>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<p><em><code>RuntimeError</code> コンストラクタは自身のプロパティを持ちませんが、プロトタイプチェーンを通していくつかのプロパティを継承します。</em></p>
+
+<dl>
+ <dt><code>WebAssembly.RuntimeError.prototype.constructor</code></dt>
+ <dd>インスタンスのプロトタイプを生成した関数を示します。</dd>
+ <dt>{{jsxref("Error.prototype.message", "WebAssembly.RuntimeError.prototype.message")}}</dt>
+ <dd>エラーメッセージ。ECMA-262 では {{jsxref("URIError")}} は自身の <code>message</code> プロパティを提供する必要がありますが、<a href="/en-US/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> では {{jsxref("Error.prototype.message")}} を継承します。</dd>
+ <dt>{{jsxref("Error.prototype.name", "WebAssembly.RuntimeError.prototype.name")}}</dt>
+ <dd>エラー名。 {{jsxref("Error")}}.</dd>
+ <dt>{{jsxref("Error.prototype.fileName", "WebAssembly.RuntimeError.prototype.fileName")}}</dt>
+ <dd>このエラーを発生させたファイルのパス。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.lineNumber", "WebAssembly.RuntimeError.prototype.lineNumber")}}</dt>
+ <dd>このエラーを発生させたファイルの行番号。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.columnNumber", "WebAssembly.RuntimeError.prototype.columnNumber")}}</dt>
+ <dd>このエラーが発生した行の列番号。<a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Error" title="Error コンストラクターは、エラーオブジェクトを生成します。Error オブジェクトのインスタンスは、ランタイムエラーが発生した時に投げられます。Error オブジェクトは、ユーザー定義の例外の基底オブジェクトとして使用することもできます。標準の組み込みエラー型については下記を参照してください。"><code>Error</code></a> から継承されます。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.stack", "WebAssembly.RuntimeError.prototype.stack")}}</dt>
+ <dd>スタックトレース。{{jsxref("Error")}} から継承されます。</dd>
+</dl>
+
+<h2 id="メソッド">メソッド</h2>
+
+<p><em><code>RuntimeError</code> コンストラクタは自身のメソッドを持ちませんが、プロトタイプチェーンを通していくつかのメソッドを継承します。</em></p>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.toSource", "WebAssembly.RuntimeError.prototype.toSource()")}}</dt>
+ <dd>同じエラーを評価できるコードを返します。{{jsxref("Error")}} から継承されます。</dd>
+ <dt>{{jsxref("Error.prototype.toString", "WebAssembly.RuntimeError.prototype.toString()")}}</dt>
+ <dd>指定された <code>Error</code> オブジェクトを表す文字列を返します。{{jsxref("Error")}} から継承されます。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<p>以下のスニペットで <code>RuntimeError</code> インスタンスを生成して、詳細をコンソールに表示します。</p>
+
+<pre class="brush: js">try {
+ throw new WebAssembly.RuntimeError('Hello', 'someFile', 10);
+} catch (e) {
+ console.log(e instanceof RuntimeError); // true
+ console.log(e.message); // "Hello"
+ console.log(e.name); // "RuntimeError"
+ console.log(e.fileName); // "someFile"
+ console.log(e.lineNumber); // 10
+ console.log(e.columnNumber); // 0
+ console.log(e.stack); // コードが実行された場所を返す
+}</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#constructor-properties-of-the-webassembly-object', 'WebAssembly constructors')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>WebAssembly の初回ドラフト定義。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard', 'NativeError')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td>標準の NativeError 型の定義。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{Compat("javascript.builtins.WebAssembly.RuntimeError")}}</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly のコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/table/get/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/table/get/index.html
new file mode 100644
index 0000000000..fa797cb7a6
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/table/get/index.html
@@ -0,0 +1,79 @@
+---
+title: WebAssembly.Table.prototype.get()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/get
+tags:
+ - API
+ - JavaScript
+ - Method
+ - Reference
+ - WebAssembly
+ - get
+ - table
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/get
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>get()</strong></code> は {{jsxref("WebAssembly.Table")}} オブジェクトのプロトタイプメソッドで、指定されたインデックスに格納された関数参照を取得します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">table.get(<em>index</em>);
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><em>index</em></dt>
+ <dd>取得する関数参照のインデックス。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>関数参照を返します。これは <a href="/ja/docs/WebAssembly/Exported_functions">エクスポートされた WebAssembly 関数</a> 、wasm 関数を内在する JavaScript ラッパーです。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>もし <em>index</em> が {{jsxref("WebAssembly/Table/length","Table.prototype.length")}} 以上だった場合、{{jsxref("RangeError")}} をスローします。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>次の例では (Github の <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/table.html">table.html</a> と <a href="https://mdn.github.io/webassembly-examples/js-api-examples/table.html">動作例</a> も確認してください)、<code><a href="https://github.com/mdn/webassembly-examples/blob/master/wasm-utils.js">fetchAndInstantiate()</a></code> ユーティリティ関数を使用して table.wasm バイトコードをロード、コンパイルして、インスタンス化しています。その後、エクスポートされたテーブルに格納された参照を取得します。</p>
+
+<pre class="brush: js">WebAssembly.instantiateStreaming(fetch('table.wasm'))
+.then(function(obj) {
+  var tbl = obj.instance.exports.tbl;
+  console.log(tbl.get(0)());  // 13
+  console.log(tbl.get(1)());  // 42
+});</pre>
+
+<p>参照内に格納されている値を実際に取得するためには、アクセサの最後に2つ目の関数呼び出し演算子を含める必要があります(<code>get(0)</code> ではなく <code>get(0)()</code>) 。これは単純な値ではなく、関数です。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-table-get', 'get()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Table.get")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/table/grow/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/table/grow/index.html
new file mode 100644
index 0000000000..4819f33086
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/table/grow/index.html
@@ -0,0 +1,79 @@
+---
+title: WebAssembly.Table.prototype.grow()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/grow
+tags:
+ - API
+ - JavaScript
+ - Method
+ - Reference
+ - WebAssembly
+ - grow
+ - table
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/grow
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>grow()</strong></code> は {{jsxref("WebAssembly.Table")}} オブジェクトのプロトタイプメソッドで、指定された要素数でテーブルを拡張します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">table.grow(<em>number</em>);
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><em>number</em></dt>
+ <dd>テーブルを拡張する要素数。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>以前のテーブルの長さ。</p>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>もし <code>grow()</code> 操作が何かしらの理由で失敗した場合、{{jsxref("RangeError")}} をスローします。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>次の例では、初期サイズが2で最大サイズが10の WebAssembly Table を作成しています。</p>
+
+<pre class="brush: js">var table = new WebAssembly.Table({ element: "anyfunc", initial: 2, maximum: 10 });</pre>
+
+<p>次のようにすることで、テーブルのサイズを1拡張することができます:</p>
+
+<pre class="brush: js">console.log(table.length); // "2"
+console.log(table.grow(1)); // "2"
+console.log(table.length); // "3"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-table-grow', 'grow()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Table.set")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/table/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/table/index.html
new file mode 100644
index 0000000000..963a942b65
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/table/index.html
@@ -0,0 +1,126 @@
+---
+title: WebAssembly.Table()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>WebAssembly.Table()</strong></code> コンストラクタは与えられたサイズと要素の型から <code>Table</code> オブジェクトを生成します。</p>
+
+<p>これは、配列ライクな構造で表現された WebAssembly テーブルの JavaScript ラッパーオブジェクトです。JavaScript か WebAssembly コード上で生成されたテーブルは JavaScript、WebAssembly の両方からアクセス、変更可能です。</p>
+
+<div class="note">
+<p><strong>注</strong>: 現在、テーブルには関数の参照のみ格納できます。しかし、将来的に拡張される予定です。</p>
+</div>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">var myTable = new WebAssembly.Table(tableDescriptor);</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><em>tableDescriptor</em></dt>
+ <dd>以下のメンバーを含むことができるオブジェクト:
+ <dl>
+ <dt><em>element</em></dt>
+ <dd>テーブルに格納する値の型の文字列表現。現在は、<code>"anyfunc"</code> (関数) のみ設定できます。</dd>
+ <dt><em>initial</em></dt>
+ <dd>WebAssembly テーブルの初期要素数。</dd>
+ <dt><em>maximum {{optional_inline}}</em></dt>
+ <dd>WebAssembly テーブルが拡張できる要素の最大数。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="例外">例外</h3>
+
+<ul>
+ <li>もし <code>tableDescriptor</code> がオブジェクト型でない場合、{{jsxref("TypeError")}} がスローされます。</li>
+ <li>もし <code>maximum</code> 定義されていて <code>initial</code> よりも小さい場合、{{jsxref("RangeError")}} がスローされます。</li>
+</ul>
+
+<h2 id="Table_インスタンス"><code>Table</code> インスタンス</h2>
+
+<p>全ての <code>Table</code> インスタンスは <code>Table()</code>コンストラクタの <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/prototype">プロトタイプオブジェクト</a> を継承します。これは全ての <code>Table</code> インスタンスに影響するように変更可能です。</p>
+
+<h3 id="インスタンスプロパティ">インスタンスプロパティ</h3>
+
+<dl>
+ <dt><code>Table.prototype.constructor</code></dt>
+ <dd>このオブジェクトのインスタンスを生成した関数を返します。デフォルトでは {{jsxref("WebAssembly.Table()")}} コンストラクタです。</dd>
+ <dt>{{jsxref("Global_Objects/WebAssembly/Table/length","Table.prototype.length")}}</dt>
+ <dd>テーブルの長さを返します。すなわち、要素数です。</dd>
+</dl>
+
+<h3 id="インスタンスメソッド">インスタンスメソッド</h3>
+
+<dl>
+ <dt>{{jsxref("Global_Objects/WebAssembly/Table/get","Table.prototype.get()")}}</dt>
+ <dd>アクセサ関数。インデックスから格納された要素を取得します。</dd>
+ <dt>{{jsxref("Global_Objects/WebAssembly/Table/grow","Table.prototype.grow()")}}</dt>
+ <dd>指定した要素数で Table インスタンスを拡張します。</dd>
+ <dt>{{jsxref("Global_Objects/WebAssembly/Table/set","Table.prototype.set()")}}</dt>
+ <dd>指定したインデックスに要素を格納します。</dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<p>以下の例 (table2.htmlの <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/table2.html">ソースコード</a> と <a href="https://mdn.github.io/webassembly-examples/js-api-examples/table2.html">動作例</a> を参照) では初期サイズが2の WebAssembly Table インスタンスを生成しています。次に、テーブルの長さと2つのインデックスの内容を表示しています (長さが2で両方の要素が {{jsxref("null")}} であることを確認するために、{{jsxref("WebAssembly/Table/get", "Table.prototype.get()")}} を使って読み込んでいます) 。</p>
+
+<pre class="brush: js">var tbl = new WebAssembly.Table({initial:2, element:"anyfunc"});
+console.log(tbl.length); // "2"
+console.log(tbl.get(0)); // "null"
+console.log(tbl.get(1)); // "null"</pre>
+
+<p>次に、テーブルを含むインポートオブジェクトを作ります:</p>
+
+<pre class="brush: js">var importObj = {
+ js: {
+ tbl:tbl
+ }
+};</pre>
+
+<p>最後に {{jsxref("WebAssembly.instantiateStreaming()")}} を使用して wasm モジュール (table2.wasm) をロード し、インスタンス化します。table2.wasm モジュールは2の関数を持っていて (1つは42を、もう1つは83を返す) 、インポートされたテーブルの0、1番目に両方の要素が格納されます (<a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/table2.wat">text representation</a>を参照) 。そして、インスタンス化された後、テーブルの長さは2のままです。しかし、今はJSから呼び出し可能な <a href="/en-US/docs/WebAssembly/Exported_functions">エクスポートされたWebAssembly関数</a> が含まれています。</p>
+
+<pre class="brush: js">WebAssembly.instantiateStreaming(fetch('table2.wasm'), importObject)
+.then(function(obj) {
+  console.log(tbl.length);
+  console.log(tbl.get(0)());
+  console.log(tbl.get(1)());
+});</pre>
+
+<p>内部の値を表示するためには、参照された関数のアクセサの呼び出しの後に、2つ目の関数呼び出しを含める必要があることに注意して下さい (<code>get(0)</code> ではなく <code>get(0)()</code>)。</p>
+
+<p>この例では、JavaScript からテーブルを作成してアクセスしていますが、wasm インスタンス内で同じテーブルを参照して呼び出すこともできます。</p>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#webassemblytable-objects', 'Table')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>初回ドラフト定義。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{Compat("javascript.builtins.WebAssembly.Table")}}</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="https://developer.mozilla.org/ja/docs/WebAssembly/Concepts">WebAssembly のコンセプト</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/table/length/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/table/length/index.html
new file mode 100644
index 0000000000..8d6c3ae6c9
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/table/length/index.html
@@ -0,0 +1,63 @@
+---
+title: WebAssembly.Table.prototype.length
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/length
+tags:
+ - API
+ - JavaScript
+ - Property
+ - Reference
+ - length
+ - table
+ - プロパティ
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/length
+---
+<div>{{JSRef}}</div>
+
+<p>{{jsxref("WebAssembly.Table")}} オブジェクトの <code><strong>length</strong></code> プロトタイププロパティはテーブルの長さを返します。すなわち、テーブルの要素数です。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">table.length;
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>次の例では、初期サイズが2で最大サイズが10の WebAssembly Table を作成しています。</p>
+
+<pre class="brush: js">var table = new WebAssembly.Table({ element: "anyfunc", initial: 2, maximum: 10 });</pre>
+
+<p>次のようにすることで、テーブルのサイズを1拡張することができます:</p>
+
+<pre class="brush: js">console.log(table.length); // "2"
+console.log(table.grow(1)); // "2"
+console.log(table.length); // "3"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-table-length', 'length')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Table.length")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/table/prototype/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/table/prototype/index.html
new file mode 100644
index 0000000000..8a178f1ce3
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/table/prototype/index.html
@@ -0,0 +1,74 @@
+---
+title: WebAssembly.Table.prototype
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/prototype
+tags:
+ - JavaScript
+ - Property
+ - Prototype
+ - WebAssembly
+ - table
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p><code><strong>WebAssembly.Table</strong></code><strong><code>.prototype</code></strong> プロパティは {{jsxref("WebAssembly.Table()")}} コンストラクタのプロトタイプを表します。</p>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<h2 id="説明">説明</h2>
+
+<p>全ての {{jsxref("WebAssembly.Table")}} インスタンスは <code>Table.prototype</code> を継承します。{{jsxref("WebAssembly.Table()")}} コンストラクタのプロトタイプオブジェクトは全ての {{jsxref( "WebAssembly.Table")}} インスタンスに影響するように変更可能です。</p>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<dl>
+ <dt><code>Table.prototype.constructor</code></dt>
+ <dd>このオブジェクトのインスタンスを生成した関数を返します。デフォルトでは  {{jsxref("WebAssembly.Table()")}} コンストラクタです。</dd>
+ <dt>{{jsxref("WebAssembly/Table/length","Table.prototype.length")}}</dt>
+ <dd>テーブルの長さを返します。すなわち、要素数です。</dd>
+ <dt>
+ <h2 id="メソッド">メソッド</h2>
+ </dt>
+ <dt>{{jsxref("WebAssembly/Table/get","Table.prototype.get()")}}</dt>
+ <dd>アクセサ関数。インデックスから格納された要素を取得します。</dd>
+ <dt>{{jsxref("WebAssembly/Table/grow","Table.prototype.grow()")}}</dt>
+ <dd>指定した要素数で Table インスタンスを拡張します。</dd>
+ <dt>{{jsxref("WebAssembly/Table/set","Table.prototype.set()")}}</dt>
+ <dd>指定したインデックスに要素を格納します。</dd>
+</dl>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#webassemblytable-objects', 'Table')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>初回ドラフト定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.WebAssembly.Table.prototype")}}</p>
+</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("WebAssembly.Table")}}</li>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssemblyのコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.html
new file mode 100644
index 0000000000..681c1b6ed7
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.html
@@ -0,0 +1,101 @@
+---
+title: WebAssembly.Table.prototype.set()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/set
+tags:
+ - API
+ - JavaScript
+ - Method
+ - Reference
+ - WebAssembly
+ - set
+ - table
+ - メソッド
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/set
+---
+<div>{{JSRef}}</div>
+
+<p>{{jsxref("WebAssembly.Table")}} オブジェクトの <code><strong>set()</strong></code> プロトタイプメソッドは指定されたインデックスに格納されている参照を違う値に変更します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">table.set(<em>index</em>, <em>value</em>);
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><em>index</em></dt>
+ <dd>変更する関数参照のインデックス。</dd>
+ <dt><em>value</em></dt>
+ <dd>変更する参照。これは <a href="/ja/docs/WebAssembly/Exported_functions">エクスポートされた WebAssembly 関数</a> 、 wasm 関数を内在する JavaScript ラッパーである必要があります。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>なし。</p>
+
+<h3 id="Exception" name="Exception">例外</h3>
+
+<ul>
+ <li><em>index</em> が {{jsxref("Global_Objects/WebAssembly/Table/length","Table.prototype.length")}} の場合、 {{jsxref("RangeError")}} がスローされます。</li>
+ <li><em>value</em> がエクスポートされた WebAssembly 関数でも <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/null">null</a></code> でもない場合、{{jsxref("TypeError")}} をスローします。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>次の例では、2つ参照を持つ WebAssembly Table インスタンスを生成しています (table2.html <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/table2.html">ソースコード</a> と <a href="https://mdn.github.io/webassembly-examples/js-api-examples/table2.html">動作例</a> を確認してください) 。それから、長さが2で、関数参照が含まれないこと ({{jsxref("null")}} を返します) を確認するために、テーブルの長さと2つのインデックス ({{jsxref("Global_Objects/WebAssembly/Table/get","Table.prototype.get()")}} を通して読み出して) のコンテンツを表示します。</p>
+
+<pre class="brush: js">var tbl = new WebAssembly.Table({initial:2, element:"anyfunc"});
+console.log(tbl.length);
+console.log(tbl.get(0));
+console.log(tbl.get(1));</pre>
+
+<p>次にテーブルの参照を含むインポートオブジェクトを作成します:</p>
+
+<pre class="brush: js">var importObj = {
+ js: {
+ tbl:tbl
+ }
+};</pre>
+
+<p>最後に、<code><a href="https://github.com/mdn/webassembly-examples/blob/master/wasm-utils.js">fetchAndInstantiate()</a></code> ユーティリティ関数を使用して wasm モジュール (table2.wasm) をロードしてインスタンス化します。テーブルの長さを表示して、いまテーブルに格納された(table2.wasm モジュール (<a href="https://github.com/mdn/webassembly-examples/blob/master/text-format-examples/table2.was">テキスト表現</a> を参照) はテーブルに2つの関数参照を追加し、両方とも、簡単な数値を表示します)2つの関数参照を実行します:</p>
+
+<pre class="brush: js">WebAssembly.instantiateStreaming(fetch('table2.wasm'), importObject)
+.then(function(obj) {
+  console.log(tbl.length);
+  console.log(tbl.get(0)());
+  console.log(tbl.get(1)());
+});</pre>
+
+<p>内部の値を表示するためには、参照された関数のアクセサの呼び出しの後に、2つ目の関数呼び出しを含める必要があることに注意して下さい (<code>get(0)</code> ではなく <code>get(0)()</code>)。</p>
+
+<p>この例では、JavaScript からテーブルを作成してアクセスしていますが、wasm インスタンス内で同じテーブルを参照して呼び出すこともできます。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-table-set', 'set()')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Table.set")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/table/table/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/table/table/index.html
new file mode 100644
index 0000000000..e293ab5bd1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/table/table/index.html
@@ -0,0 +1,100 @@
+---
+title: WebAssembly.Table() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/Table
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - WebAssembly
+ - コンストラクター
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/Table
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>WebAssembly.Table()</strong></code> コンストラクターは、大きさと要素の型を指定して新しい <code>Table</code> オブジェクトを生成します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">new WebAssembly.Table(tableDescriptor);</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><em>tableDescriptor</em></dt>
+ <dd>以下のメンバーを含むことができるオブジェクトです。
+ <dl>
+ <dt><em>element</em></dt>
+ <dd>文字列で、テーブルに格納される値の型を表します。現時点では、 "<code>anyfunc</code>" (関数) の値のみを取ることができます。</dd>
+ <dt><em>initial</em></dt>
+ <dd>WebAssembly テーブルの初期の要素数です。</dd>
+ <dt><em>maximum {{optional_inline}}</em></dt>
+ <dd>WebAssembly テーブルが拡張する最大の要素数です。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<ul>
+ <li><code>tableDescriptor</code> がオブジェクトでない場合は、 {{jsxref("TypeError")}} が発生します。</li>
+ <li><code>maximum</code> が設定されており、かつ <code>initial</code> よりも小さい場合は、 {{jsxref("RangeError")}} が発生します。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>次の例では (table2.html の <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/table2.html">ソースコード</a> と <a href="https://mdn.github.io/webassembly-examples/js-api-examples/table2.html">デモ版</a>) 新しく WebAssembly テーブルのインスタンスを、2要素を初期の大きさとして生成します。それからテーブルの長さと2つの要素の中身を ({{jsxref("WebAssembly/Table/get", "Table.prototype.get()")}} で取得して) 表示し、長さは2で2つの要素は共に {{jsxref("null")}} となります。</p>
+
+<pre class="brush: js">var tbl = new WebAssembly.Table({initial:2, element:"anyfunc"});
+console.log(tbl.length); // "2"
+console.log(tbl.get(0)); // "null"
+console.log(tbl.get(1)); // "null"</pre>
+
+<p>それからテーブルを含むインポートオブジェクトを作成します。</p>
+
+<pre class="brush: js">var importObj = {
+ js: {
+ tbl:tbl
+ }
+};</pre>
+
+<p>最終的に、 wasm モジュール (table2.wasm) を {{jsxref("WebAssembly.instantiateStreaming()")}} メソッドを使用して読み込みインスタンス化します。 table2.wasm モジュールには2つの関数 (1つは 42 を返し、もう1つは 83 を返す) が入っており、それぞれをインポートされたテーブルの要素 0 と 1 に格納します。 (<a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/table2.wat">テキスト表示</a> をご覧ください)。インスタンス化した後で、テーブルは長さが2のままですが、要素には呼び出し可能な<a href="/ja/docs/WebAssembly/Exported_functions">エクスポートされた WebAssembly 関数</a>が入り、 JS から呼び出せるようになりました。</p>
+
+<pre class="brush: js">WebAssembly.instantiateStreaming(fetch('table2.wasm'), importObject)
+.then(function(obj) {
+  console.log(tbl.length);
+  console.log(tbl.get(0)());
+  console.log(tbl.get(1)());
+});</pre>
+
+<p>なお、関数呼び出し演算子がアクセサーの後に二重についており、実際に参照している関数を呼び出して、その中に格納された値をログ出力しています (例えば <code>get(0)()</code> を <code>get(0)</code> の代わりに使用)。</p>
+
+<p>この例は JavaScript からテーブルを生成してアクセスする方法を示していますが、同じテーブルを wasm インスタンスの中から見ることができ、呼び出すこともできます。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#dom-table-table', 'Table')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.WebAssembly.Table.Table")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> 概要ページ</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly の概念</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API の使用</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/validate/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/validate/index.html
new file mode 100644
index 0000000000..14a9631831
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/webassembly/validate/index.html
@@ -0,0 +1,71 @@
+---
+title: WebAssembly.validate()
+slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/validate
+translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/validate
+---
+<div>{{JSRef}} {{SeeCompatTable}}</div>
+
+<p><strong><code>WebAssembly.validate()</code></strong> 関数は WebAssembly バイナリコードを含む <a href="/ja/docs/Web/JavaScript/Typed_arrays">型付き配列</a> をバリデーションし、バイト列が有効な wasm モジュール (<code>true</code>) か、そうでないか (<code>false</code>) を返します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntax">WebAssembly.validate(bufferSource);</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><em>bufferSource</em></dt>
+ <dd>バリデーションする WebAssembly バイナリコードを含む <a href="/ja/docs/Web/JavaScript/Typed_arrays">型付き配列</a> か <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer">ArrayBuffer</a> 。</dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>有効な wasm モジュール (<code>true</code>) か、そうでないか (<code>false</code>) を示す boolean 値。</p>
+
+<h3 id="例外">例外</h3>
+
+<p><code>bufferSource</code> が <a href="/ja/docs/Web/JavaScript/Typed_arrays">型付き配列</a> か <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer">ArrayBuffer</a> でない場合、{{jsxref("TypeError")}} がスローされます。</p>
+
+<h2 id="例">例</h2>
+
+<p>以下の例 (validate.html の <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/validate.html">ソースコード</a> と <a href="https://mdn.github.io/webassembly-examples/js-api-examples/validate.html">動作例</a> をご確認ください) は .wasm モジュールをフェッチして型付き配列に変換します。次に、 <code>validate()</code> メソッドを使用してモジュールが有効かどうかをチェックします。</p>
+
+<pre class="brush: js">fetch('simple.wasm').then(response =&gt;
+  response.arrayBuffer()
+).then(function(bytes) {
+  var valid = WebAssembly.validate(bytes);
+  console.log("The given bytes are "
+ + (valid ? "" : "not ") + "a valid wasm module");
+});
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('WebAssembly JS', '#webassemblyvalidate', 'validate()')}}</td>
+ <td>{{Spec2('WebAssembly JS')}}</td>
+ <td>初回ドラフト定義。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{Compat("javascript.builtins.WebAssembly.validate")}}</div>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> overview page</li>
+ <li><a href="/ja/docs/WebAssembly/Concepts">WebAssembly のコンセプト</a></li>
+ <li><a href="/ja/docs/WebAssembly/Using_the_JavaScript_API">WebAssembly JavaScript API を使用する</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/index.html b/files/ja/web/javascript/reference/index.html
new file mode 100644
index 0000000000..fde8558ca0
--- /dev/null
+++ b/files/ja/web/javascript/reference/index.html
@@ -0,0 +1,433 @@
+---
+title: JavaScript リファレンス
+slug: Web/JavaScript/Reference
+tags:
+ - Code
+ - ECMAScript
+ - ECMAScript6
+ - ES6
+ - JS
+ - JavaScript
+ - Landing page
+ - Reference
+ - es
+ - 'l10n:priority'
+ - programming
+translation_of: Web/JavaScript/Reference
+---
+<div>{{JsSidebar}}</div>
+
+<p>MDN のこの JavaScript セクションは、JavaScript 言語についての情報倉庫となっています。詳しくは<a href="/ja/docs/Web/JavaScript/Reference/About">このリファレンスについて</a>を読んでください。</p>
+
+<h2 id="Built-ins" name="Built-ins">組み込み</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects">JavaScript の標準組み込みオブジェクト</a>、そのメソッドとプロパティです。。</p>
+
+<ul class="card-grid">
+ <li>
+ <h4 id="Value_properties" name="Value_properties">値プロパティ</h4>
+
+ <ul>
+ <li>{{JSxRef("Infinity")}}</li>
+ <li>{{JSxRef("NaN")}}</li>
+ <li>{{JSxRef("undefined")}}</li>
+ <li>{{JSxRef("globalThis")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Function_properties" name="Function_properties">関数プロパティ</h4>
+
+ <ul>
+ <li>{{JSxRef("Global_Objects/eval", "eval()")}}</li>
+ <li>{{JSxRef("Global_Objects/isFinite", "isFinite()")}}</li>
+ <li>{{JSxRef("Global_Objects/isNaN", "isNaN()")}}</li>
+ <li>{{JSxRef("Global_Objects/parseFloat", "parseFloat()")}}</li>
+ <li>{{JSxRef("Global_Objects/parseInt", "parseInt()")}}</li>
+ <li>{{JSxRef("Global_Objects/decodeURI", "decodeURI()")}}</li>
+ <li>{{JSxRef("Global_Objects/decodeURIComponent", "decodeURIComponent()")}}</li>
+ <li>{{JSxRef("Global_Objects/encodeURI", "encodeURI()")}}</li>
+ <li>{{JSxRef("Global_Objects/encodeURIComponent", "encodeURIComponent()")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Fundamental_objects" name="Fundamental_objects">基本オブジェクト</h4>
+
+ <ul>
+ <li>{{JSxRef("Object")}}</li>
+ <li>{{JSxRef("Function")}}</li>
+ <li>{{JSxRef("Boolean")}}</li>
+ <li>{{JSxRef("Symbol")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Error_objects" name="Error_objects">エラーオブジェクト</h4>
+
+ <ul>
+ <li>{{JSxRef("Error")}}</li>
+ <li>{{JSxRef("AggregateError")}}</li>
+ <li>{{JSxRef("EvalError")}}</li>
+ <li>{{JSxRef("InternalError")}}</li>
+ <li>{{JSxRef("RangeError")}}</li>
+ <li>{{JSxRef("ReferenceError")}}</li>
+ <li>{{JSxRef("SyntaxError")}}</li>
+ <li>{{JSxRef("TypeError")}}</li>
+ <li>{{JSxRef("URIError")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<ul class="card-grid">
+ <li>
+ <h4 id="Numbers_dates" name="Numbers_dates">数値と日付</h4>
+
+ <ul>
+ <li>{{JSxRef("Number")}}</li>
+ <li>{{JSxRef("BigInt")}}</li>
+ <li>{{JSxRef("Math")}}</li>
+ <li>{{JSxRef("Date")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Text_processing" name="Text_processing">テキスト処理</h4>
+
+ <ul>
+ <li>{{JSxRef("String")}}</li>
+ <li>{{JSxRef("RegExp")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Indexed_Collections" name="Indexed_Collections">インデックス付きコレクション</h4>
+
+ <ul>
+ <li>{{JSxRef("Array")}}</li>
+ <li>{{JSxRef("Int8Array")}}</li>
+ <li>{{JSxRef("Uint8Array")}}</li>
+ <li>{{JSxRef("Uint8ClampedArray")}}</li>
+ <li>{{JSxRef("Int16Array")}}</li>
+ <li>{{JSxRef("Uint16Array")}}</li>
+ <li>{{JSxRef("Int32Array")}}</li>
+ <li>{{JSxRef("Uint32Array")}}</li>
+ <li>{{JSxRef("Float32Array")}}</li>
+ <li>{{JSxRef("Float64Array")}}</li>
+ <li>{{JSxRef("BigInt64Array")}}</li>
+ <li>{{JSxRef("BigUint64Array")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Keyed_collections" name="Keyed_collections">キー付きコレクション</h4>
+
+ <ul>
+ <li>{{JSxRef("Map")}}</li>
+ <li>{{JSxRef("Set")}}</li>
+ <li>{{JSxRef("WeakMap")}}</li>
+ <li>{{JSxRef("WeakSet")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<ul class="card-grid">
+ <li>
+ <h4 id="Structured_data" name="Structured_data">構造化データ</h4>
+
+ <ul>
+ <li>{{JSxRef("ArrayBuffer")}}</li>
+ <li>{{JSxRef("SharedArrayBuffer")}}</li>
+ <li>{{JSxRef("Atomics")}}</li>
+ <li>{{JSxRef("DataView")}}</li>
+ <li>{{JSxRef("JSON")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Control_abstraction" name="Control_abstraction">抽象化の制御</h4>
+
+ <ul>
+ <li>{{JSxRef("GeneratorFunction")}}</li>
+ <li>{{JSxRef("AsyncGeneratorFunction")}}</li>
+ <li>{{JSxRef("Generator")}}</li>
+ <li>{{JSxRef("AsyncGenerator")}}</li>
+ <li>{{JSxRef("AsyncFunction")}}</li>
+ <li>{{JSxRef("Promise")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Reflection" name="Reflection">リフレクション</h4>
+
+ <ul>
+ <li>{{JSxRef("Reflect")}}</li>
+ <li>{{JSxRef("Proxy")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Internationalization" name="Internationalization">国際化</h4>
+
+ <ul>
+ <li>{{JSxRef("Intl")}}</li>
+ <li>{{JSxRef("Global_Objects/Intl/Collator", "Intl.Collator")}}</li>
+ <li>{{JSxRef("Global_Objects/Intl/DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+ <li>{{JSxRef("Global_Objects/Intl/DisplayNames", "Intl.DisplayNames")}}</li>
+ <li>{{JSxRef("Global_Objects/Intl/ListFormat", "Intl.ListFormat")}}</li>
+ <li>{{JSxRef("Global_Objects/Intl/Locale", "Intl.Locale")}}</li>
+ <li>{{JSxRef("Global_Objects/Intl/NumberFormat", "Intl.NumberFormat")}}</li>
+ <li>{{JSxRef("Global_Objects/Intl/PluralRules", "Intl.PluralRules")}}</li>
+ <li>{{JSxRef("Global_Objects/Intl/RelativeTimeFormat", "Intl.RelativeTimeFormat")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<ul class="card-grid">
+ <li>
+ <h4 id="WebAssembly">WebAssembly</h4>
+
+ <ul>
+ <li>{{JSxRef("WebAssembly")}}</li>
+ <li>{{JSxRef("WebAssembly.Module")}}</li>
+ <li>{{JSxRef("WebAssembly.Instance")}}</li>
+ <li>{{JSxRef("WebAssembly.Memory")}}</li>
+ <li>{{JSxRef("WebAssembly.Table")}}</li>
+ <li>{{JSxRef("WebAssembly.CompileError")}}</li>
+ <li>{{JSxRef("WebAssembly.LinkError")}}</li>
+ <li>{{JSxRef("WebAssembly.RuntimeError")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Statements" name="Statements">文</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Statements">JavaScript の文と宣言</a></p>
+
+<ul class="card-grid">
+ <li>
+ <h4 id="Control_flow" name="Control_flow">制御フロー</h4>
+
+ <ul>
+ <li>{{jsxref("Statements/block", "ブロック", "", 1)}}</li>
+ <li>{{jsxref("Statements/break", "break")}}</li>
+ <li>{{jsxref("Statements/continue", "continue")}}</li>
+ <li>{{jsxref("Statements/Empty", "空文", "", 1)}}</li>
+ <li>{{jsxref("Statements/if...else", "if...else")}}</li>
+ <li>{{jsxref("Statements/switch", "switch")}}</li>
+ <li>{{jsxref("Statements/throw", "throw")}}</li>
+ <li>{{jsxref("Statements/try...catch", "try...catch")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Declarations" name="Declarations">宣言</h4>
+
+ <ul>
+ <li>{{jsxref("Statements/var", "var")}}</li>
+ <li>{{jsxref("Statements/let", "let")}}</li>
+ <li>{{jsxref("Statements/const", "const")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Functions_and_classes" name="Functions_and_classes">関数とクラス</h4>
+
+ <ul>
+ <li>{{jsxref("Statements/function", "function")}}</li>
+ <li>{{jsxref("Statements/function*", "function*")}}</li>
+ <li>{{jsxref("Statements/async_function", "非同期関数", "", 1)}}</li>
+ <li>{{jsxref("Statements/return", "return")}}</li>
+ <li>{{jsxref("Statements/class", "class")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Iterations" name="Iterations">反復処理</h4>
+
+ <ul>
+ <li>{{jsxref("Statements/do...while", "do...while")}}</li>
+ <li>{{jsxref("Statements/for", "for")}}</li>
+ <li>{{jsxref("Statements/for_each...in", "for each...in")}}</li>
+ <li>{{jsxref("Statements/for...in", "for...in")}}</li>
+ <li>{{jsxref("Statements/for...of", "for...of")}}</li>
+ <li>{{jsxref("Statements/for-await...of", "for await...of")}}</li>
+ <li>{{jsxref("Statements/while", "while")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<ul class="card-grid">
+ <li>
+ <h4 id="Other" name="Other">その他</h4>
+
+ <ul>
+ <li>{{jsxref("Statements/debugger", "debugger")}}</li>
+ <li>{{jsxref("Statements/export", "export")}}</li>
+ <li>{{jsxref("Statements/import", "import")}}</li>
+ <li>{{jsxref("Statements/label", "label")}}</li>
+ <li>{{jsxref("Statements/with", "with")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Expressions_and_operators" name="Expressions_and_operators">式と演算子</h2>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators">JavaScript の式と演算子</a></p>
+
+<ul class="card-grid">
+ <li>
+ <h4 id="Primary_expressions" name="Primary_expressions">主要な式</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/this", "this")}}</li>
+ <li>{{JSxRef("Operators/function", "function")}}</li>
+ <li>{{JSxRef("Operators/class", "class")}}</li>
+ <li>{{JSxRef("Operators/function*", "function*")}}</li>
+ <li>{{JSxRef("Operators/yield", "yield")}}</li>
+ <li>{{JSxRef("Operators/yield*", "yield*")}}</li>
+ <li>{{JSxRef("Operators/async_function", "非同期関数", "", 1)}}</li>
+ <li>{{JSxRef("Operators/await", "await")}}</li>
+ <li>{{JSxRef("Global_Objects/Array", "[]")}}</li>
+ <li>{{JSxRef("Operators/Object_initializer", "{}")}}</li>
+ <li>{{JSxRef("Global_Objects/RegExp", "/ab+c/i")}}</li>
+ <li>{{JSxRef("Operators/Grouping", "( )")}}</li>
+ <li>{{JSxRef("null")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Left-hand-side_expressions" name="Left-hand-side_expressions">左辺式</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/Property_accessors", "プロパティアクセサー", "", 1)}}</li>
+ <li>{{JSxRef("Operators/new", "new")}}</li>
+ <li>{{JSxRef("Operators/new%2Etarget", "new.target")}}</li>
+ <li>{{JSxRef("Operators/super", "super")}}</li>
+ <li>{{JSxRef("Operators/Spread_syntax", "...obj")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Increment_decrement" name="Increment_decrement">インクリメント &amp; デクリメント</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "A++", "#Increment")}}</li>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "A--", "#Decrement")}}</li>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "++A", "#Increment")}}</li>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "--A", "#Decrement")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Unary_operators" name="Unary_operators">単項演算子</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/delete", "delete")}}</li>
+ <li>{{JSxRef("Operators/void", "void")}}</li>
+ <li>{{JSxRef("Operators/typeof", "typeof")}}</li>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "+", "#Unary_plus")}}</li>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "-", "#Unary_negation")}}</li>
+ <li>{{JSxRef("Operators/Bitwise_Operators", "~", "#Bitwise_NOT")}}</li>
+ <li>{{JSxRef("Operators/Logical_Operators", "!", "#Logical_NOT")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<ul class="card-grid">
+ <li>
+ <h4 id="Arithmetic_operators" name="Arithmetic_operators">算術演算子</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "+", "#Addition")}}</li>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "-", "#Subtraction")}}</li>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "/", "#Division")}}</li>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "*", "#Multiplication")}}</li>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "%", "#Remainder")}}</li>
+ <li>{{JSxRef("Operators/Arithmetic_Operators", "**", "#Exponentiation")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Relational_operators" name="Relational_operators">関係演算子</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/in", "in")}}</li>
+ <li>{{JSxRef("Operators/instanceof", "instanceof")}}</li>
+ <li>{{JSxRef("Operators/Comparison_Operators", "&lt;", "#Less_than_operator")}}</li>
+ <li>{{JSxRef("Operators/Comparison_Operators", "&gt;", "#Greater_than_operator")}}</li>
+ <li>{{JSxRef("Operators/Comparison_Operators", "&lt;=", "#Less_than_or_equal_operator")}}</li>
+ <li>{{JSxRef("Operators/Comparison_Operators", "&gt;=", "#Greater_than_or_equal_operator")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Equality_operators" name="Equality_operators">等価演算子</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/Comparison_Operators", "==", "#Equality")}}</li>
+ <li>{{JSxRef("Operators/Comparison_Operators", "!=", "#Inequality")}}</li>
+ <li>{{JSxRef("Operators/Comparison_Operators", "===", "#Identity")}}</li>
+ <li>{{JSxRef("Operators/Comparison_Operators", "!==", "#Nonidentity")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Bitwise_shift_operators" name="Bitwise_shift_operators">シフト演算子</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/Bitwise_Operators", "&lt;&lt;", "#Left_shift")}}</li>
+ <li>{{JSxRef("Operators/Bitwise_Operators", "&gt;&gt;", "#Right_shift")}}</li>
+ <li>{{JSxRef("Operators/Bitwise_Operators", "&gt;&gt;&gt;", "#Unsigned_right_shift")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<ul class="card-grid">
+ <li>
+ <h4 id="Binary_bitwise_operators" name="Binary_bitwise_operators">ビット演算子</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/Bitwise_Operators", "&amp;", "#Bitwise_AND")}}</li>
+ <li>{{JSxRef("Operators/Bitwise_Operators", "|", "#Bitwise_OR")}}</li>
+ <li>{{JSxRef("Operators/Bitwise_Operators", "^", "#Bitwise_XOR")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Binary_logical_operators" name="Binary_logical_operators">論理演算子</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/Logical_Operators", "&amp;&amp;", "#Logical_AND")}}</li>
+ <li>{{JSxRef("Operators/Logical_Operators", "||", "#Logical_OR")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Conditional_ternary_operator" name="Conditional_ternary_operator">条件(三項)演算子</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/Conditional_Operator", "(condition ? ifTrue : ifFalse)")}}</li>
+ </ul>
+ </li>
+ <li>
+ <h4 id="Assignment_operators" name="Assignment_operators">代入演算子</h4>
+
+ <ul>
+ <li>{{JSxRef("Operators/Assignment_Operators", "=", "#Assignment")}}</li>
+ <li>{{JSxRef("Operators/Assignment_Operators", "*=", "#Multiplication_assignment")}}</li>
+ <li>{{JSxRef("Operators/Assignment_Operators", "/=", "#Division_assignment")}}</li>
+ <li>{{JSxRef("Operators/Assignment_Operators", "%=", "#Remainder_assignment")}}</li>
+ <li>{{JSxRef("Operators/Assignment_Operators", "+=", "#Addition_assignment")}}</li>
+ <li>{{JSxRef("Operators/Assignment_Operators", "-=", "#Subtraction_assignment")}}</li>
+ <li>{{JSxRef("Operators/Assignment_Operators", "&lt;&lt;=", "#Left_shift_assignment")}}</li>
+ <li>{{JSxRef("Operators/Assignment_Operators", "&gt;&gt;=", "#Right_shift_assignment")}}</li>
+ <li>{{JSxRef("Operators/Assignment_Operators", "&gt;&gt;&gt;=", "#Unsigned_right_shift_assignment")}}</li>
+ <li>{{JSxRef("Operators/Assignment_Operators", "&amp;=", "#Bitwise_AND_assignment")}}</li>
+ <li>{{JSxRef("Operators/Assignment_Operators", "^=", "#Bitwise_XOR_assignment")}}</li>
+ <li>{{JSxRef("Operators/Assignment_Operators", "|=", "#Bitwise_OR_assignment")}}</li>
+ <li>{{JSxRef("Operators/Destructuring_assignment", "[a, b] = [1, 2]")}}</li>
+ <li>{{JSxRef("Operators/Destructuring_assignment", "{a, b} = {a:1, b:2}")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<p>この章では、アプリケーションの開発で <a href="/ja/docs/Web/JavaScript/Reference/Functions">JavaScript の関数</a> をどう使うかを説明しています。</p>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/arguments"><code>arguments</code></a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/Default_parameters">デフォルト引数</a> (default parameter)</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters">残余引数</a> (rest parameter)</li>
+</ul>
+
+<h2 id="Additional_reference_pages" name="Additional_reference_pages">追加のリファレンスページ</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar">字句文法</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Data_structures">データ型とデータ構造</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">Strict モード</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features">非推奨の機能</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/iteration_protocols/index.html b/files/ja/web/javascript/reference/iteration_protocols/index.html
new file mode 100644
index 0000000000..0ea6bd0831
--- /dev/null
+++ b/files/ja/web/javascript/reference/iteration_protocols/index.html
@@ -0,0 +1,394 @@
+---
+title: 反復処理プロトコル
+slug: Web/JavaScript/Reference/Iteration_protocols
+tags:
+ - ECMAScript 2015
+ - Intermediate
+ - Iterable
+ - Iterator
+ - JavaScript
+ - ガイド
+ - プロトコル
+ - 中級者
+ - 反復処理
+ - 反復子
+translation_of: Web/JavaScript/Reference/Iteration_protocols
+---
+<div>{{jsSidebar("More")}}</div>
+
+<p>ECMAScript 2015 で追加されたいくつかの機能の中で、<strong>反復処理プロトコル</strong>は新しい組み込みオブジェクトや構文ではなく<em>プロトコル</em>です。これらのプロトコルは以下のような単純な約束事によって、すべてのオブジェクトで実装することができます。</p>
+
+<p>プロトコルは2つあります。 <a href="#The_iterable_protocol">反復可能プロトコル</a>と <a href="#The_iterator_protocol">反復子プロトコル</a>です。</p>
+
+<h2 id="The_iterable_protocol" name="The_iterable_protocol">反復可能 (iterable) プロトコル</h2>
+
+<p><strong>反復可能プロトコル</strong>によって、 JavaScript のオブジェクトは反復動作を定義またはカスタマイズすることができます。例えば、 {{jsxref("Statements/for...of", "for...of")}} 構造の中でどの値がループに使われるかです。一部の組み込み型は既定の反復動作を持つ<a href="#Built-in_iterables">組み込み反復可能オブジェクト</a>で、これには {{jsxref("Array")}} や {{jsxref("Map")}} がありますが、他の型 ({{jsxref("Object")}} など) はそうではありません。</p>
+
+<p><strong>反復可能</strong>であるために、オブジェクトは <code><strong>@@iterator</strong></code> メソッドを実装する必要があります。これはつまり、オブジェクト (または、<a href="/ja/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain">プロトタイプチェーン</a>上のオブジェクトの一つ) が {{jsxref("Symbol.iterator")}} 定数にて利用できる <code>@@iterator</code> キーのプロパティを持つ必要があります。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">プロパティ</th>
+ <th scope="col">値</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>[Symbol.iterator]</code></td>
+ <td><a href="#The_iterator_protocol">反復子プロトコル</a>に準拠するオブジェクトを返す、引数なしの関数。</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>({{jsxref("Statements/for...of", "for...of")}} ループの始まりのように) オブジェクトが反復される必要があるときはいつでも、その <code>@@iterator</code> メソッドが引数なしで呼ばれます。そして、返される<strong>反復子</strong>は、反復される値を取得するために使用されます。</p>
+
+<p>なお、この引数なしの関数が呼び出されると、反復可能オブジェクト上のメソッドとして呼び出されます。従って関数の中では、 <code>this</code> キーワードを反復可能オブジェクトのプロパティにアクセスするために使用して、反復の間に何を提供するかを決めることができます。</p>
+
+<p>この関数は普通の関数、またはジェネレーター関数にすることができ、そのため呼び出されると、反復子オブジェクトが返されます。このジェネレーター関数の中では <code>yield</code> を使用してそれぞれの項目を提供することができます。</p>
+
+<h2 id="The_iterator_protocol" name="The_iterator_protocol">反復子 (iterator) プロトコル</h2>
+
+<p><strong>反復子プロトコル</strong>は、値のシーケンス (有限でも無限でも) を生成するための標準的な方法と、すべての値が生成された場合の返値を定義します。</p>
+
+<p>以下の意味で <code><strong>next()</strong></code> メソッドを実装していれば、オブジェクトは反復子になります。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">プロパティ</th>
+ <th scope="col">値</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>next()</code></td>
+ <td>
+ <p>引数なしの関数で、少なくとも以下の二つのプロパティを持つオブジェクトを返します。</p>
+
+ <dl>
+ <dt><code>done</code> (boolean)</dt>
+ <dd>
+ <p>反復子がシーケンス内の次の値を生成できるとき <code>false</code> の値になります。 (これは <code>done</code> プロパティが指定されていない場合も同じです。)</p>
+
+ <p>反復子が反復シーケンスを終了した場合、 <code>true</code> の値になります。この場合、 <code>value</code> は任意で反復子の返値を指定します。</p>
+ </dd>
+ <dt><code>value</code></dt>
+ <dd>反復子によって返される任意の JavaScript 値。 <code>done</code> が <code>true</code> のときは省略することができます。</dd>
+ </dl>
+
+ <p><code>next()</code> メソッドは常に <code>done</code> や <code>value</code> などの適切なプロパティを持つオブジェクトを返します。オブジェクトでない値が返された場合 (例えば <code>false</code> や <code>undefined</code>)、 {{jsxref("TypeError")}} (<code>"iterator.next() returned a non-object value"</code>) が発生します。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<div class="note">
+<p><strong>メモ:</strong> 特定のオブジェクトが反復子プロトコルを実装しているかどうかを反射的に知ることはできません。しかし、反復子プロトコルと反復可能プロトコルの<em>両方</em>を満たすオブジェクトを作成するのは簡単です (以下の例にあるように)。</p>
+
+<p>そうすることで、反復可能オブジェクトを期待するさまざまな構文で反復子を使用できます。したがって、反復子プロトコルを実装するには反復可能プロトコルも実装しないと、ほとんど役に立ちません。</p>
+
+<pre class="brush: js example-good">// 反復子と反復可能の両プロトコルを満たす
+let myIterator = {
+ next: function() {
+ // ...
+ },
+ [Symbol.iterator]: function() { return this; }
+};
+</pre>
+</div>
+
+<h2 id="Examples_using_the_iteration_protocols" name="Examples_using_the_iteration_protocols">例: 反復処理プロトコルの使用</h2>
+
+<p>{{jsxref("String")}} は組み込み反復可能オブジェクトの一例です。</p>
+
+<pre class="brush: js">let someString = 'hi';
+console.log(typeof someString[Symbol.iterator]); // "function"
+</pre>
+
+<p><code>String</code> の{{jsxref("String/@@iterator", "既定の反復子", "", 1)}}は文字列のコードポイントを1つずつ返します。</p>
+
+<pre class="brush: js">let iterator = someString[Symbol.iterator]();
+console.log(iterator + ''); // "[object String Iterator]"
+
+console.log(iterator.next()); // { value: "h", done: false }
+console.log(iterator.next()); // { value: "i", done: false }
+console.log(iterator.next()); // { value: undefined, done: true }</pre>
+
+<p>一部の組み込みコンストラクター — 例えば{{jsxref("Operators/Spread_operator", "スプレッド構文", "", 1)}} — は、まったく同じ反復処理プロトコルを使用しています。</p>
+
+<pre class="brush: js">console.log([...someString]); // ["h", "i"]</pre>
+
+<p>自身の <code>@@iterator</code> を提供することによって反復動作を再定義できます。:</p>
+
+<pre class="brush: js">// need to construct a String object explicitly to avoid auto-boxing
+let someString = new String('hi');
+
+someString[Symbol.iterator] = function () {
+ return {
+ // this is the iterator object, returning a single element (the string "bye")
+ next: function () {
+ return this._first ? {
+ value: 'bye',
+ done: (this._first = false)
+ } : {
+ done: true
+ }
+ },
+ _first: true
+ };
+};
+</pre>
+
+<p><code>@@iterator</code> を再定義することによって、反復処理プロトコルを使用する組み込みコンストラクターの動作にどれほど影響を与えるか注意してください。</p>
+
+<pre class="brush: js">console.log([...someString]); // ["bye"]
+console.log(someString + ''); // "hi"
+</pre>
+
+<h2 id="Iterable_examples" name="Iterable_examples">反復可能プロトコルの例</h2>
+
+<h3 id="Built-in_iterables" name="Built-in_iterables">組み込み反復可能オブジェクト</h3>
+
+<p>{{jsxref("String")}}, {{jsxref("Array")}}, {{jsxref("TypedArray")}}, {{jsxref("Map")}}, {{jsxref("Set")}} は、すべての組み込み反復可能オブジェクトです。というのも、それらすべてのプロトタイプオブジェクトは <code>@@iterator</code> メソッドをもつからです。</p>
+
+<h3 id="User-defined_iterables" name="User-defined_iterables">ユーザー定義の反復可能オブジェクト</h3>
+
+<p>下記のように反復可能オブジェクトを生成できます。</p>
+
+<pre class="brush: js">let myIterable = {};
+myIterable[Symbol.iterator] = function* () {
+ yield 1;
+ yield 2;
+ yield 3;
+};
+console.log([...myIterable]); // [1, 2, 3]
+</pre>
+
+<h3 id="Built-in_APIs_accepting_iterables" name="Built-in_APIs_accepting_iterables">反復可能オブジェクトを受け入れる組み込み API</h3>
+
+<p>反復可能オブジェクトを受け入れる API はたくさんあります。以下はその例です。</p>
+
+<ul>
+ <li>{{jsxref("Map", "new Map([<var>iterable</var>])")}}</li>
+ <li>{{jsxref("WeakMap", "new WeakMap([<var>iterable</var>])")}}</li>
+ <li>{{jsxref("Set", "new Set([<var>iterable</var>])")}}</li>
+ <li>{{jsxref("WeakSet", "new WeakSet([<var>iterable</var>])")}}</li>
+</ul>
+
+<pre class="brush: js">new Map([[1, 'a'], [2, 'b'], [3, 'c']]).get(2); // "b"
+
+let myObj = {};
+
+new WeakMap([
+ [{}, 'a'],
+ [myObj, 'b'],
+ [{}, 'c']
+]).get(myObj); // "b"
+
+new Set([1, 2, 3]).has(3); // true
+new Set('123').has('2'); // true
+
+new WeakSet(function* () {
+ yield {}
+ yield myObj
+ yield {}
+}()).has(myObj); // true
+</pre>
+
+<h4 id="See_Also" name="See_Also">関連情報</h4>
+
+<ul>
+ <li>{{jsxref("Promise.all()", "Promise.all(<var>iterable</var>)")}}</li>
+ <li>{{jsxref("Promise.race()", "Promise.race(<var>iterable</var>)")}}</li>
+ <li>{{jsxref("Array.from()", "Array.from(<var>iterable</var>)")}}</li>
+</ul>
+
+<h3 id="Syntaxes_expecting_iterables" name="Syntaxes_expecting_iterables">反復可能オブジェクトを期待する構文</h3>
+
+<p>いくつかの文や式は反復可能オブジェクトを期待します。例えば、 {{jsxref("Statements/for...of", "for...of")}} ループ、{{jsxref("Operators/Spread_syntax", "スプレッド演算子", "", "1")}}、{{jsxref("Operators/yield*", "yield*")}}、{{jsxref("Operators/Destructuring_assignment", "分割代入", "", "1")}} などです。</p>
+
+<pre class="brush: js">for (let value of ['a', 'b', 'c']) {
+ console.log(value);
+}
+// "a"
+// "b"
+// "c"
+
+console.log([...'abc']); // ["a", "b", "c"]
+
+function* gen() {
+ yield* ['a', 'b', 'c'];
+}
+
+console.log(gen().next()); // { value: "a", done: false }
+
+[a, b, c] = new Set(['a', 'b', 'c']);
+console.log(a); // "a"
+
+</pre>
+
+<h3 id="Non-well-formed_iterables" name="Non-well-formed_iterables">非整形反復可能オブジェクト</h3>
+
+<p>反復可能オブジェクトの <code>@@iterator</code> メソッドが反復子オブジェクトを返さない場合、それは<em>非整形</em>反復可能オブジェクトと見なされます。</p>
+
+<p>これを使用すると、ランタイムエラーやバグの挙動をもたらす可能性があります。</p>
+
+<pre class="brush: js example-bad">let nonWellFormedIterable = {}
+nonWellFormedIterable[Symbol.iterator] = () =&gt; 1
+[...nonWellFormedIterable] // TypeError: [] is not a function
+</pre>
+
+<h2 id="Iterator_examples" name="Iterator_examples">反復子の例</h2>
+
+<h3 id="Simple_iterator" name="Simple_iterator">簡単な反復子</h3>
+
+<pre class="brush: js">function makeIterator(array) {
+ let nextIndex = 0
+ return {
+ next: function() {
+ return nextIndex &lt; array.length ? {
+ value: array[nextIndex++],
+ done: false
+ } : {
+ done: true
+ };
+ }
+ };
+}
+
+let it = makeIterator(['yo', 'ya']);
+
+console.log(it.next().value); // 'yo'
+console.log(it.next().value); // 'ya'
+console.log(it.next().done); // true
+</pre>
+
+<h3 id="Infinite_iterator" name="Infinite_iterator">無限の反復子</h3>
+
+<pre class="brush: js">function idMaker() {
+ let index = 0;
+ return {
+ next: function() {
+ return {
+ value: index++,
+ done: false
+ };
+ }
+ };
+}
+
+let it = idMaker();
+
+console.log(it.next().value); // '0'
+console.log(it.next().value); // '1'
+console.log(it.next().value); // '2'
+// ...
+</pre>
+
+<h3 id="With_a_generator" name="With_a_generator">ジェネレーターで</h3>
+
+<pre class="brush: js">function* makeSimpleGenerator(array) {
+ let nextIndex = 0;
+ while (nextIndex &lt; array.length) {
+ yield array[nextIndex++];
+ }
+}
+
+let gen = makeSimpleGenerator(['yo', 'ya']);
+
+console.log(gen.next().value); // 'yo'
+console.log(gen.next().value); // 'ya'
+console.log(gen.next().done); // true
+
+function* idMaker() {
+ let index = 0;
+ while (true) {
+ yield index++;
+ }
+}
+
+let gen = idMaker()
+
+console.log(gen.next().value); // '0'
+console.log(gen.next().value); // '1'
+console.log(gen.next().value); // '2'
+// ...
+</pre>
+
+<h3 id="With_ES2015_class" name="With_ES2015_class">ES2015 クラスで</h3>
+
+<pre class="brush: js">class SimpleClass {
+ constructor(data) {
+ this.data = data;
+ }
+
+ [Symbol.iterator]() {
+ // Use a new index for each iterator. This makes multiple
+ // iterations over the iterable safe for non-trivial cases,
+ // such as use of break or nested looping over the same iterable.
+ let index = 0;
+
+ return {
+ next: () =&gt; {
+ if (index &lt; this.data.length) {
+ return {value: this.data[index++], done: false}
+ } else {
+ return {done: true}
+ }
+ }
+ }
+ }
+}
+
+const simple = new SimpleClass([1,2,3,4,5]);
+
+for (const val of simple) {
+ console.log(val); // '1' '2' '3' '4' '5'
+}
+</pre>
+
+<h2 id="Is_a_generator_object_an_iterator_or_an_iterable" name="Is_a_generator_object_an_iterator_or_an_iterable">ジェネレーターは反復子か反復可能か</h2>
+
+<p>{{jsxref("Generator", "ジェネレーターオブジェクト", "", 1)}} は、反復子でも反復可能でもあります。</p>
+
+<pre class="brush: js">let aGeneratorObject = function* () {
+ yield 1;
+ yield 2;
+ yield 3;
+}();
+
+console.log(typeof aGeneratorObject.next);
+// "function", because it has a next method, so it's an iterator
+
+console.log(typeof aGeneratorObject[Symbol.iterator]);
+// "function", because it has an @@iterator method, so it's an iterable
+
+console.log(aGeneratorObject[Symbol.iterator]() === aGeneratorObject);
+// true, because its @@iterator method returns itself (an iterator), so it's an well-formed iterable
+
+console.log([...aGeneratorObject]);
+// [1, 2, 3]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-iteration', 'Iteration')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>ES2015 のジェネレーターの詳細については、<br>
+ {{jsxref("Statements/function*", "<code>function*</code> のドキュメント", "", 1)}}を参照してください。</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/lexical_grammar/index.html b/files/ja/web/javascript/reference/lexical_grammar/index.html
new file mode 100644
index 0000000000..c2a2460f19
--- /dev/null
+++ b/files/ja/web/javascript/reference/lexical_grammar/index.html
@@ -0,0 +1,659 @@
+---
+title: 字句文法
+slug: Web/JavaScript/Reference/Lexical_grammar
+tags:
+ - JavaScript
+ - Keyword
+ - Lexical Grammar
+ - Literal
+ - キーワード
+ - リテラル
+ - 字句文法
+translation_of: Web/JavaScript/Reference/Lexical_grammar
+---
+<div>{{JsSidebar("More")}}</div>
+
+<p>このページでは、 JavaScript の字句文法について説明します。 ECMAScript スクリプトのソーステキストは、左から右へスキャンされ、入力要素、すなわちトークン、制御文字、行末、コメント、{{glossary("whitespace", "ホワイトスペース")}}の並びに変換されます。 ECMAScript も、特定のキーワードとリテラルを定義しており、文を終了するにはセミコロンを自動挿入するためのルールがあります。</p>
+
+<h2 id="Control_characters" name="Control_characters">制御文字</h2>
+
+<p>制御文字は、視覚的表現を有していないものの、テキストの解釈を制御するために使用されます。</p>
+
+<table class="standard-table">
+ <caption>Unicode の書式制御文字</caption>
+ <thead>
+ <tr>
+ <th>コードポイント</th>
+ <th>名称</th>
+ <th>略語</th>
+ <th>説明</th>
+ </tr>
+ </thead>
+ <thead>
+ <tr>
+ <td><code>U+200C</code></td>
+ <td>ゼロ幅非接合子</td>
+ <td>&lt;ZWNJ&gt;</td>
+ <td>特定の言語において、合字に接合されることを防ぐために、文字の間に配置されます。(<a href="https://ja.wikipedia.org/wiki/%E3%82%BC%E3%83%AD%E5%B9%85%E9%9D%9E%E6%8E%A5%E5%90%88%E5%AD%90">Wikipedia</a>).</td>
+ </tr>
+ <tr>
+ <td><code>U+200D</code></td>
+ <td>ゼロ幅接合子</td>
+ <td>&lt;ZWJ&gt;</td>
+ <td>特定の言語において、通常は接合されない文字を、接合した形を使用して文字を表示するために文字間に配置されます。 (<a href="https://ja.wikipedia.org/wiki/%E3%82%BC%E3%83%AD%E5%B9%85%E6%8E%A5%E5%90%88%E5%AD%90">Wikipedia</a>)</td>
+ </tr>
+ <tr>
+ <td><code>U+FEFF</code></td>
+ <td>バイトオーダーマーク</td>
+ <td>&lt;BOM&gt;</td>
+ <td>スクリプトの先頭において、 Unicode を使用することと、そのテキストのバイト順をマークします。 (<a href="https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E3%82%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%83%9E%E3%83%BC%E3%82%AF">Wikipedia</a>).</td>
+ </tr>
+ </thead>
+</table>
+
+<h2 id="White_space" name="White_space">ホワイトスペース</h2>
+
+<p>{{glossary("whitespace", "ホワイトスペース")}}はソースのテキストの読みやすさを向上させ、トークンを互いに区別します。これらの文字は通常、コードの機能性には不要なものです。 <a href="http://en.wikipedia.org/wiki/Minification_%28programming%29">Minification tools</a> を使用して、転送する必要があるデータの量を削減するためにホワイトスペースを除去することがよく行われます。</p>
+
+<table class="standard-table">
+ <caption>ホワイトスペース文字</caption>
+ <thead>
+ <tr>
+ <th>コードポイント</th>
+ <th>名称</th>
+ <th>略語</th>
+ <th>説明</th>
+ <th>エスケープシーケンス</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>U+0009</td>
+ <td>文字単位のタブ</td>
+ <td>&lt;HT&gt;</td>
+ <td>水平タブ</td>
+ <td>\t</td>
+ </tr>
+ <tr>
+ <td>U+000B</td>
+ <td>行単位のタブ</td>
+ <td>&lt;VT&gt;</td>
+ <td>垂直タブ</td>
+ <td>\v</td>
+ </tr>
+ <tr>
+ <td>U+000C</td>
+ <td>フォームフィード</td>
+ <td>&lt;FF&gt;</td>
+ <td>改ページの制御文字 (<a href="http://en.wikipedia.org/wiki/Page_break#Form_feed">Wikipedia</a>).</td>
+ <td>\f</td>
+ </tr>
+ <tr>
+ <td>U+0020</td>
+ <td>空白</td>
+ <td>&lt;SP&gt;</td>
+ <td>通常の空白</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>U+00A0</td>
+ <td>ノーブレークスペース</td>
+ <td>&lt;NBSP&gt;</td>
+ <td>通常の空白だが、改行を行ってよい位置ではない</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>Others</td>
+ <td>他の Unicode の空白文字</td>
+ <td>&lt;USP&gt;</td>
+ <td><a href="http://en.wikipedia.org/wiki/Space_%28punctuation%29#Spaces_in_Unicode">Spaces in Unicode on Wikipedia</a></td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Line_terminators" name="Line_terminators">行末文字</h2>
+
+<p>{{glossary("Whitespace", "ホワイトスペース")}}文字に加えて、行末文字もソースのテキストの読みやすさを改善するために使用されます。しかし、行末文字は JavaScript の実行に影響を与える場合があり、禁止されている場所もいくらかあります。行末文字は<a href="#Automatic_semicolon_insertion">自動的なセミコロンの挿入</a>の処理にも影響を与えます。行末文字は<a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a>の <strong>\s</strong> クラスに一致します。</p>
+
+<p>以下の Unicode コードポイントのみが ECMAScript では行末文字として扱われ、他の改行文字はホワイトスペースとして扱われます (例えば、次の行、 NEL、 U+0085 はホワイトスペースと見なされます)。</p>
+
+<table class="standard-table">
+ <caption>行末文字</caption>
+ <thead>
+ <tr>
+ <th>コードポイント</th>
+ <th>名称</th>
+ <th>略語</th>
+ <th>説明</th>
+ <th>エスケープシーケンス</th>
+ </tr>
+ </thead>
+ <thead>
+ </thead>
+ <tbody>
+ <tr>
+ <td>U+000A</td>
+ <td>ラインフィード</td>
+ <td>&lt;LF&gt;</td>
+ <td>UNIX システムでの改行文字です。</td>
+ <td>\n</td>
+ </tr>
+ <tr>
+ <td>U+000D</td>
+ <td>キャリッジリターン</td>
+ <td>&lt;CR&gt;</td>
+ <td>コモドールと初期の Mac システムでの改行文字です。</td>
+ <td>\r</td>
+ </tr>
+ <tr>
+ <td>U+2028</td>
+ <td>ラインセパレーター</td>
+ <td>&lt;LS&gt;</td>
+ <td><a href="http://en.wikipedia.org/wiki/Newline">Wikipedia</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>U+2029</td>
+ <td>改段落</td>
+ <td>&lt;PS&gt;</td>
+ <td><a href="http://en.wikipedia.org/wiki/Newline">Wikipedia</a></td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Comments" name="Comments">コメント</h2>
+
+<p>コメントは、ヒント、メモ、提案、警告を JavaScript のコードに追加するために使用されます。これにより、コードがより読みやすく、より理解しやすいものなります。また、コードが実行されないよう無効にするために使用することができます。これは、貴重なデバッグツールになることがあります。</p>
+
+<p>JavaScript には、コード内にコメントを割り当てる方法が 2 つあります。</p>
+
+<p>一番目の方法は <code>//</code> コメントです。つまり、これは同じ行にある、その後のすべてのテキストをコメントにします。例えば、</p>
+
+<pre class="brush: js">function comment() {
+ // This is a one line JavaScript comment
+ console.log('Hello world!');
+}
+comment();
+</pre>
+
+<p>二番目の方法は <code>/* */</code> スタイルで、もっとずっと柔軟なものです。</p>
+
+<p>例えば、単一行に利用した場合は次のようになります。</p>
+
+<pre class="brush: js">function comment() {
+ /* This is a one line JavaScript comment */
+ console.log('Hello world!');
+}
+comment();</pre>
+
+<p>複数行のコメントも下記のように作成することができます。</p>
+
+<pre class="brush: js">function comment() {
+ /* This comment spans multiple lines. Notice
+ that we don't need to end the comment until we're done. */
+ console.log('Hello world!');
+}
+comment();</pre>
+
+<p>必要であれば、行の途中でコメントを使用することもできますが、これはコードが読みにくくなることがあるので注意が必要です。</p>
+
+<pre class="brush: js">function comment(x) {
+ console.log('Hello ' + x /* insert the value of x */ + ' !');
+}
+comment('world');</pre>
+
+<p>また、コードをコメントで囲むことで、コードが実行されないよう無効にすることができます。</p>
+
+<pre class="brush: js">function comment() {
+ /* console.log('Hello world!'); */
+}
+comment();</pre>
+
+<p>この場合、 <code>console.log()</code> の呼び出しはコメント内部にあるので、実行されることはありません。何行分のコードであっても、このようにして無効にすることができます。</p>
+
+<h2 id="Hashbang_comments" name="Hashbang_comments">ハッシュバンコメント</h2>
+
+<p>特殊な三番目のコメントの構文である<strong>ハッシュバンコメント</strong>は、 ECMAScript で標準化の途中にあるものです (<a href="https://github.com/tc39/proposal-hashbang">Hashbang Grammar proposal</a> を参照してください)。</p>
+
+<p>ハッシュバンコメントは、ちょうど単一行コメント (<code>//</code>) のように動作しますが、 <code>#!</code> で始まり、<strong>スクリプトやモジュールの絶対的な開始位置にある場合のみ有効</strong>です。 <code>#!</code> の前にホワイトスペースも許されないことに注意してください。このコメントは <code>#!</code> の後から最初の行の末尾までのすべての文字で構成されます。このコメントは1つだけが許可されます。</p>
+
+<p>ハッシュバンコメントは、スクリプトを実行したい特定の JavaScript インタープリターへのパスを指定します。例えば次のようになります。</p>
+
+<pre class="brush: js">#!/usr/bin/env node
+
+console.log("Hello world");
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>メモ</strong>: JavaScript のハッシュバンコメントは、ファイルを正しいインタープリターで実行するために使用される <a href="https://en.wikipedia.org/wiki/Shebang_(Unix)">UNIX のシバン</a>を模倣したものです。</p>
+</div>
+
+<div class="blockIndicator warning">
+<p>ハッシュバンコメントの前に <a href="https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E3%82%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%83%9E%E3%83%BC%E3%82%AF">BOM</a> があってもブラウザーでは動作しますが、ハッシュバンのあるスクリプトで BOM を使用することは推奨されていません。 BOM は Unix/Linux でスクリプトを実行しようとすると動作しません。したがって、シェルから直接スクリプトを実行したい場合は BOM の付かない UTF-8 を使用してください。</p>
+</div>
+
+<p><code>#!</code> の形のコメントは JavaScript インタープリターを指定するためにだけ使用してください。他の用途ではすべて <code>//</code> のコメント (または複数行コメント) を使用してください。</p>
+
+<h2 id="Keywords" name="Keywords">キーワード</h2>
+
+<h3 id="Reserved_keywords_as_of_ECMAScript_2015" name="Reserved_keywords_as_of_ECMAScript_2015">ECMAScript 2015 における予約キーワード</h3>
+
+<ul class="threecolumns">
+ <li>{{jsxref("Statements/break", "break")}}</li>
+ <li>{{jsxref("Statements/switch", "case")}}</li>
+ <li>{{jsxref("Statements/try...catch", "catch")}}</li>
+ <li>{{jsxref("Statements/class", "class")}}</li>
+ <li>{{jsxref("Statements/const", "const")}}</li>
+ <li>{{jsxref("Statements/continue", "continue")}}</li>
+ <li>{{jsxref("Statements/debugger", "debugger")}}</li>
+ <li>{{jsxref("Statements/default", "default")}}</li>
+ <li>{{jsxref("Operators/delete", "delete")}}</li>
+ <li>{{jsxref("Statements/do...while", "do")}}</li>
+ <li>{{jsxref("Statements/if...else", "else")}}</li>
+ <li>{{jsxref("Statements/export", "export")}}</li>
+ <li>{{jsxref("Statements/class", "extends")}}</li>
+ <li>{{jsxref("Statements/try...catch", "finally")}}</li>
+ <li>{{jsxref("Statements/for", "for")}}</li>
+ <li>{{jsxref("Statements/function", "function")}}</li>
+ <li>{{jsxref("Statements/if...else", "if")}}</li>
+ <li>{{jsxref("Statements/import", "import")}}</li>
+ <li>{{jsxref("Operators/in", "in")}}</li>
+ <li>{{jsxref("Operators/instanceof", "instanceof")}}</li>
+ <li>{{jsxref("Operators/new", "new")}}</li>
+ <li>{{jsxref("Statements/return", "return")}}</li>
+ <li>{{jsxref("Operators/super", "super")}}</li>
+ <li>{{jsxref("Statements/switch", "switch")}}</li>
+ <li>{{jsxref("Operators/this", "this")}}</li>
+ <li>{{jsxref("Statements/throw", "throw")}}</li>
+ <li>{{jsxref("Statements/try...catch", "try")}}</li>
+ <li>{{jsxref("Operators/typeof", "typeof")}}</li>
+ <li>{{jsxref("Statements/var", "var")}}</li>
+ <li>{{jsxref("Operators/void", "void")}}</li>
+ <li>{{jsxref("Statements/while", "while")}}</li>
+ <li>{{jsxref("Statements/with", "with")}}</li>
+ <li>{{jsxref("Operators/yield", "yield")}}</li>
+</ul>
+
+<h3 id="Future_reserved_keywords" name="Future_reserved_keywords">今後の予約済みキーワード</h3>
+
+<p>以下のものは、 ECMAScript の仕様によって今後のキーワードとして予約されています。これらは現時点では特別な機能を持っていませんが、将来は持つ可能性があるので、識別子として使用することはできません。</p>
+
+<p>以下のものは常に予約されています。</p>
+
+<ul>
+ <li><code>enum</code></li>
+</ul>
+
+<p>以下のものは、 strict モードで遭遇した場合のみ予約語になります。</p>
+
+<ul class="threecolumns">
+ <li><code>implements</code></li>
+ <li><code>interface</code></li>
+ <li>{{jsxref("Statements/let", "let")}}</li>
+ <li><code>package</code></li>
+ <li><code>private</code></li>
+ <li><code>protected</code></li>
+ <li><code>public</code></li>
+ <li><code>static</code></li>
+</ul>
+
+<p>以下のものは、モジュールコードで遭遇した場合のみ予約語になります。</p>
+
+<ul>
+ <li><code>await</code></li>
+</ul>
+
+<h4 id="Future_reserved_keywords_in_older_standards" name="Future_reserved_keywords_in_older_standards">旧仕様にあった今後の予約キーワード</h4>
+
+<p>以前の ECMAScript の仕様書 (ECMAScript 1 から 3 まで) では、以下のものが将来のキーワードとして予約されています。</p>
+
+<ul class="threecolumns">
+ <li><code>abstract</code></li>
+ <li><code>boolean</code></li>
+ <li><code>byte</code></li>
+ <li><code>char</code></li>
+ <li><code>double</code></li>
+ <li><code>final</code></li>
+ <li><code>float</code></li>
+ <li><code>goto</code></li>
+ <li><code>int</code></li>
+ <li><code>long</code></li>
+ <li><code>native</code></li>
+ <li><code>short</code></li>
+ <li><code>synchronized</code></li>
+ <li><code>throws</code></li>
+ <li><code>transient</code></li>
+ <li><code>volatile</code></li>
+</ul>
+
+<p>加えて、 <code>null</code>, <code>true</code>, <code>false</code> の各リテラルは、 ECMAScript では識別子として使用することができません。</p>
+
+<h3 id="Reserved_word_usage" name="Reserved_word_usage">予約語の使用</h3>
+
+<p>予約語は実際には (<em>IdentifierName</em> ではなく) 識別子にのみ適用されます。 <a href="http://es5.github.com/#A.1">es5.github.com/#A.1</a> に記載されているように、これらはすべて<em>IdentifierName</em> であり、<em>ReservedWord</em> を除外しません。</p>
+
+<pre class="brush: js">a.import
+a['import']
+a = { import: 'test' }.
+</pre>
+
+<p>一方、以下のものは<em>Identifier</em> であり、<em>IdentifierName</em> から予約語を除外したものであるからです。識別子は、<em>FunctionDeclaration</em>,<em>FunctionExpression</em>,<em>VariableDeclaration</em> などのために使用されます。 Identifiers は<em>FunctionDeclaration</em>,<em>FunctionExpression</em>,<em>VariableDeclaration</em> などについて使用されます。<em>IdentifierNames</em> は<em>MemberExpression</em>,<em>CallExpression</em> などについて使用されます。</p>
+
+<pre class="brush: js">function import() {} // 違反</pre>
+
+<h2 id="Literals" name="Literals">リテラル</h2>
+
+<h3 id="Null_literal" name="Null_literal">Null リテラル</h3>
+
+<p>詳細については {{jsxref("null")}} をご覧ください。</p>
+
+<pre class="brush: js">null</pre>
+
+<h3 id="Boolean_literal" name="Boolean_literal">真偽値リテラル</h3>
+
+<p>詳細について、 {{jsxref("Boolean")}} をご覧ください。</p>
+
+<pre class="brush: js">true
+false</pre>
+
+<h3 id="Numeric_literals" name="Numeric_literals">数値リテラル</h3>
+
+<p>{{jsxref("Number")}} および {{jsxref("BigInt")}} 型が数値リテラルを使用します。</p>
+
+<h4 id="Decimal" name="Decimal">10進数</h4>
+
+<pre class="brush: js">1234567890
+42
+
+// 先頭にゼロがあるものを使用する場合は注意してください
+0888 // 888 は10進数として解釈されます
+0777 // 8進数として解釈され、10進数では 511 です。
+</pre>
+
+<p>なお、10進数リテラルはゼロ (<code>0</code>) から始め、他の10進数の数字を続けることができますが、 <code>0</code> に続く数字がすべて8より小さい場合は、その数値が8進数として解釈されることに注意してください。 JavaScript では、この場合に例外が発生しませんので、 {{bug(957513)}} をご覧ください。 {{jsxref("parseInt", "parseInt()")}} についてのページもご覧ください。</p>
+
+<h4 id="Binary" name="Binary">2進数</h4>
+
+<p>2進数の構文は、先頭のゼロに続いて小文字または大文字のラテン文字 "B" を使用します (<code>0b</code> または <code>0B</code>)。この構文は ECMAScript 2015 の新しい構文なので、下記のブラウザー互換性表をご覧ください。 <code>0b</code> の後の数字が 0 または 1 でない場合は、 {{jsxref("SyntaxError")}} が "Missing binary digits after 0b" の内容で発生します。</p>
+
+<pre class="brush: js">var FLT_SIGNBIT = 0b10000000000000000000000000000000; // 2147483648
+var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
+var FLT_MANTISSA = 0B00000000011111111111111111111111; // 8388607</pre>
+
+<h4 id="Octal" name="Octal">8進数</h4>
+
+<p>8進数の構文は、先頭のゼロに続いて小文字または大文字のラテン文字"O" を使用します (<code>0o</code> または <code>0O</code>)。この構文は ECMAScript 2015 の新しい構文なので、下記のブラウザー互換性表をご覧ください。 <code>0o</code> の後の数字が範囲 (01234567) 外の場合、 {{jsxref("SyntaxError")}} が "Missing octal digits after 0o" の内容で発生します。</p>
+
+<pre class="brush: js">var n = 0O755; // 493
+var m = 0o644; // 420
+
+// ゼロだけで始めることもできます (上記の10進数についてのメモを参照)
+0755
+0644
+</pre>
+
+<h4 id="Hexadecimal" name="Hexadecimal">16進数</h4>
+
+<p>16進数の構文は、先頭のゼロに続いて小文字または大文字のラテン文字"X" を使用します (<code>0x</code> または <code>0X</code>)。 0x の後の数字が範囲 (0123456789ABCDEF) 外の場合、 {{jsxref("SyntaxError")}} が "Identifier starts immediately after numeric literal" の内容で発生します。</p>
+
+<pre class="brush: js">0xFFFFFFFFFFFFFFFFF // 295147905179352830000
+0x123456789ABCDEF // 81985529216486900
+0XA // 10
+</pre>
+
+<h4 id="BigInt_literal" name="BigInt_literal">BigInt リテラル</h4>
+
+<p>{{jsxref("BigInt")}} 型は JavaScript のプリミティブな数値であり、自由な精度の整数を表すことができます。 BigInt リテラルは、整数の末尾に <code>n</code> を追加することで作成されます。</p>
+
+<pre class="brush: js">123456789123456789n     (10進数)
+0o777777777777n         (8進数)
+0x123456789ABCDEFn  ("hex" または16進数)
+0b11101001010101010101n (2進数)
+</pre>
+
+<p>なお、先頭がゼロだけの8進数は <code>BigInt</code> では動作しません。</p>
+
+<pre class="brush: js example-bad">// 0755n
+// SyntaxError: invalid BigInt syntax</pre>
+
+<p>8進数の <code>BigInt</code> 数値では、常にゼロの後に "o" (大文字でも小文字でも) を付けて使用してください。</p>
+
+<pre class="brush: js example-good">0o755n</pre>
+
+<p><code>BigInt</code> についての詳細な情報は、 <a href="/ja/docs/Web/JavaScript/Data_structures#BigInt_type">JavaScript データ構造</a>をご覧ください。</p>
+
+<h4 id="Numeric_separators" name="Numeric_separators">数値の区切り文字</h4>
+
+<p>数値リテラルの可読性を高めるために、アンダースコア (<code>_</code>, <code>U+005F</code>) を区切り文字として使用することができます。</p>
+
+<pre class="brush: js">// 10進数の区切り文字
+1_000_000_000_000
+1_050.95
+
+// 2進数の区切り文字
+0b1010_0001_1000_0101
+
+// 8進数の区切り文字
+0o2_2_5_6
+
+// 16進数の区切り文字
+0xA0_B0_C0
+
+// BigInt の区切り文字
+1_000_000_000_000_000_000_000n
+</pre>
+
+<p>なお、以下の制限があります。</p>
+
+<pre class="brush: js example-bad">// 連続して2つ以上のアンダースコアは許可されていません
+100__000; // SyntaxError
+
+// 数値リテラルの末尾に置くことは許可されていません
+100_; // SyntaxError
+
+// 先頭の 0 の後に使用することはできません
+0_1; // SyntaxError
+</pre>
+
+<h3 id="Object_literals" name="Object_literals">オブジェクトリテラル</h3>
+
+<p>詳細については、 {{jsxref("Object")}} と<a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクト初期化子</a>をご覧ください。</p>
+
+<pre class="brush: js">var o = { a: 'foo', b: 'bar', c: 42 };
+
+// ES2015 で導入された短縮表記
+var a = 'foo', b = 'bar', c = 42;
+var o = {a, b, c};
+
+// 以前の表記
+var o = { a: a, b: b, c: c };
+</pre>
+
+<h3 id="Array_literals" name="Array_literals">配列リテラル</h3>
+
+<p>詳細については {{jsxref("Array")}} をご覧ください。</p>
+
+<pre class="brush: js">[1954, 1974, 1990, 2014]</pre>
+
+<h3 id="String_literals" name="String_literals">文字列リテラル</h3>
+
+<p>文字列リテラルは、単一引用符または二重引用符に囲まれた零個以上の Unicode コードポイントです。 Unicode コードポイントはエスケープシーケンスで表すこともできます。以下の引用符を閉じるコードポイントを除いて、すべてのコードポイントが文字列リテラルに現れることができます。</p>
+
+<ul>
+ <li>U+005C \ (バックスラッシュ)</li>
+ <li>U+000D &lt;CR&gt;,</li>
+ <li>and U+000A &lt;LF&gt;.</li>
+</ul>
+
+<p><a href="https://github.com/tc39/proposal-json-superset">proposal to make all JSON text valid ECMA-262</a> より以前は、 U+2028 &lt;LS&gt; および U+2029 &lt;PS&gt; は文字列リテラル内にエスケープせずに現れることができませんでした。</p>
+
+<p>すべてのコードポイントが、エスケープシーケンスの形で現れることができます。文字列リテラルは ECMAScript の文字列値として評価されます。これらの String の値を生成する際に、 Unicode コードポイントは UTF-16 エンコードされます。</p>
+
+<pre class="brush: js">'foo'
+"bar"</pre>
+
+<h4 id="Hexadecimal_escape_sequences" name="Hexadecimal_escape_sequences">16進エスケープシーケンス</h4>
+
+<p>16進エスケープシーケンスは <code>\x</code> に続いてちょうど2桁の16進数から成り、 0x0000 から 0x00FF までのコード単位またはコードポイントを表します。</p>
+
+<pre class="brush: js">'\xA9' // "©"
+</pre>
+
+<h4 id="Unicode_escape_sequences" name="Unicode_escape_sequences">Unicode エスケープシーケンス</h4>
+
+<p>Unicode エスケープシーケンスは <code>\u</code> に続いてちょうど4桁の16進数から成ります。これで UTF-16 エンコーディングのコード単位を表します。コードポイント U+0000 から U+FFFF までは、コード単位とコードポイントは等しくなります。コードポイント U+10000 から U+10FFFF までは、2つのエスケープシーケンスで2つのコード単位 (サロゲートペア) を表す必要があります。サロゲートペアはコードポイントで区別されます。</p>
+
+<p>See also {{jsxref("String.fromCharCode()")}} and {{jsxref("String.prototype.charCodeAt()")}}.</p>
+
+<pre class="brush: js">'\u00A9' // "©" (U+A9)</pre>
+
+<h4 id="Unicode_コードポイントエスケープ">Unicode コードポイントエスケープ</h4>
+
+<p>Unicode コードポイントエスケープは <code>\u{</code> に続いて16進数のコードポイントが続き、 <code>}</code> が続きます。16進数の値は 0 から 0x10FFFF までの範囲に含まれている必要があります。 U+10000 から U+10FFFF までの範囲のコードポイントを、サロゲートペアとして表す必要はありません。コードポイントエスケープは ECMAScript 2015 (ES6) で JavaScript に追加されました。</p>
+
+<p>{{jsxref("String.fromCodePoint()")}} または {{jsxref("String.prototype.codePointAt()")}} もご覧ください。</p>
+
+<pre class="brush: js">'\u{2F804}' // CJK COMPATIBILITY IDEOGRAPH-2F804 (U+2F804)
+
+// the same character represented as a surrogate pair
+'\uD87E\uDC04'</pre>
+
+<h3 id="Regular_expression_literals" name="Regular_expression_literals">正規表現リテラル</h3>
+
+<p>詳細については {{jsxref("RegExp")}} を参照してください。</p>
+
+<pre class="brush: js">/ab+c/g
+
+// 「空の」正規表現リテラル
+// 単一行コメントと区別するために、空のキャプチャしない
+// グループが必要です。
+/(?:)/</pre>
+
+<h3 id="Template_literals" name="Template_literals">テンプレートリテラル</h3>
+
+<p>詳細について、<a href="/ja/docs/Web/JavaScript/Reference/template_strings">template strings</a> をご覧ください。</p>
+
+<pre class="brush: js">`string text`
+
+`string text line 1
+ string text line 2`
+
+`string text ${expression} string text`
+
+tag `string text ${expression} string text`</pre>
+
+<h2 id="Automatic_semicolon_insertion" name="Automatic_semicolon_insertion">自動セミコロン挿入</h2>
+
+<p>一部の <a href="/ja/docs/Web/JavaScript/Reference/Statements">JavaScript 文</a>はセミコロンで終わる必要があります。したがって、自動セミコロン挿入 (ASI) の影響を受けます。:</p>
+
+<ul>
+ <li>空の文</li>
+ <li><code>let</code>, <code>const</code>, 変数定義</li>
+ <li><code>import</code>, <code>export</code>, モジュール宣言</li>
+ <li>式の文</li>
+ <li><code>debugger</code></li>
+ <li><code>continue</code>, <code>break</code>, <code>throw</code></li>
+ <li><code>return</code></li>
+</ul>
+
+<p>ECMAScript 仕様書は、<a href="https://tc39.github.io/ecma262/#sec-rules-of-automatic-semicolon-insertion">セミコロン挿入の3つの規則</a>に言及しています。</p>
+
+<p>1. 文法上許されない位置で<a href="#Line_terminators">行末文字</a>または "}" に遭遇したとき、セミコロンが前に挿入されます。</p>
+
+<pre class="brush: js">{ 1 2 } 3
+
+// 上記の文は、 ASI によって次のように変換されます
+
+{ 1 2 ;} 3;</pre>
+
+<p>2. トークンの入力ストリームの終末が検出され、パーサーが単一の入力ストリームを完全なプログラムとして解釈できない場合、末尾にセミコロンが挿入されます。</p>
+
+<p>ここで <code>++</code> は、変数 <code>b</code> に適用される <a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Increment">後置演算子</a>としては扱われません。というのも、行末文字が <code>b</code> と<code>++</code> の間に見られるからです。</p>
+
+<pre class="brush: js">a = b
+++c
+
+// 上記の文は、 ASI によって次のように変換されます
+
+a = b;
+++c;
+</pre>
+
+<p>3. 文法上、成果が制限された文の直後に行末文字が来た時、末尾にセミコロンが挿入されます。以下の文が "no LineTerminator here" 規則を持っています。</p>
+
+<ul>
+ <li>後置演算子 (<code>++</code> および <code>--</code>)</li>
+ <li><code>continue</code></li>
+ <li><code>break</code></li>
+ <li><code>return</code></li>
+ <li><code>yield</code>, <code>yield*</code></li>
+ <li><code>module</code></li>
+</ul>
+
+<pre class="brush: js">return
+a + b
+
+// 上記の文は、 ASI によって次のように変換されます
+
+return;
+a + b;
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状態</th>
+ <th scope="col">備考</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-ecmascript-language-lexical-grammar', 'Lexical Grammar')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-ecmascript-language-lexical-grammar', 'Lexical Grammar')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td>追加: 2進数リテラル と 8進数リテラル、 Unicode コードポイントエスケープ、テンプレート</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-7', 'Lexical Conventions')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1')}}</td>
+ <td>{{Spec2("ES1")}}</td>
+ <td>初回定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.grammar")}}</p>
+
+<h3 id="Implementation_Progress" name="Implementation_Progress">実装の進捗状況</h3>
+
+<p>この機能はまだブラウザー間の安定性が十分でないため、以下の図は、この機能の日々の実装状況を表しています。このデータは標準的な JavaScript のテストスイートである <a href="https://github.com/tc39/test262">Test262</a> において、各ブラウザーの JavaScript エンジンの nightly build または最新リリースでこの機能の関連機能を実行することによって生成されています。</p>
+
+<div>{{EmbedTest262ReportResultsTable("hashbang")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://whereswalden.com/2013/08/12/micro-feature-from-es6-now-in-firefox-aurora-and-nightly-binary-and-octal-numbers/">Jeff Walden: Binary and octal numbers</a></li>
+ <li><a href="http://mathiasbynens.be/notes/javascript-escapes">Mathias Bynens: JavaScript character escape sequences</a></li>
+ <li>{{jsxref("Boolean")}}</li>
+ <li>{{jsxref("Number")}}</li>
+ <li>{{jsxref("RegExp")}}</li>
+ <li>{{jsxref("String")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/addition/index.html b/files/ja/web/javascript/reference/operators/addition/index.html
new file mode 100644
index 0000000000..d87d6a2894
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/addition/index.html
@@ -0,0 +1,82 @@
+---
+title: 加算 (+)
+slug: Web/JavaScript/Reference/Operators/Addition
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Addition
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>加算演算子 (<code>+</code>) は、数値オペランドまたは文字列連結の合計を生成します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-addition.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> <var>x</var> + <var>y</var>
+</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="数値加算">数値加算</h3>
+
+<pre class="brush: js notranslate">// 数値 + 数値 -&gt; 加算
+1 + 2 // 3
+
+// ブール値 + 数値 -&gt; 加算
+true + 1 // 2
+
+// ブール値 + ブール値 -&gt; 加算
+false + false // 0
+</pre>
+
+<h3 id="文字列連結">文字列連結</h3>
+
+<pre class="brush: js notranslate">// 文字列 + 文字列 -&gt; 連結
+'foo' + 'bar' // "foobar"
+
+// 数値 + 文字列 -&gt; 連結
+5 + 'foo' // "5foo"
+
+// 文字列 + ブール値 -&gt; 連結
+'foo' + false // "foofalse"</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-addition-operator-plus', 'Addition operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.addition")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Subtraction">減算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Division">除算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Multiplication">乗算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Remainder">剰余演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Exponentiation">べき乗演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Increment">インクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Decrement">デクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_negation">単項マイナス演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_plus">単項プラス演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/addition_assignment/index.html b/files/ja/web/javascript/reference/operators/addition_assignment/index.html
new file mode 100644
index 0000000000..d2e2a59492
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/addition_assignment/index.html
@@ -0,0 +1,78 @@
+---
+title: 加算代入 (+=)
+slug: Web/JavaScript/Reference/Operators/Addition_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Addition_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>加算代入演算子 (<code>+=</code>) は、右辺のオペランドの値を変数に加算し、結果を変数に代入します。 2つのオペランドの型は、加算代入演算子の動作を決定します。加算もしくは連結が可能です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-addition-assignment.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> x += y
+<strong>Meaning:</strong> x = x + y</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="加算代入の使用">加算代入の使用</h3>
+
+<pre class="brush: js notranslate">// 以下の変数を想定
+// foo = 'foo'
+// bar = 5
+// baz = true
+
+// 数値 + 数値 -&gt; 加算
+bar += 2 // 7
+
+// ブール値 + 数値 -&gt; 加算
+baz += 1 // 2
+
+// ブール値 + ブール値 -&gt; 加算
+baz += false // 1
+
+// 数値 + 文字列 -&gt; 連結
+bar += 'foo' // "5foo"
+
+// 文字列 + ブール値 -&gt; 連結
+foo += false // "foofalse"
+
+// 文字列 + 文字列 -&gt; 連結
+foo += 'bar' // "foobar"</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.addition_assignment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment">代入演算子</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Addition">加算演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/array_comprehensions/index.html b/files/ja/web/javascript/reference/operators/array_comprehensions/index.html
new file mode 100644
index 0000000000..814bdd9eb7
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/array_comprehensions/index.html
@@ -0,0 +1,198 @@
+---
+title: 配列内包表記
+slug: Web/JavaScript/Reference/Operators/Array_comprehensions
+tags:
+ - JavaScript
+ - Non-standard
+ - Operator
+ - Reference
+translation_of: Archive/Web/JavaScript/Array_comprehensions
+---
+<div class="warning"><strong>非標準。使用しないでください!</strong><br>
+配列内包は非標準であり、Firefox 58 から削除されています。将来向きの用途には、{{jsxref("Array.prototype.map")}}、{{jsxref("Array.prototype.filter")}}、{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}、{{jsxref("Operators/Spread_operator", "スプレッド構文", "", 1)}} の使用を検討してください。</div>
+
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>array comprehension</strong> 構文は、既存のものに基づいている新しい配列をすばやく組み立てることができるJavaScriptの式でした。しかし、これは標準仕様や Firefox の実装から削除されました。使用しないでください!</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">[for (x of iterable) x]
+[for (x of iterable) if (condition) x]
+[for (x of iterable) for (y of iterable) x + y]
+</pre>
+
+<h2 id="説明">説明</h2>
+
+<p>配列の内包表記内で、下記の二種類のコンポーネントが許されています。:</p>
+
+<ul>
+ <li>{{jsxref("Statements/for...of", "for...of")}}</li>
+ <li>{{jsxref("Statements/if...else", "if")}}</li>
+</ul>
+
+<p>for-of イテレーションは常に最初のコンポーネントです。複数のfor-of イテレーションは、ステートメントが許可されている場合。</p>
+
+<p>配列内包は以前、ECMAScript 2016 で標準化を提案されていました。これは別のものに基づいて新たな配列を構成するための手っ取り早い方法を提供します。配列内包は一般に、{{jsxref("Array.prototype.map", "map()")}} および {{jsxref("Array.prototype.filter", "filter()")}} を呼び出す代わりとして、あるいはそれら 2 つを結合する手段として用いることができます。</p>
+
+<p>次の配列内包は数値の配列を取り込んで、その各数値を 2 倍した値による新しい配列を作成します。</p>
+
+<pre class="brush: js">var numbers = [1, 2, 3, 4];
+var doubled = [for (i of numbers) i * 2];
+console.log(doubled); // logs 2,4,6,8
+</pre>
+
+<p>これは以下の {{jsxref("Array.prototype.map", "map()")}} による操作と同等です:</p>
+
+<pre class="brush: js">var doubled = numbers.map(i =&gt; i * 2);
+</pre>
+
+<p>配列内包は、特定の式にマッチするアイテムの選択に用いることもできます。以下は、偶数だけを選択する内包です:</p>
+
+<pre class="brush: js">var numbers = [1, 2, 3, 21, 22, 30];
+var evens = [for (i of numbers) if (i % 2 === 0) i];
+console.log(evens); // logs 2,22,30
+</pre>
+
+<p>同じ目的で {{jsxref("Array.prototype.filter", "filter()")}} を用いることができます:</p>
+
+<pre class="brush: js">var evens = numbers.filter(i =&gt; i % 2 === 0);
+</pre>
+
+<p>{{jsxref("Array.prototype.map", "map()")}} および {{jsxref("Array.prototype.filter", "filter()")}} 方式の操作を、ひとつの配列内包に統合することができます。以下は偶数だけをフィルタリングして、それらを 2 倍した値を含む配列を作成します:</p>
+
+<pre class="brush: js">var numbers = [1, 2, 3, 21, 22, 30];
+var doubledEvens = [for (i of numbers) if (i % 2 === 0) i * 2];
+console.log(doubledEvens); // logs 4,44,60
+</pre>
+
+<p>配列内包の角括弧は、スコープ目的の暗黙的なブロックをもたらします。新しい変数 (上記の例における i ) は、{{jsxref("Statements/let","let")}} を用いて宣言されたかのように扱われます。つまり、それらの変数は配列内包の外部で使用できません。</p>
+
+<p>配列内包の入力自体は、配列である必要はありません。<a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators" title="JavaScript/Guide/Iterators and Generators">イテレータおよびジェネレータ</a> も使用できます。</p>
+
+<p>文字列を入力とすることもできます。(配列状のオブジェクトにおいて) 前出の filter や map の動作を実現するには以下のようにします:</p>
+
+<pre class="brush: js">var str = 'abcdef';
+var consonantsOnlyStr = [for (c of str) if (!(/[aeiouAEIOU]/).test(c)) c].join(''); // 'bcdf'
+var interpolatedZeros = [for (c of str) c + '0' ].join(''); // 'a0b0c0d0e0f0'
+</pre>
+
+<p>繰り返しになりますが入力データの形式は維持されませんので、文字列へ戻すために {{jsxref("Array.prototype.join", "join()")}} を使用しなければなりません。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="簡単な配列の内包表記">簡単な配列の内包表記</h3>
+
+<pre class="brush:js">[for (i of [ 1, 2, 3 ]) i*i ];
+// [ 1, 4, 9 ]
+
+var abc = [ "A", "B", "C" ];
+[for (letters of abc) letters.toLowerCase()];
+// [ "a", "b", "c" ]</pre>
+
+<h3 id="if文で配列の内包表記">if文で配列の内包表記</h3>
+
+<pre class="brush: js">var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ];
+[for (year of years) if (year &gt; 2000) year];
+// [ 2006, 2010, 2014 ]
+[for (year of years) if (year &gt; 2000) if(year &lt; 2010) year];
+// [ 2006], the same as below:
+[for (year of years) if (year &gt; 2000 &amp;&amp; year &lt; 2010) year];
+// [ 2006]
+</pre>
+
+<h3 id="mapとfilterを比較する配列の内包表記"><code>map</code>と<code>filter</code>を比較する配列の内包表記</h3>
+
+<p>配列の内包表記構文を理解する簡単な方法は、Array {{jsxref("Array.map", "map")}}や{{jsxref("Array.filter", "filter")}}メソッドと比較することです。:</p>
+
+<pre class="brush: js">var numbers = [ 1, 2, 3 ];
+
+numbers.map(function (i) { return i * i });
+numbers.map(i =&gt; i*i);
+[for (i of numbers) i*i ];
+// all are [ 1, 4, 9 ]
+
+numbers.filter(function (i) { return i &lt; 3 });
+numbers.filter(i =&gt; i &lt; 3);
+[for (i of numbers) if (i &lt; 3) i];
+// all are [ 1, 2 ]
+</pre>
+
+<h3 id="二つの配列の内包表記">二つの配列の内包表記</h3>
+
+<p>二つの配列で動作させるために二つのfor-ofイテレーションを使用する:</p>
+
+<pre class="brush: js">var numbers = [ 1, 2, 3 ];
+var letters = [ "a", "b", "c" ];
+
+var cross = [for (i of numbers) for (j of letters) i+j];
+// [ "1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c" ]
+
+var grid = [for (i of numbers) [for (j of letters) i+j]];
+// [
+// ["1a", "1b", "1c"],
+// ["2a", "2b", "2c"],
+// ["3a", "3b", "3c"]
+// ]
+
+[for (i of numbers) if (i &gt; 1) for (j of letters) if(j &gt; "a") i+j]
+// ["2b", "2c", "3b", "3c"], the same as below:
+
+[for (i of numbers) for (j of letters) if (i &gt; 1) if(j &gt; "a") i+j]
+// ["2b", "2c", "3b", "3c"]
+
+[for (i of numbers) if (i &gt; 1) [for (j of letters) if(j &gt; "a") i+j]]
+// [["2b", "2c"], ["3b", "3c"]], not the same as below:
+
+[for (i of numbers) [for (j of letters) if (i &gt; 1) if(j &gt; "a") i+j]]
+// [[], ["2b", "2c"], ["3b", "3c"]]
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<p>最初は ECMAScript 2015 のドラフトでしたが、リビジョン 27 (2014 年 8 月) で取り除かれました。仕様セマンティクスのために ES2015 の古いリビジョンを参照してください。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.array_comprehensions")}}</p>
+
+<h2 id="Differences_to_the_older_JS1.7JS1.8_comprehensions" name="Differences_to_the_older_JS1.7JS1.8_comprehensions">古い JS1.7/JS1.8 の内包表記との違い</h2>
+
+<div class="warning">JS1.7/JS1.8 の内包表記は、バージョン 46 で Gecko から削除しました ({{bug(1220564)}})。</div>
+
+<p><strong>古い内包表記の構文 (使用しないでください!):</strong></p>
+
+<pre class="brush: js example-bad">[X for (Y in Z)]
+[X for each (Y in Z)]
+[X for (Y of Z)]
+</pre>
+
+<p>違い:</p>
+
+<ul>
+ <li>ESNext の内包表記は全体の内包表記のかわりに"for"ノードごとに1スコープを生成します。
+ <ul>
+ <li>旧: <code>[()=&gt;x for (x of [0, 1, 2])][1]() // 2</code></li>
+ <li>新: <code>[for (x of [0, 1, 2]) ()=&gt;x][1]() // 1, each iteration creates a fresh binding for x. </code></li>
+ </ul>
+ </li>
+ <li>ESNext の内包表記は代入式のかわりに"for"で始まります。
+ <ul>
+ <li>旧: <code>[i * 2 for (i of numbers)]</code></li>
+ <li>新: <code>[for (i of numbers) <code>i * 2</code>]</code></li>
+ </ul>
+ </li>
+ <li>ESNext の内包表記は複数の<code>if</code>と<code>for</code>コンポーネントを持ち得ます。</li>
+ <li>ESNext の内包表記は<code>{{jsxref("Statements/for...of", "for...of")}}</code>でのみ動作し、<code>{{jsxref("Statements/for...in", "for...in")}}</code>イテレーションで 動作しません。</li>
+</ul>
+
+<p>コード更新の提案について、<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1220564#c42">Bug 1220564 のコメント 42</a> をご覧ください。</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/for...of", "for...of")}}</li>
+ <li>{{jsxref("Operators/Generator_comprehensions", "Generator comprehensions", "" ,1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/assignment/index.html b/files/ja/web/javascript/reference/operators/assignment/index.html
new file mode 100644
index 0000000000..acf35e7514
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/assignment/index.html
@@ -0,0 +1,62 @@
+---
+title: 代入 (=)
+slug: Web/JavaScript/Reference/Operators/Assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>代入(単純代入)演算子 (<code>=</code>) は、変数に値を代入するために使用されます。割り当て操作は、割り当てられた値を評価します。 単一の値を複数の変数に割り当てるため、代入演算子の連鎖が可能です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-assignment.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> x = y
+</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="代入と連鎖">代入と連鎖</h3>
+
+<pre class="brush: js notranslate">// 以下の変数を想定
+// x = 5
+// y = 10
+// z = 25
+
+x = y // x は 10
+x = y = z // x, y そして z は全て 25</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.assignment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment">代入演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/async_function/index.html b/files/ja/web/javascript/reference/operators/async_function/index.html
new file mode 100644
index 0000000000..f6b13ca9f2
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/async_function/index.html
@@ -0,0 +1,151 @@
+---
+title: 非同期関数式
+slug: Web/JavaScript/Reference/Operators/async_function
+tags:
+ - Experimental
+ - Function
+ - JavaScript
+ - Operator
+ - Primary Expression
+translation_of: Web/JavaScript/Reference/Operators/async_function
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong><code>async function</code></strong> キーワードは、式内で async function を定義するために使用できます。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">async function [<em>name</em>]([<em>param1</em>[, <em>param2[</em>, ..., <em>paramN</em>]]]) {
+ <em>statements</em>
+}</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>name</code></dt>
+ <dd>関数名。関数が<em>匿名</em>の場合、省略可能。名前は関数ボディー内のみのローカル。</dd>
+ <dt><code>paramN</code></dt>
+ <dd>関数に渡される引数名。</dd>
+ <dt><code>statements</code></dt>
+ <dd>関数ボディーを構成するステートメント。</dd>
+</dl>
+
+<h2 id="説明">説明</h2>
+
+<p><code>async function</code> 式は {{jsxref('Statements/async_function', 'async function statement')}} と非常に似ており、構文もほとんど同じです。async <code>function</code> 式と async <code>function</code> ステートメントの主な違いは、<code>async function</code> 式は<em>匿名</em>関数を生成するために<em>関数名</em>を省略できる点です。<code>async function</code> 式は、定義後直ちに実行される <strong>IIFE</strong>(即時実行関数式)として使用することもできます。詳細は <a href="/ja/docs/Web/JavaScript/Reference/Functions">function</a> の章を見てください。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="シンプルな例">シンプルな例</h3>
+
+<pre class="brush: js">function resolveAfter2Seconds(x) {
+ return new Promise(resolve =&gt; {
+ setTimeout(() =&gt; {
+ resolve(x);
+ }, 2000);
+ });
+};
+
+(async function(x) { // async function expression used as an IIFE
+ var a = resolveAfter2Seconds(20);
+ var b = resolveAfter2Seconds(30);
+ return x + await a + await b;
+})(10).then(v =&gt; {
+ console.log(v); // prints 60 after 2 seconds.
+});
+
+var add = async function(x) { // async function expression assigned to a variable
+ var a = await resolveAfter2Seconds(20);
+ var b = await resolveAfter2Seconds(30);
+ return x + a + b;
+};
+
+add(10).then(v =&gt; {
+ console.log(v); // prints 60 after 4 seconds.
+});
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">ステータス</th>
+ <th scope="col">コメント</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Async Function', '#async-function-definitions', 'async function')}}</td>
+ <td>{{Spec2('Async Function')}}</td>
+ <td>提案</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+<div>{{CompatibilityTable}}</div>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th> Edge</th>
+ <th>Opera</th>
+ <th>Safari (WebKit)</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatChrome(55)}}</td>
+ <td>{{CompatGeckoDesktop("52.0")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatOpera(42)}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Android</th>
+ <th>Android Webview</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ <th>Chrome for Android</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatGeckoMobile("52.0")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatOpera(42)}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatChrome(55)}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p> </p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Statements/async_function", "async function")}}</li>
+ <li>{{jsxref("AsyncFunction")}} オブジェクト</li>
+ <li>{{jsxref("Operators/await", "await")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/await/index.html b/files/ja/web/javascript/reference/operators/await/index.html
new file mode 100644
index 0000000000..775ce4a787
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/await/index.html
@@ -0,0 +1,139 @@
+---
+title: await
+slug: Web/JavaScript/Reference/Operators/await
+tags:
+ - Function
+ - JavaScript
+ - Language feature
+ - Operator
+ - Primary Expression
+translation_of: Web/JavaScript/Reference/Operators/await
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><code>await</code> 演算子は、{{jsxref("Statements/async_function", "async function")}} によって {{jsxref("Promise")}} が返されるのを待機するために使用します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">[<em>rv</em>] = await <em>expression</em>;</pre>
+
+<dl>
+ <dt><code>expression</code></dt>
+ <dd>解決を待つ {{jsxref("Promise")}} もしくは何らかの値。</dd>
+ <dt><code>rv</code></dt>
+ <dd>
+ <p>解決された promise の値。expression が <code>Promise</code> ではない場合はその値自体を返す。</p>
+ </dd>
+</dl>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>await</code> 式は <code>async</code> function の実行を一時停止し、<code>Promise</code> の解決または拒否を待ちます。解決した後に <code>async</code> function の実行を再開します。再開するときに <code>await</code> 式は解決された <code>Promise</code> にラップされた値を返します。</p>
+
+<p><code>Promise</code> が拒否された場合、<code>await</code> 式は理由となった値を投げます。</p>
+
+<p><code>await</code> 式に続く値が <code>Promise</code> ではなかった場合、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve">解決された Promise</a> に変換されます。</p>
+
+<p><code>await</code> は実行フローを分割できるため、<code>await</code> の関数の呼び出し元は、<code>await</code> の関数の遅延継続の前に実行を再開できます。<code>await</code> がその関数の継続を延期した後、これが関数によって実行される最初の <code>await</code> でれば、<code>await</code> の関数の完了を求める保留中の <code>Promise</code> を関数の呼び出し元に返し、その呼び出し元の実行を再開することによって、即時実行も続行されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Awaiting_a_promise_to_be_fulfilled" name="Awaiting_a_promise_to_be_fulfilled">promise の解決を待つ</h3>
+
+<p><code>Promise</code> が <code>await</code> 式で停止された場合、<code>Promise</code> が解決されて、解決された値を返すのを待ちます。</p>
+
+<pre class="brush: js notranslate">function resolveAfter2Seconds(x) {
+ return new Promise(resolve =&gt; {
+ setTimeout(() =&gt; {
+ resolve(x);
+ }, 2000);
+ });
+}
+
+async function f1() {
+ var x = await resolveAfter2Seconds(10);
+ console.log(x); // 10
+}
+
+f1();
+</pre>
+
+<h3 id="Thenable_objects" name="Thenable_objects">Thenable オブジェクト</h3>
+
+<p>{{jsxref("Global_Objects/Promise/then", "Thenable オブジェクト")}}もまったく同じように実行されます。</p>
+
+<pre class="brush: js notranslate">async function f2() {
+  const thenable = {
+  then: function(resolve, _reject) {
+  resolve('resolved!')
+ }
+  };
+ console.log(await thenable); // resolved!
+}
+
+f2();
+</pre>
+
+<h3 id="Conversion_to_promise" name="Conversion_to_promise">Promise への変換</h3>
+
+<p>値が <code>Promise</code> でない場合は、値を解決済みの <code>Promise</code> に変換して待ちます。</p>
+
+<pre class="brush: js notranslate">async function f3() {
+ var y = await 20;
+ console.log(y); // 20
+}
+
+f3();</pre>
+
+<h3 id="Promise_rejection" name="Promise_rejection">Promise の拒否</h3>
+
+<p><code>Promise</code> が拒否された場合、拒否された値が投げられます。</p>
+
+<pre class="brush: js notranslate">async function f4() {
+ try {
+ var z = await Promise.reject(30);
+ } catch(e) {
+ console.error(e); // 30
+ }
+}
+
+f4();</pre>
+
+<h3 id="Handling_rejected_promises" name="Handling_rejected_promises">拒否された Promise を処理する</h3>
+
+<p>拒否された <code>Promise</code> は <code>try</code> 文を使用せずにエラーハンドリングを行えます。</p>
+
+<pre class="brush: js notranslate">var response = await promisedFunction().catch((err) =&gt; { console.error(err); });
+// response will be undefined if the promise is rejected
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-async-function-definitions", "async functions")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.operators.await")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/async_function", "async function")}}</li>
+ <li>{{jsxref("Operators/async_function", "async function expression")}}</li>
+ <li>{{jsxref("AsyncFunction")}} オブジェクト</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/bitwise_and/index.html b/files/ja/web/javascript/reference/operators/bitwise_and/index.html
new file mode 100644
index 0000000000..80a4644aee
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/bitwise_and/index.html
@@ -0,0 +1,114 @@
+---
+title: ビット論理積 (&)
+slug: Web/JavaScript/Reference/Operators/Bitwise_AND
+tags:
+ - Bitwise operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Bitwise_AND
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>ビット論理積演算子 (<code>&amp;</code>) は、両方のオペランドの対応するビットのいずれもが <code>1</code> である位置のビットで <code>1</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-bitwise-and.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>a</var> &amp; <var>b</var></code>
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オペランドは32ビットの整数値に変換され、ビット (ゼロまたは1) の並びによって表現されます。32ビットを超える数値は最上位のビットが破棄されます。例えば、次の32ビットを超える整数は32ビット整数に変換されます。</p>
+
+<pre class="brush: js notranslate">変換前: 11100110111110100000000000000110000000000001
+変換後: 10100000000000000110000000000001</pre>
+
+<p>第1オペランドの各ビットは、第2オペランドの対応するビットと組み合わせになります。<em>第1ビット</em>は<em>第1ビット</em>へ、<em>第2ビット</em>は<em>第2ビット</em>へ、という具合にです。</p>
+
+<p>この演算子は各ビットの組み合わせに適用され、結果はビット単位で構築されます。</p>
+
+<p>AND 演算の真理値表は次のようになります。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th class="header" scope="col">a</th>
+ <th class="header" scope="col">b</th>
+ <th class="header" scope="col">a AND b</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>0</td>
+ <td>0</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>0</td>
+ <td>1</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>0</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>1</td>
+ <td>1</td>
+ </tr>
+ </tbody>
+</table>
+
+<pre class="brush: js notranslate">. 9 (10進数) = 00000000000000000000000000001001 (2進数)
+ 14 (10進数) = 00000000000000000000000000001110 (2進数)
+ --------------------------------
+14 | 9 (10進数) = 00000000000000000000000000001000 (2進数) = 8 (10進数)
+</pre>
+
+<p>任意の <code><var>x</var></code> と <code>0</code> のビット論理積は <code>0</code> になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_bitwise_AND" name="Using_bitwise_AND">ビット論理積の使用</h3>
+
+<pre class="brush: js notranslate">// 5: 00000000000000000000000000000101
+// 2: 00000000000000000000000000000010
+5 &amp; 2; // 0</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#prod-BitwiseANDExpression', 'Bitwise AND expression')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.bitwise_and")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise_operators">ビット演算子ガイド</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_AND_assignment">ビット論理積代入演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/bitwise_and_assignment/index.html b/files/ja/web/javascript/reference/operators/bitwise_and_assignment/index.html
new file mode 100644
index 0000000000..431e576433
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/bitwise_and_assignment/index.html
@@ -0,0 +1,64 @@
+---
+title: ビット論理積代入 (&=)
+slug: Web/JavaScript/Reference/Operators/Bitwise_AND_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 代入演算子
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Bitwise_AND_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>ビット論理積代入演算子 (<code>&amp;=</code>) は、両方のオペランドのバイナリ表現を使用し、それらに対してビット単位の AND 演算を実行して、結果を変数に代入します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-bitwise-and-assignment.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> x &amp;= y
+<strong>Meaning:</strong> x = x &amp; y
+</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="ビット論理積代入の使用">ビット論理積代入の使用</h3>
+
+<pre class="brush: js notranslate">let a = 5;
+// 5:     00000000000000000000000000000101
+// 2:     00000000000000000000000000000010
+a &amp;= 2; // 0</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.bitwise_and_assignment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise_operators">ビット演算子ガイド</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_AND">ビット論理積演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/bitwise_not/index.html b/files/ja/web/javascript/reference/operators/bitwise_not/index.html
new file mode 100644
index 0000000000..ddd2d99c4d
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/bitwise_not/index.html
@@ -0,0 +1,102 @@
+---
+title: ビット否定 (~)
+slug: Web/JavaScript/Reference/Operators/Bitwise_NOT
+tags:
+ - Bitwise operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Bitwise_NOT
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>ビット否定演算子 (<code>~</code>) は、オペランドの各ビットを反転します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-bitwise-not.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>~a</var></code>
+</pre>
+
+<h2 id="解説">解説</h2>
+
+<p>オペランドは32ビットの整数値に変換され、ビット (ゼロまたは1) の並びによって表現されます。32ビットを超える数値は最上位のビットが破棄されます。例えば、次の32ビットを超える整数は32ビット整数に変換されます。</p>
+
+<pre class="brush: js notranslate">変換前: 11100110111110100000000000000110000000000001
+変換後: 10100000000000000110000000000001</pre>
+
+<p>第1オペランドの各ビットは、第2オペランドの対応するビットと組み合わせになります。<em>第1ビット</em>は<em>第1ビット</em>へ、<em>第2ビット</em>は<em>第2ビット</em>へ、という具合にです。</p>
+
+<p>この演算子は各ビットの組み合わせに適用され、結果はビット単位に構築されます。</p>
+
+<p><code>NOT</code> 演算の真理値表は次のようになります。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th class="header" scope="col">a</th>
+ <th class="header" scope="col">NOT a</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>0</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>0</td>
+ </tr>
+ </tbody>
+</table>
+
+<pre class="brush: js notranslate"> 9 (10進数) = 00000000000000000000000000001001 (2進数)
+ --------------------------------
+~9 (10進数) = 11111111111111111111111111110110 (2進数) = -10 (10進数)
+</pre>
+
+<p>ある数 <code>x</code> のビット否定 は <code>-(x + 1)</code> になります。例えば、<code>~-5</code> は <code>4</code> になります。</p>
+
+<p>数値に32ビット表現を使用するため <code>~-1</code> および <code>~4294967295</code> (2<sup>32</sup>-1) はいずれも <code>0</code> になることに注意してください。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="ビット否定の使用">ビット否定の使用</h3>
+
+<pre class="brush: js notranslate">~0; // -1
+~-1; // 0
+~1; // -2
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-unary-operators', 'Unary NOT expression')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.bitwise_not")}}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise_operators">ビット演算子ガイド</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/bitwise_or/index.html b/files/ja/web/javascript/reference/operators/bitwise_or/index.html
new file mode 100644
index 0000000000..f6317e19bc
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/bitwise_or/index.html
@@ -0,0 +1,116 @@
+---
+title: ビット論理和 (|)
+slug: Web/JavaScript/Reference/Operators/Bitwise_OR
+tags:
+ - Bitwise operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Bitwise_OR
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>ビット論理和演算子 (<code>|</code>) は、両方のオペランドの対応するビットのどちらか一方が <code>1</code> である位置のビットで <code>1</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-bitwise-or.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>a</var> | <var>b</var></code>
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オペランドは32ビットの整数値に変換され、ビット (ゼロまたは1) の並びによって表現されます。32ビットを超える数値は最上位のビットが破棄されます。例えば、次の32ビットを超える整数は32ビット整数に変換されます。</p>
+
+<pre class="brush: js notranslate">変換前: 11100110111110100000000000000110000000000001
+変換後: 10100000000000000110000000000001</pre>
+
+<p>第1オペランドの各ビットは、第2オペランドの対応するビットと組み合わせになります。<em>第1ビット</em>は<em>第1ビット</em>へ、<em>第2ビット</em>は<em>第2ビット</em>へ、という具合にです。</p>
+
+<p>この演算子は各ビットの組み合わせに適用され、結果はビット単位で構築されます。</p>
+
+<p>OR 演算の真理値表は次のようになります。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th class="header" scope="col">a</th>
+ <th class="header" scope="col">b</th>
+ <th class="header" scope="col">a OR b</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>0</td>
+ <td>0</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>0</td>
+ <td>1</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>0</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>1</td>
+ <td>1</td>
+ </tr>
+ </tbody>
+</table>
+
+<pre class="brush: js notranslate">. 9 (10進数) = 00000000000000000000000000001001 (2進数)
+ 14 (10進数) = 00000000000000000000000000001110 (2進数)
+ --------------------------------
+14 | 9 (10進数) = 00000000000000000000000000001111 (2進数) = 15 (10進数)
+</pre>
+
+<p>ある数 <code><var>x</var></code> と <code>0</code> のビット論理和は <code><var>x</var></code> になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_bitwise_OR" name="Using_bitwise_OR">ビット論理和の使用</h3>
+
+<pre class="brush: js notranslate">// 9 (00000000000000000000000000001001)
+// 14 (00000000000000000000000000001110)
+
+14 | 9;
+// 15 (00000000000000000000000000001111)</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#prod-BitwiseORExpression', 'Bitwise OR expression')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.bitwise_or")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise">ビット演算子ガイド</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Bitwise_OR_assignment">ビット論理和代入演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/bitwise_or_assignment/index.html b/files/ja/web/javascript/reference/operators/bitwise_or_assignment/index.html
new file mode 100644
index 0000000000..384c541b62
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/bitwise_or_assignment/index.html
@@ -0,0 +1,66 @@
+---
+title: ビット論理和代入 (|=)
+slug: Web/JavaScript/Reference/Operators/Bitwise_OR_assignment
+tags:
+ - Assignment operator
+ - Deprecated
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 代入演算子
+ - 演算子
+translation_of: Web/JavaScript/Reference/Operators/Bitwise_OR_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>ビット論理和代入演算子 (<code>|=</code>) は、両方のオペランドの二進表現を使用し、これらにビット単位の OR 演算を行って、結果を変数に代入します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-bitwise-or-assignment.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>演算子:</strong> x |= y
+<strong>意味:</strong> x = x | y</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_bitwise_OR_assignment" name="Using_bitwise_OR_assignment">ビット論理和代入の使用</h3>
+
+<pre class="brush: js notranslate">let a = 5;
+a |= 2; // 7
+// 5: 00000000000000000000000000000101
+// 2: 00000000000000000000000000000010
+// -----------------------------------
+// 7: 00000000000000000000000000000111</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.bitwise_or_assignment")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment">ビット演算子ガイド</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_OR">ビット論理和演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment">論理和代入 (<code>||=</code>)</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/bitwise_xor/index.html b/files/ja/web/javascript/reference/operators/bitwise_xor/index.html
new file mode 100644
index 0000000000..97ec807b49
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/bitwise_xor/index.html
@@ -0,0 +1,116 @@
+---
+title: ビット排他的論理和 (^)
+slug: Web/JavaScript/Reference/Operators/Bitwise_XOR
+tags:
+ - Bitwise operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Bitwise_XOR
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>ビット排他的論理和演算子 (<code>^</code>) は、両方のオペランドの対応するビットの一方だけが <code>1</code> である位置のビットで <code>1</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-bitwise-xor.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>a</var> ^ <var>b</var></code>
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オペランドは32ビットの整数値に変換され、ビット (ゼロまたは1) の並びによって表現されます。32ビットを超える数値は最上位のビットが破棄されます。例えば、次の32ビットを超える整数は32ビット整数に変換されます。</p>
+
+<pre class="brush: js notranslate">変換前: 11100110111110100000000000000110000000000001
+変換後: 10100000000000000110000000000001</pre>
+
+<p>第1オペランドの各ビットは、第2オペランドの対応するビットと組み合わせになります。<em>第1ビット</em>は<em>第1ビット</em>へ、<em>第2ビット</em>は<em>第2ビット</em>へ、という具合にです。</p>
+
+<p>この演算子は各ビットの組み合わせに適用され、結果はビット単位に構築されます。</p>
+
+<p>XOR 演算の真理値表は次のようになります。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th class="header" scope="col">a</th>
+ <th class="header" scope="col">b</th>
+ <th class="header" scope="col">a XOR b</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>0</td>
+ <td>0</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>0</td>
+ <td>1</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>0</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>1</td>
+ <td>0</td>
+ </tr>
+ </tbody>
+</table>
+
+<pre class="brush: js notranslate">. 9 (10進数) = 00000000000000000000000000001001 (2進数)
+ 14 (10進数) = 00000000000000000000000000001110 (2進数)
+ --------------------------------
+14 ^ 9 (10進数) = 00000000000000000000000000000111 (2進数) = 7 (10進数)
+</pre>
+
+<p>ある数 <code><var>x</var></code> と <code>0</code> のビット排他的論理和は <code><var>x</var></code> になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_bitwise_XOR" name="Using_bitwise_XOR">ビット排他的論理和の使用</h3>
+
+<pre class="brush: js notranslate">// 9 (00000000000000000000000000001001)
+// 14 (00000000000000000000000000001110)
+
+14 ^ 9;
+// 7 (00000000000000000000000000000111)</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#prod-BitwiseXORExpression', 'Bitwise XOR expression')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.bitwise_xor")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise">ビット演算子ガイド</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_XOR_assignment">ビット排他的論理和代入演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/bitwise_xor_assignment/index.html b/files/ja/web/javascript/reference/operators/bitwise_xor_assignment/index.html
new file mode 100644
index 0000000000..25ffd6de5c
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/bitwise_xor_assignment/index.html
@@ -0,0 +1,71 @@
+---
+title: ビット排他的論理和代入 (^=)
+slug: Web/JavaScript/Reference/Operators/Bitwise_XOR_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Bitwise_XOR_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>ビット排他的論理和代入演算子 (<code>^=</code>) は、両方のオペランドのバイナリ表現を使用し、それらに対してビット単位の XOR 演算を実行し、結果を変数に代入します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-bitwise-xor-assignment.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> x ^= y
+<strong>Meaning:</strong> x = x ^ y</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="ビット排他的論理和代入の使用">ビット排他的論理和代入の使用</h3>
+
+<pre class="brush: js notranslate">let a = 5; // 00000000000000000000000000000101
+a ^= 3; // 00000000000000000000000000000011
+
+console.log(a); // 00000000000000000000000000000110
+// 6
+
+let b = 5; // 00000000000000000000000000000101
+b ^= 0; // 00000000000000000000000000000000
+
+console.log(b); // 00000000000000000000000000000101
+// 5
+
+
+
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.bitwise_xor_assignment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment_operators">代入演算子ガイド</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Bitwise_XOR">ビット排他的論理和演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/class/index.html b/files/ja/web/javascript/reference/operators/class/index.html
new file mode 100644
index 0000000000..289bba4253
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/class/index.html
@@ -0,0 +1,116 @@
+---
+title: クラス式
+slug: Web/JavaScript/Reference/Operators/class
+tags:
+ - Class
+ - Classes
+ - ECMAScript6
+ - Expression
+ - JavaScript
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/class
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><span class="seoSummary"><strong>クラス式</strong>は、 ECMAScript 2015 でクラスを定義する方法の 1 つです。{{jsxref("Operators/function", "関数式", "", "true")}}と同じように、クラス式は名前を付けることも付けないこともできます。名前を付ける場合、クラス名はクラス内部のみのローカルです。</span></p>
+
+<p>JavaScript のクラスはプロトタイプベースの継承が使われます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-classexpression.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>MyClass</var> = class [<var>className</var>] [extends <var>otherClassName</var>] {
+ // クラス本体
+};</pre>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>クラス式の構文は、{{jsxref("Statements/class", "クラス宣言 (文)", "", "true")}} と似ています。 <code>class</code> 文では、 <code>class</code> 式の本体が{{jsxref("Strict_mode", "厳格モード", "", 1)}}で実行されます。</p>
+
+<p>しかし、クラス式と{{jsxref("Statements/class", "クラス文", "", "true")}}はいくつかの相違点があります。</p>
+
+<ul>
+ <li>クラス式ではクラス名 ("<ruby>束縛識別子<rp> (</rp><rt>binding identifier</rt><rp>) </rp></ruby>") を省略できますが、{{jsxref("Statements/class", "クラス文", "", "true")}}では省略できません。</li>
+ <li>クラス式は {{jsxref("Global_Objects/SyntaxError", "SyntaxError")}} <strong>を発生させずに</strong>クラスを再宣言することができます。これは{{jsxref("Statements/class", "クラス文", "", "true")}}の場合はできません。</li>
+</ul>
+
+<p><code>constructor</code> メソッドは省略可能です。クラス式で生成されたクラスは、常に {{jsxref("Operators/typeof", "typeof")}} が "<code>function</code>" の値を返します。</p>
+
+<pre class="brush: js notranslate">'use strict';
+let Foo = class {}; // コンストラクタープロパティは省略可能
+Foo = class {}; // 再宣言が可能
+
+typeof Foo; // "function" を返す
+typeof class {}; // "function" を返す
+
+Foo instanceof Object; // true
+Foo instanceof Function; // true
+class Foo {} // SyntaxError が発生 (クラス<em>宣言</em>は再宣言ができない)
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="A_simple_class_expression" name="A_simple_class_expression">簡単なクラス式</h3>
+
+<p>以下は、名前のない簡単なクラス式です。変数 <code>Foo</code> を使って参照できます。</p>
+
+<pre class="brush: js notranslate">const Foo = class {
+ constructor() {}
+ bar() {
+ return 'Hello World!';
+ }
+};
+
+const instance = new Foo();
+instance.bar(); // "Hello World!"
+Foo.name; // "Foo"
+</pre>
+
+<h3 id="Named_class_expressions" name="Named_class_expressions">名前付きクラス式</h3>
+
+<p>クラス内部で現在のクラスを参照したい場合は、<em>名前付きクラス式</em>を作成してください。この名前は、そのクラス式自身のスコープ内だけで見ることができます。</p>
+
+<pre class="brush: js notranslate">const Foo = class NamedFoo {
+ constructor() {}
+ whoIsThere() {
+ return NamedFoo.name;
+ }
+}
+const bar = new Foo();
+bar.whoIsThere(); // "NamedFoo"
+NamedFoo.name; // ReferenceError: NamedFoo is not defined
+Foo.name; // "NamedFoo"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.class")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Operators/function", "関数式", "", "true")}}</li>
+ <li>{{jsxref("Statements/class", "クラス宣言", "", "true")}}</li>
+ <li>{{jsxref("Classes", "クラス", "", "true")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/comma_operator/index.html b/files/ja/web/javascript/reference/operators/comma_operator/index.html
new file mode 100644
index 0000000000..a8e460a4d3
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/comma_operator/index.html
@@ -0,0 +1,94 @@
+---
+title: 'カンマ演算子 (,)'
+slug: Web/JavaScript/Reference/Operators/Comma_Operator
+tags:
+ - Comma
+ - Compound
+ - Expression
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Comma_Operator
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>カンマ演算子</strong> (<strong><code>,</code></strong>) は、それぞれの演算対象を(左から右に)評価し、最後のオペランドの値を返します。これにより、複数の式が評価される複合式を作成することができ、複合式の最終値はそのメンバ式の一番右端の値となります。これは、<code><a href="/docs/Web/JavaScript/Reference/Statements/for">for</a></code> ループに複数のパラメーターを提供する場合によく使用されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-commaoperators.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><em>expr1</em>, <em>expr2, expr3...</em></pre>
+
+<h2 id="Parameters" name="Parameters">パラメーター</h2>
+
+<dl>
+ <dt><code>expr1</code>, <code>expr2</code>, <code>expr3</code>...</dt>
+ <dd>1つ以上の式で、最後の式が複合式の値として返されます。</dd>
+</dl>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>単一の式でなければならない位置で複数の式を記述したい場合に、カンマ演算子を使うことができます。この演算子が最も良く使われるのは、<code>for</code> ループで複数のパラメーターを与えたい時です。</p>
+
+<p>カンマ演算子は、配列、オブジェクト、関数の引数やパラメーターの内部にあるカンマとは大きく異なります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>例えば次のコードでは、<code>a</code> が、1 辺 10 要素からなる 2 次元配列内の要素を一度に 2 つ 変化させる為に、変数宣言部分でカンマ演算子を用いています。</p>
+
+<p>このコードは、配列における対角線の要素の値を出力するものです。</p>
+
+<pre class="brush:js;highlight:[1] notranslate">for (var i = 0, j = 9; i &lt;= 9; i++, j--)
+ document.writeln("a[" + i + "][" + j + "] = " + a[i][j]);</pre>
+
+<p>(<code>var</code> 文などで)代入​​​を行う際​​​にカンマを使うと、カンマ演算子が通常どおりに働いていないかのように見える場合があります(カンマ演算子が式の中にないため)。以下の例で <code>a</code> には <code>b = 3</code> の値(すなわち 3 )が設定されますが、さらに <code>c = 4</code> が評価されて、その結果 (4) がコンソールに返ります。これは<a href="/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence">演算子の優先順位と結合性</a>のためです。</p>
+
+<pre class="brush: js notranslate">var a, b, c;
+
+a = b = 3, c = 4; // コンソールに 4 が返る
+console.log(a); // 3 (もっとも左)
+
+var x, y, z;
+
+x = (y = 5, z = 6); // コンソールに 6 が返る
+console.log(x); // 6 (もっとも右)
+</pre>
+
+<h3 id="Processing_and_then_returning" name="Processing_and_then_returning">処理と戻り値</h3>
+
+<p>カンマ演算子が行うことのもうひとつの例が、値を返す前の処理です。前述のとおり最後の要素のみ返しますが、その他すべての要素も評価します。よって、以下のようなことができます:</p>
+
+<pre class="brush: js notranslate">function myFunc () {
+ var x = 0;
+
+ return (x += 1, x); // 戻り値は ++x と同じ
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-comma-operator', 'Comma operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.comma")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/for">for ループ</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/comparison_operators/index.html b/files/ja/web/javascript/reference/operators/comparison_operators/index.html
new file mode 100644
index 0000000000..701e2081f3
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/comparison_operators/index.html
@@ -0,0 +1,231 @@
+---
+title: 比較演算子
+slug: Web/JavaScript/Reference/Operators/Comparison_Operators
+tags:
+ - JavaScript
+ - Operator
+ - Reference
+ - 演算子
+translation_of: Web/JavaScript/Reference/Operators
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>JavaScript には、厳密な比較と型変換の比較の両方があります。厳密な比較 (例: <code>===</code>) は、オペランドが同じ型で、内容も一致している場合にのみ真になります。もっとよく使用される抽象的な比較 (例: <code>==</code>) は、比較する前にオペランドを同じ型に変換します。抽象的な関係比較 (例: <code>&lt;=</code>) では、比較前にまずオペランドがプリミティブ型に変換され、それから同じ型に変換されます。</p>
+
+<p>文字列は Unicode 値を使用した標準的な辞書順に基づいて比較されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-equality.html")}}</div>
+
+<div>
+<div>{{EmbedInteractiveExample("pages/js/expressions-strict-equality.html")}}</div>
+</div>
+
+<div></div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<p>比較の機能は以下のとおりです。</p>
+
+<ul>
+ <li>2 つの文字列が厳密に等しくなるのは、字の順序が等しく、長さが等しく、対応する位置の文字が等しいときです。</li>
+ <li>2 つの数字が厳密に等しくなるのは、数値的に等しいとき (数字の値が等しいとき) です。<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/NaN" title="NaN">NaN</a> は、どんなものとも (Nan とさえも) 等しくなりません。プラスゼロとマイナスゼロは互いと等しくなります。</li>
+ <li>2 つの論理オペランドが厳密に等しくなるのは、どちらも <code>true</code> か、どちらも <code>false</code> のときです。</li>
+ <li>2 つの異なるオブジェクトは、厳密な比較でも抽象的な比較でも等しくなりません。</li>
+ <li>オブジェクト比較が等しくなるのは、オペランドが同じオブジェクトを参照しているときだけです。</li>
+ <li>Null と Undefined 型は、自分自身と厳密に等しく、また互いに抽象的に等しくなります。</li>
+</ul>
+
+<h2 id="Equality_operators" name="Equality_operators">等価演算子</h2>
+
+<h3 id="Equality" name="Equality">等価 (==)</h3>
+
+<p>等価演算子は、2 つのオペランドが<strong>同じ型でないならば</strong>オペランドを変換して、それから厳密な比較を行います。<strong>両方のオペランドがオブジェクトならば</strong>、 JavaScript は内部参照を比較するので、オペランドがメモリ内の同じオブジェクトを参照するときに等しくなります。</p>
+
+<h4 id="Syntax" name="Syntax">構文</h4>
+
+<pre class="syntaxbox notranslate">x == y
+</pre>
+
+<h4 id="Examples" name="Examples">例</h4>
+
+<pre class="brush: js notranslate">1 == 1 // true
+'1' == 1 // true
+1 == '1' // true
+0 == false // true
+0 == null // false
+var object1 = {'key': 'value'}, object2 = {'key': 'value'};
+object1 == object2 // false
+0 == undefined // false
+null == undefined // true
+</pre>
+
+<h3 id="Inequality" name="Inequality">不等価 (!=)</h3>
+
+<p>不等価演算子は、オペランド同士が等しくないならば真を返します。2 つのオペランドが<strong>同じ型でないならば</strong>、JavaScript は適切な型にオペランドを変換して比較しようとします。<strong>両方のオペランドがオブジェクトならば</strong>、JavaScript は内部参照を比較するので、オペランドがメモリ内の異なるオブジェクトを参照するときには等しくなりません。</p>
+
+<h4 id="Syntax_2" name="Syntax_2">構文</h4>
+
+<pre class="syntaxbox notranslate">x != y</pre>
+
+<h4 id="Examples_2" name="Examples_2">例</h4>
+
+<pre class="brush: js notranslate">1 != 2 // true
+1 != '1' // false
+1 != "1" // false
+1 != true // false
+0 != false // false
+</pre>
+
+<h3 id="Identity" name="Identity">一致 / 厳密等価 (===)</h3>
+
+<p>厳密等価演算子は、<strong>型変換なしで</strong>オペランド同士が (上に示した通り) 厳密に等しければ真を返します。</p>
+
+<h4 id="Syntax_3" name="Syntax_3">構文</h4>
+
+<pre class="syntaxbox notranslate">x === y</pre>
+
+<h4 id="Examples_3" name="Examples_3">例</h4>
+
+<pre class="brush: js notranslate">3 === 3 // true
+3 === '3' // false
+var object1 = {'key': 'value'}, object2 = {'key': 'value'};
+object1 === object2 //false</pre>
+
+<h3 id="Nonidentity" name="Nonidentity">不一致 / 厳密不等価 (!==)</h3>
+
+<p>厳密不等価演算子は、<strong>オペランド同士が等しくないか、型が等しくない、あるいはその両方</strong>ならば真を返します。</p>
+
+<h4 id="Syntax_4" name="Syntax_4">構文</h4>
+
+<pre class="syntaxbox notranslate">x !== y</pre>
+
+<h4 id="Examples_4" name="Examples_4">例</h4>
+
+<pre class="brush: js notranslate">3 !== '3' // true
+4 !== 3 // true
+</pre>
+
+<h2 id="Relational_operators" name="Relational_operators">関係演算子</h2>
+
+<p>これらの演算子のそれぞれは、比較が行われる前に、そのオペランドをプリミティブに{{Glossary("Type_coercion", "型強制")}}します。両方とも文字列として終わる場合は、辞書順で比較され、そうでない場合は数値に変換されて比較されます。 <code>NaN</code> との比較は常に <code>false</code> を生み出します。</p>
+
+<h3 id="Greater_than_operator" name="Greater_than_operator">大なり演算子 (&gt;)</h3>
+
+<p>大なり演算子は、左オペランドが右オペランドより大きければ、真を返します。</p>
+
+<h4 id="Syntax_5" name="Syntax_5">構文</h4>
+
+<pre class="syntaxbox notranslate">x &gt; y</pre>
+
+<h4 id="Examples_5" name="Examples_5">例</h4>
+
+<pre class="brush: js notranslate">4 &gt; 3 // true
+</pre>
+
+<h3 id="Greater_than_or_equal_operator" name="Greater_than_or_equal_operator">大なりイコール演算子 (&gt;=)</h3>
+
+<p>大なりイコール演算子は、左オペランドが右オペランド以上ならば、真を返します。</p>
+
+<h4 id="Syntax_6" name="Syntax_6">構文</h4>
+
+<pre class="syntaxbox notranslate"> x &gt;= y</pre>
+
+<h4 id="Examples_6" name="Examples_6">例</h4>
+
+<pre class="brush: js notranslate">4 &gt;= 3 // true
+3 &gt;= 3 // true
+</pre>
+
+<h3 id="Less_than_operator" name="Less_than_operator">小なり演算子 (&lt;)</h3>
+
+<p>小なり演算子は、左オペランドが右オペランドより小さければ、真を返します。</p>
+
+<h4 id="Syntax_7" name="Syntax_7">構文</h4>
+
+<pre class="syntaxbox notranslate"> x &lt; y</pre>
+
+<h4 id="Examples_7" name="Examples_7">例</h4>
+
+<pre class="brush: js notranslate">3 &lt; 4 // true
+</pre>
+
+<h3 id="Less_than_or_equal_operator" name="Less_than_or_equal_operator">小なりイコール演算子 (&lt;=)</h3>
+
+<p>小なりイコール演算子は、左オペランドが右オペランド以下ならば、真を返します。</p>
+
+<h4 id="Syntax_8" name="Syntax_8">構文</h4>
+
+<pre class="syntaxbox notranslate"> x &lt;= y</pre>
+
+<h4 id="Examples_8" name="Examples_8">例</h4>
+
+<pre class="brush: js notranslate">3 &lt;= 4 // true
+3 &lt;= 3 // true
+</pre>
+
+<h2 id="Using_the_equality_operators" name="Using_the_equality_operators">等価演算子の使用</h2>
+
+<p>標準等価演算子 (<code>==</code> と <code>!=</code>) は 2 つのオペランドの比較に<a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3">抽象的等価比較アルゴリズム</a>を使用します。オペランドの型が異なる場合は、比較を行う前にそれらを同じ型に変換しようとします。例えば <code>5 == '5'</code> という式では、比較を行う前に右オペランドの文字列を数値に変換します。</p>
+
+<p>厳密等価演算子 (<code>===</code> と <code>!==</code>) は<a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6">厳密等価比較アルゴリズム</a>を使用して、オペランドの型が同一かどうかに関する比較も行います。オペランドの型が異なれば、例えば <code>5</code> と <code>'5'</code> の比較では、同一性比較 <code>5 !== '5'</code> は <code>true</code> と評価され、 <code>5 === '5'</code> のチェックは <code>false</code> 評価されます。</p>
+
+<p>厳密等価演算子を使うのは、オペランドが特定の型の特定の値でなければならない場合、言い換えればオペランドの正確な型が重要な場合です。それ以外では、2 つのオペランドが同じ型でなくても比較が可能になる、標準的な等価演算子を使えます。</p>
+
+<p>比較に型の変換が関わるとき (つまり厳密でない比較のとき)、 JavaScript は以下のように {{jsxref("String")}}, {{jsxref("Number")}}, {{jsxref("Boolean")}}, {{jsxref("Object")}} 型のオペランドを変換します。</p>
+
+<ul>
+ <li>数値と文字列を比較するとき、文字列は数値に変換されます。 JavaScript は文字列の数値リテラルを <code>Number</code> 型の値に変換しようとします。まず、文字列の数値リテラルから数学的な値を引き出します。次に、その値を最も近い <code>Number</code> 型に丸めます。</li>
+ <li>もしオペランドの片方が <code>Boolean</code> ならば、その Boolean オペランドが <code>true</code> の場合 1 に、<code>false</code> の場合は +0 に変換されます。</li>
+ <li>オブジェクトを数値または文字列と比較すると、 JavaScript はそのオブジェクトの既定値を返そうとします。演算子は、オブジェクトの <code>valueOf</code> や <code>toString</code> といったメソッドを用いて、プリミティブな値、 <code>String</code> か <code>Number</code> の値に変換しようとします。変換に失敗したら、ランタイムエラーが発生します。</li>
+ <li>オブジェクトがプリミティブ値に変換されるのは、比較対象がプリミティブ値であるときだけです。両方のオペランドがオブジェクトなら、オブジェクトとして比較され、両方が同じオブジェクトを参照するときだけ真となります。</li>
+</ul>
+
+<div class="note"><strong>メモ:</strong> String オブジェクトはオブジェクト型であり、文字列型ではありません! String オブジェクトはほとんど使わないので、次の結果に驚くかもしれません。</div>
+
+<pre class="brush:js notranslate">// 両方のオペランドが文字列型 (すなわちプリミティブな文字列) なので、true
+'foo' === 'foo'
+
+var a = new String('foo');
+var b = new String('foo');
+
+// a と b はオブジェクト型で、異なるオブジェクトを参照しているので、false
+a == b
+
+// a と b はオブジェクト型で、異なるオブジェクトを参照しているので、false
+a === b
+
+// a と 'foo' は異なる型で、比較前にオブジェクト (a) は
+// 文字列 'foo' に変換されるので、真
+a == 'foo'</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-equality-operators', 'Equality Operators')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-relational-operators', 'Relational Operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.comparison")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object.is()")}}</li>
+ <li>{{jsxref("Math.sign()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Equality_comparisons_and_sameness">等価性の比較とその使いどころ</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/conditional_operator/index.html b/files/ja/web/javascript/reference/operators/conditional_operator/index.html
new file mode 100644
index 0000000000..19afa5445a
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/conditional_operator/index.html
@@ -0,0 +1,115 @@
+---
+title: 条件 (三項) 演算子
+slug: Web/JavaScript/Reference/Operators/Conditional_Operator
+tags:
+ - Conditional
+ - JS
+ - JavaScript
+ - Operator
+ - Reference
+ - ternary
+ - 三項
+ - 条件
+ - 演算子
+translation_of: Web/JavaScript/Reference/Operators/Conditional_Operator
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><span class="seoSummary"><strong>条件 (三項) 演算子</strong>は JavaScript では唯一の、3 つのオペランドをとる演算子です。条件に続いて疑問符 (<code>?</code>)、そして条件が{{Glossary("truthy", "真値")}}であった場合に実行する式、コロン (<code>:</code>) が続き、条件が{{Glossary("falsy")}}であった場合に実行する式が最後に来ます。</span>この演算子は、 <a href="/ja/docs/Web/JavaScript/Reference/Statements/if...else"><code>if</code></a> 文のショートカットとしてよく用いられます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-conditionaloperators.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>condition</var> ? <var>exprIfTrue</var> : <var>exprIfFalse</var></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>condition</var></code></dt>
+ <dd>値が条件として使用される式です。</dd>
+ <dt><code><var>exprIfTrue</var></code></dt>
+ <dd><code><var>condition</var></code> が {{Glossary("truthy")}} の値 (<code>true</code> と等しいか、 <code>true</code> に変換できる値) と評価された場合に評価される式です。</dd>
+ <dt><code><var>exprIfFalse</var></code></dt>
+ <dd><code><var>condition</var></code> が {{Glossary("falsy")}} の値 (<code>false</code> と等しいか、 <code>false</code> に変換できる値) と評価された場合に評価される式です。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>false</code> についていえば、 falsy になる可能性がある式は <code>null</code>, <code>NaN</code>, <code>0</code>, 空文字列 (<code>""</code>), <code>undefined</code> です。 <code><var>condition</var></code> がこのうちの何れかであれば、条件演算子の結果は <code>exprIfFalse</code> の式を実行した結果になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="A_simple_example" name="A_simple_example">単純な例</h3>
+
+<pre class="brush: js notranslate">var age = 26;
+var beverage = (age &gt;= 21) ? "ビール" : "ジュース";
+console.log(beverage); // "ビール"
+</pre>
+
+<h3 id="Handling_null_values" name="Handling_null_values">null 値の扱い</h3>
+
+<p>よくある使い方の一つに、 <code>null</code> になる可能性がある値を扱うというものがあります。</p>
+
+<pre class="brush: js notranslate">let greeting = person =&gt; {
+ let name = person ? person.name : `お客さん`
+ return `やあ、${name}`
+}
+
+console.log(greeting({name: `アリス`})); // "やあ、アリス"
+console.log(greeting(null)); // "やあ、お客さん"
+</pre>
+
+<h3 id="Conditional_chains" name="Conditional_chains">条件の連鎖</h3>
+
+<p>三項演算子は右結合で、すなわち以下のような方法で <code>if … else if … else if … else</code> の連鎖と同様に「連鎖」させることができます。</p>
+
+<pre class="brush: js notranslate">function example(…) {
+ return condition1 ? value1
+ : condition2 ? value2
+ : condition3 ? value3
+ : value4;
+}
+
+// 以下のものと同等です。
+
+function example(…) {
+ if (condition1) { return value1; }
+ else if (condition2) { return value2; }
+ else if (condition3) { return value3; }
+ else { return value4; }
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-conditional-operator', 'Conditional Operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.conditional")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/if...else">if 文</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">Null 合体演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Optional_chaining">オプション連鎖</a></li>
+ <li><a href="/ja/docs/Learn/JavaScript/Building_blocks/conditionals">コードでの意思決定 — 条件文</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators">式と演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/decrement/index.html b/files/ja/web/javascript/reference/operators/decrement/index.html
new file mode 100644
index 0000000000..b22545059c
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/decrement/index.html
@@ -0,0 +1,83 @@
+---
+title: デクリメント (--)
+slug: Web/JavaScript/Reference/Operators/Decrement
+tags:
+ - Decrement
+ - JavaScript
+ - Language feature
+ - Operator
+translation_of: Web/JavaScript/Reference/Operators/Decrement
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>デクリメント演算子 (<code>--</code>) は、オペランドをデクリメント (1を減算) して値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-decrement.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> <var>x</var>-- or --<var>x</var>
+</pre>
+
+<h2 id="解説">解説</h2>
+
+<p>オペランドに後置で演算子を付けると (例えば <code><var>x</var>--</code>)、デクリメント演算子はデクリメントしますが、デクリメント前の値を返します。</p>
+
+<p>オペランドに前置で演算子を付けると (例えば <code>--<var>x</var></code>)、デクリメント演算子はデクリメントし、デクリメント後の値を返します。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="後置デクリメント">後置デクリメント</h3>
+
+<pre class="brush: js notranslate">let x = 3;
+y = x--;
+
+// y = 3
+// x = 2
+</pre>
+
+<h3 id="前置デクリメント">前置デクリメント</h3>
+
+<pre class="brush: js notranslate">let a = 2;
+b = --a;
+
+// a = 1
+// b = 1
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-postfix-decrement-operator', 'Decrement operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.decrement")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Addition">加算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Subtraction">減算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Multiplication">乗算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Division">除算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Remainder">剰余演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Exponentiation">べき乗演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Increment">インクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_negation">単項マイナス演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_plus">単項プラス演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/delete/index.html b/files/ja/web/javascript/reference/operators/delete/index.html
new file mode 100644
index 0000000000..1095dd3d1c
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/delete/index.html
@@ -0,0 +1,296 @@
+---
+title: delete
+slug: Web/JavaScript/Reference/Operators/delete
+tags:
+ - JavaScript
+ - Memory Management
+ - Object
+ - Operator
+ - Property
+ - Reference
+ - Release
+ - Unary
+ - delete
+translation_of: Web/JavaScript/Reference/Operators/delete
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><span class="seoSummary">JavaScript の <strong><code>delete</code> 演算子</strong>は、オブジェクトからプロパティを削除します。同じプロパティへの参照がそれ以上保持されない場合は、自動的に解放されます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-deleteoperator.html")}}</div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate">delete <em>expression</em> </pre>
+
+<p><em>expression</em> には、プロパティへの参照になる式を置きます。例えば:</p>
+
+<pre class="syntaxbox notranslate">delete <em>object.property</em>
+delete <em>object</em>['<em>property</em>']</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>object</code></dt>
+ <dd>オブジェクト名、またはオブジェクトとして評価される式</dd>
+ <dt><code>property</code></dt>
+ <dd>削除するプロパティです。</dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>非 strict モードでは、プロパティが編集不可の場合、false が返ります。その他の場合すべてで <code>true</code> が返ります。</p>
+
+<h3 id="例外">例外</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode">strict モード</a> では、プロパティが編集不可の場合、{{jsxref("Global_objects/SyntaxError")}} をスローします。</p>
+
+<h2 id="説明">説明</h2>
+
+<p>一般的に信じられていることとは異なり、<code>delete</code> 演算子は、直接的にメモリを開放することは<strong>ありません</strong>。メモリの管理は参照が切れることで間接的に行われます。詳細は <a href="/ja/docs/Web/JavaScript/Memory_Management">memory management</a> をご覧ください。</p>
+
+<p><code><strong>delete</strong></code> 演算子は指定したプロパティをオブジェクトから取り除きます。削除に成功すると <code>true</code> を返し、そうでなければ <code>false</code> を返します。しかし、次のシナリオを考慮することが重要です:</p>
+
+<ul>
+ <li>削除しようとしたプロパティが存在しない場合、<code>delete</code> は何の効果もなく、<code>true</code> を返します。</li>
+ <li>同様の名前のプロパティがオブジェクトのプロトタイプチェーンに存在する場合、削除後はプロトタイプチェーンのプロパティをオブジェクトが使うようになります (つまり、<code>delete</code> 自身のプロパティにのみ効果があります)。</li>
+ <li>グローバルスコープや関数スコープから {{jsxref("Statements/var","var")}} で宣言されたプロパティは削除できません。
+ <ul>
+ <li>そのため、<code>delete</code> はグローバルスコープ内の関数を削除できません (関数定義の一部であるか関数式の一部であるかにかかわらず)。</li>
+ <li>(グローバルスコープを除く) オブジェクトの一部である関数は <code>delete</code> で削除できます。</li>
+ </ul>
+ </li>
+ <li>{{jsxref("Statements/let","let")}} や {{jsxref("Statements/const","const")}} で宣言された任意のプロパティはそれらが宣言されたスコープから削除できません。</li>
+ <li>編集不可能なプロパティは削除できません。これには {{jsxref("Math")}} や {{jsxref("Array")}}、{{jsxref("Object")}} のようなビルトインオブジェクトのプロパティや {{jsxref("Object.defineProperty()")}} のようなメソッドで編集不可として生成されたプロパティが含まれます。</li>
+</ul>
+
+<p>次のスニペットがシンプルな例です:</p>
+
+<pre class="brush: js notranslate">var Employee = {
+ age: 28,
+ name: 'abc',
+ designation: 'developer'
+}
+
+console.log(delete Employee.name); // returns true
+console.log(delete Employee.age); // returns true
+
+// When trying to delete a property that does
+// not exist, true is returned
+console.log(delete Employee.salary); // returns true
+</pre>
+
+<h3 id="編集不可のプロパティ"><strong>編集不可のプロパティ</strong></h3>
+
+<p>プロパティが編集不可に設定されているとき、<code>delete</code> は何の効果もなく、<code>false</code> を返します。strict モードでは、これは <code>SyntaxError</code> を生成します。</p>
+
+<pre class="brush: js notranslate">var Employee = {};
+Object.defineProperty(Employee, 'name', {configurable: false});
+
+console.log(delete Employee.name); // returns false
+</pre>
+
+<p>{{jsxref("Statements/var","var")}} や {{jsxref("Statements/let","let")}}、{{jsxref("Statements/const","const")}} は、<code>delete</code> 演算子で削除できない編集不可のプロパティを生成します:</p>
+
+<pre class="brush: js notranslate">var nameOther = 'XYZ';
+
+// We can access this global property using:
+Object.getOwnPropertyDescriptor(window, 'nameOther');
+
+// output: Object {value: "XYZ",
+// writable: true,
+// enumerable: true,
+// <strong>configurable: false</strong>}
+
+// Since "nameOther" is added using with the
+// var keyword, it is marked as "non-configurable"
+
+delete nameOther; // return false</pre>
+
+<p>strict モードでは、例外が発生します。</p>
+
+<h3 id="Strict_vs._非_strict_モード"><strong>Strict vs. 非 strict モード</strong></h3>
+
+<p>strict モードのとき、変数や関数の引数、関数名への参照に直接 <code>delete</code> が使われた場合、{{jsxref("SyntaxError")}} をスローします。</p>
+
+<p><code>var</code> で宣言された変数は編集不可に設定されます。次の例では、<code>salary</code> は編集不可で削除できません。非 strict モードでは、<code>delete</code> 演算子は <code>false</code> を返します。</p>
+
+<pre class="brush: js notranslate">function Employee() {
+ delete salary;
+ var salary;
+}
+
+Employee();
+</pre>
+
+<p>strict モードで同じコードがどのように振る舞うか見てみましょう。<code>false</code> を返す代わりに、ステートメントは <code>SyntaxError</code> を発生させます。</p>
+
+<pre class="brush: js notranslate">"use strict";
+
+function Employee() {
+ delete salary; // SyntaxError
+ var salary;
+}
+
+// Similarly, any direct access to a function
+// with delete will raise a SyntaxError
+
+function DemoFunction() {
+ //some code
+}
+
+delete DemoFunction; // SyntaxError
+</pre>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: js notranslate">// creates the property adminName on the global scope
+adminName = 'xyz';
+
+// creates the property empCount on the global scope
+// Since we are using var, this is marked as non-configurable. The same is true of let and const.
+var empCount = 43;
+
+EmployeeDetails = {
+ name: 'xyz',
+ age: 5,
+ designation: 'Developer'
+};
+
+// adminName is a property of the global scope.
+// It can be deleted since it is created without var.
+// Therefore, it is configurable.
+delete adminName; // returns true
+
+// On the contrary, empCount is not configurable,
+// since var was used.
+delete empCount; // returns false
+
+// delete can be used to remove properties from objects
+delete EmployeeDetails.name; // returns true
+
+<strong>// </strong>Even when the property does not exists, it returns "true"
+delete EmployeeDetails.salary; // returns true
+
+// delete does not affect built-in static properties
+delete Math.PI; // returns false
+
+// EmployeeDetails is a property of the global scope.
+// Since it defined without "var", it is marked configurable
+delete EmployeeDetails; // returns true
+
+function f() {
+ var z = 44;
+
+ // delete doesn't affect local variable names
+ delete z; // returns false
+}
+</pre>
+
+<h3 id="delete_とプロトタイプチェーン"><code>delete</code> とプロトタイプチェーン</h3>
+
+<p>次の例では、 <span id="result_box" lang="ja"><span>プロトタイプチェーンで同じ名前のプロパティを使用できる間に、オブジェクトの独自のプロパティを削除します</span></span> :</p>
+
+<pre class="brush: js notranslate">function Foo() {
+ this.bar = 10;
+}
+
+Foo.prototype.bar = 42;
+
+var foo = new Foo();
+
+// Returns true, since the own property
+// has been deleted on the foo object
+delete foo.bar;
+
+// foo.bar is still available, since it
+// is available in the prototype chain.
+console.log(foo.bar);
+
+// We delete the property on the prototype
+delete Foo.prototype.bar;
+
+// logs "undefined" since the property
+// is no longer inherited
+console.log(foo.bar); </pre>
+
+<h3 id="配列の要素の削除"><strong>配列の要素の削除</strong></h3>
+
+<p>配列の要素を削除したとき、配列の長さは影響を受けません。これは配列の最後の要素を削除しても保持されます。</p>
+
+<p><code>delete</code> 演算子が配列の要素を削除すると、要素はもはや配列からなくなります。 次の例では、<code>trees[3]</code> が <code>delete</code> で削除されます。</p>
+
+<pre class="brush: js notranslate">var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
+delete trees[3];
+if (3 in trees) {
+ // this does not get executed
+}</pre>
+
+<p>配列の要素を存在させたいが値が未定義の場合、<code>delete</code> 演算子の代わりに <code>undefined</code> 値を用います。次の例では、<code>trees[3]</code> は undefined が割り当てられていますが、配列の要素はまだ存在しています:</p>
+
+<pre class="brush: js notranslate">var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
+trees[3] = undefined;
+if (3 in trees) {
+ // this gets executed
+}</pre>
+
+<p>代わりに、配列の内容を変更して配列要素を削除する場合は、<code>{{jsxref("Array.splice", "splice")}}</code> メソッドを使用します。次の例では、{{jsxref("Array.splice", "splice")}} を使用して配列から <code>trees[3]</code> が削除されます:</p>
+
+<pre class="brush: js notranslate">var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
+trees.splice(3,1);
+console.log(trees); // ["redwood", "bay", "cedar", "maple"]
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">ステータス</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-delete-operator', 'The delete Operator')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-delete-operator', 'The delete Operator')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-11.4.1', 'The delete Operator')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1', '#sec-11.4.1', 'The delete Operator')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>初期定義。JavaScript 1.2 で実装。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.delete")}}</p>
+
+<h2 id="クロスブラウザーの問題点">クロスブラウザーの問題点</h2>
+
+<p>ECMAScript はオブジェクトのイテレーション順を実装系依存であるとしているにもかかわらず、すべての主要なブラウザーはイテレーション順を、(少なくともプロトタイプ上にないプロパティについて) 最初に追加されたプロパティを最初に持ち出す方式に基づいてサポートしているように見受けられます。ところが Internet Explorer ではプロパティに対して <code>delete</code> を用いたときに、他のブラウザーが単純なオブジェクトを整列された連想配列のように用いることを妨げる、ややこしい動作になる場合があります。Internet Explorer では、プロパティの<em>値</em>が実際 undefined に設定されているとき、後から同じ名前で再びプロパティを追加すると、そのプロパティは<em>元の</em>場所でイテレートされるようになるでしょう。削除済みのプロパティを再度追加した場合に期待するであろう、イテレーション順の最後ではありません。</p>
+
+<p>クロスブラウザー環境で整列された連想配列をしたい場合は、可能であれば {{jsxref("Map")}} を使用してください。または、2 つに分けた配列 (片方はキー、もう片方は値) やプロパティをひとつ持つオブジェクトの配列などで構造をシミュレートしてください。</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="http://perfectionkills.com/understanding-delete/">In depth analysis on delete</a></li>
+ <li>{{jsxref("Reflect.deleteProperty()")}}</li>
+ <li>{{jsxref("Map.prototype.delete()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/destructuring_assignment/index.html b/files/ja/web/javascript/reference/operators/destructuring_assignment/index.html
new file mode 100644
index 0000000000..99361d3319
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/destructuring_assignment/index.html
@@ -0,0 +1,444 @@
+---
+title: 分割代入
+slug: Web/JavaScript/Reference/Operators/Destructuring_assignment
+tags:
+ - Destructuring
+ - Destructuring_assignment
+ - ECMAScript 2015
+ - ES6
+ - JavaScript
+ - Language feature
+ - Nested object and array destructuring
+ - Operator
+ - 分割代入
+ - 演算子
+translation_of: Web/JavaScript/Reference/Operators/Destructuring_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>分割代入</strong> (Destructuring assignment) 構文は、配列から値を取り出して、あるいはオブジェクトからプロパティを取り出して別個の変数に代入することを可能にする JavaScript の式です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-destructuringassignment.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush:js notranslate">let a, b, rest;
+[a, b] = [10, 20];
+console.log(a); // 10
+console.log(b); // 20
+
+[a, b, ...rest] = [10, 20, 30, 40, 50];
+console.log(a); // 10
+console.log(b); // 20
+console.log(rest); // [30, 40, 50]
+
+({ a, b } = { a: 10, b: 20 });
+console.log(a); // 10
+console.log(b); // 20
+
+
+// Stage 4(finished) proposal
+({a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40});
+console.log(a); // 10
+console.log(b); // 20
+console.log(rest); // {c: 30, d: 40}
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オブジェクトリテラルと配列リテラルは、いくつかのデータを<em>アドホック</em>にまとめる簡単な方法を提供します。</p>
+
+<pre class="brush: js notranslate">const x = [1, 2, 3, 4, 5];</pre>
+
+<p>分割代入は似たような構文を使用しますが、代入の左辺が元の変数からどの値を受け取るかを定義します。</p>
+
+<pre class="brush: js notranslate">const x = [1, 2, 3, 4, 5];
+const [y, z] = x;
+console.log(y); // 1
+console.log(z); // 2
+</pre>
+
+<p>この機能は、Perl や Python などの言語に存在する機能に似ています。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Array_destructuring" name="Array_destructuring">配列の分割代入</h3>
+
+<h4 id="Basic_variable_assignment" name="Basic_variable_assignment">簡単な例</h4>
+
+<pre class="brush: js notranslate">const foo = ['one', 'two', 'three'];
+
+const [red, yellow, green] = foo;
+console.log(red); // "one"
+console.log(yellow); // "two"
+console.log(green); // "three"
+</pre>
+
+<h4 id="Assignment_separate_from_declaration" name="Assignment_separate_from_declaration">宣言後の割り当て</h4>
+
+<p>変数は宣言とは別に、分割代入によって値を代入することができます。</p>
+
+<pre class="brush:js notranslate">let a, b;
+
+[a, b] = [1, 2];
+console.log(a); // 1
+console.log(b); // 2
+</pre>
+
+<h4 id="Default_values" name="Default_values">既定値</h4>
+
+<p>配列から取り出した値が <code>undefined</code> だった場合に使用される既定値を指定できます。</p>
+
+<pre class="brush: js notranslate">let a, b;
+
+[a=5, b=7] = [1];
+console.log(a); // 1
+console.log(b); // 7
+</pre>
+
+<h4 id="Swapping_variables" name="Swapping_variables">変数の入れ替え</h4>
+
+<p>分割代入を使用して、複数の変数の値を入れ替えることができます。</p>
+
+<p>分割代入を使用せずに 2 つの値を交換するには、一時変数 (または、一部の低水準言語においては <a href="https://ja.wikipedia.org/wiki/XOR%E4%BA%A4%E6%8F%9B%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0">XOR 交換アルゴリズム</a>) が必要です。</p>
+
+<pre class="brush:js notranslate">let a = 1;
+let b = 3;
+
+[a, b] = [b, a];
+console.log(a); // 3
+console.log(b); // 1
+
+const arr = [1,2,3];
+[arr[2], arr[1]] = [arr[1], arr[2]];
+console.log(arr); // [1,3,2]
+
+</pre>
+
+<h4 id="Parsing_an_array_returned_from_a_function" name="Parsing_an_array_returned_from_a_function">関数から返された配列の解析</h4>
+
+<p>関数は配列を返すことができます。分割代入によって、返された配列の使用をより簡潔に記述できます。</p>
+
+<p>この例では、<code>f()</code> は出力として値 <code>[1, 2]</code> を返しており、分割代入により 1行で解析できます。</p>
+
+<pre class="brush:js notranslate">function f() {
+ return [1, 2];
+}
+
+let a, b;
+[a, b] = f();
+console.log(a); // 1
+console.log(b); // 2
+</pre>
+
+<h4 id="Ignoring_some_returned_values" name="Ignoring_some_returned_values">返値の無視</h4>
+
+<p>関心のない返値は無視することができます。</p>
+
+<pre class="brush:js notranslate">function f() {
+ return [1, 2, 3];
+}
+
+const [a, , b] = f();
+console.log(a); // 1
+console.log(b); // 3
+
+const [c] = f();
+console.log(c); // 1
+</pre>
+
+<p>このようにすべての返値を無視することもできます。</p>
+
+<pre class="brush:js notranslate">[,,] = f();
+</pre>
+
+<h4 id="Assigning_the_rest_of_an_array_to_a_variable" name="Assigning_the_rest_of_an_array_to_a_variable">配列の残余部分への変数の代入</h4>
+
+<p>配列を分割するときに残余パターンを使用して、配列の残りの部分を取り出して変数に代入できます。</p>
+
+<pre class="brush: js notranslate">const [a, ...b] = [1, 2, 3];
+console.log(a); // 1
+console.log(b); // [2, 3]</pre>
+
+<p>左辺側で残余要素とともに末尾のカンマが使用されていると、{{jsxref("SyntaxError")}} が発生しますので注意してください。</p>
+
+<pre class="brush: js example-bad notranslate">const [a, ...b,] = [1, 2, 3];
+
+// SyntaxError: rest 要素の末尾にカンマがあってはなりません
+// 常に最後の要素として rest 演算子を使用してください。
+</pre>
+
+<h4 id="Unpacking_values_from_a_regular_expression_match" name="Unpacking_values_from_a_regular_expression_match">正規表現の一致からの値取得</h4>
+
+<p>正規表現オブジェクトの <code><a href="/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec"> exec()</a></code> メソッドは一致するものを見つけ、最初に一致した文字列全体の一部と、正規表現内の各括弧で囲まれたグループに一致した文字列の部分を含む配列を返します。分割代入によって、簡単にこの配列の一部分を取り出せます。また必要でない場合は、完全一致を無視できます。</p>
+
+<pre class="brush:js notranslate">function parseProtocol(url) {
+ const parsedURL = /^(\w+)\:\/\/([^\/]+)\/(.*)$/.exec(url);
+ if (!parsedURL) {
+ return false;
+ }
+ console.log(parsedURL);
+ // ["https://developer.mozilla.org/ja/Web/JavaScript",
+ "https", "developer.mozilla.org", "en-US/Web/JavaScript"]
+
+ const [, protocol, fullhost, fullpath] = parsedURL;
+ return protocol;
+}
+
+console.log(parseProtocol('https://developer.mozilla.org/ja/Web/JavaScript'));
+// "https"
+</pre>
+
+<h3 id="Object_destructuring" name="Object_destructuring">オブジェクトの分割代入</h3>
+
+<h4 id="Basic_assignment" name="Basic_assignment">簡単な例</h4>
+
+<pre class="brush: js notranslate">const user = {
+  id: 42,
+ is_verified: true
+};
+
+const {id, is_verified} = user;
+
+console.log(id); // 42
+console.log(is_verified); // true
+</pre>
+
+<h4 id="Assignment_without_declaration" name="Assignment_without_declaration">宣言のない代入</h4>
+
+<p>分割代入は代入文で宣言することなく行うことができます。</p>
+
+<pre class="brush:js notranslate">let a, b;
+
+({a, b} = {a: 1, b: 2});</pre>
+
+<div class="note">
+<p><strong>メモ</strong>: 代入文の周りの <code>( ... )</code> は宣言のないオブジェクトリテラル分割代入を使用するときに必要な構文です。</p>
+
+<p><code>{a, b} = {a: 1, b: 2}</code> は有効なスタンドアロンの構文ではありません。というのも、左辺の <code>{a, b}</code> はブロックでありオブジェクトリテラルではないと考えられるからです。</p>
+
+<p>ですが、<code>({a, b} = {a: 1, b: 2})</code> 形式は有効です。<code>var {a, b} = {a: 1, b: 2}</code> と考えられるためです。</p>
+
+<p><code>( ... )</code> の式の前にセミコロンが必要です。そうしなければ、前の行の関数を実行に使用される可能性があります。</p>
+</div>
+
+<h4 id="Assigning_to_new_variable_names" name="Assigning_to_new_variable_names">異なる名前を持つ変数への代入</h4>
+
+<p>オブジェクトから変数を取り出して、オブジェクトのプロパティとは異なる名前の変数に代入することができます。</p>
+
+<pre class="brush: js notranslate">const o = {p: 42, q: true};
+const {p: foo, q: bar} = o;
+
+console.log(foo); // 42
+console.log(bar); // true</pre>
+
+<p>ここで、例えば、<code>const {p: foo} = o</code> はオブジェクト <code>o</code> から <code>p</code> という名前のプロパティを取り、<code>foo</code> という名前のローカル変数へ代入します。</p>
+
+<h4 id="Default_values_2" name="Default_values_2">既定値</h4>
+
+<p>オブジェクトから取り出した値が <code>undefined</code> であるときの既定値を、変数に割り当てることができます。</p>
+
+<pre class="brush: js notranslate">var {a = 10, b = 5} = {a: 3};
+
+console.log(a); // 3
+console.log(b); // 5</pre>
+
+<h4 id="Assigning_to_new_variables_names_and_providing_default_values" name="Assigning_to_new_variables_names_and_providing_default_values">新しい変数名の割り当てとデフォルト値の提供</h4>
+
+<p>両方ともプロパティにすることができます</p>
+
+<ul>
+ <li>オブジェクトから取り出して異なる名前の変数に代入します。</li>
+ <li>取り出した値が <code>undefined</code> である場合に備えて、デフォルト値を割り当てます。</li>
+</ul>
+
+<pre class="brush: js notranslate">const {a: aa = 10, b: bb = 5} = {a: 3};
+
+console.log(aa); // 3
+console.log(bb); // 5
+</pre>
+
+<h4 id="Unpacking_fields_from_objects_passed_as_function_parameter" name="Unpacking_fields_from_objects_passed_as_function_parameter">引数に指定されたオブジェクトの属性への参照</h4>
+
+<pre class="brush:js notranslate">const user = {
+ id: 42,
+ displayName: 'jdoe',
+ fullName: {
+ firstName: 'John',
+ lastName: 'Doe'
+ }
+};
+
+function userId({id}) {
+ return id;
+}
+
+function whois({displayName, fullName: {firstName: name}}) {
+ return `${displayName} is ${name}`;
+}
+
+console.log(userId(user)); // 42
+console.log(whois(user)); // "jdoe is John"</pre>
+
+<p>上記では <code>id</code>, <code>displayName</code>, <code>firstName</code> をオブジェクトから取得し、出力します。</p>
+
+<h4 id="Setting_a_function_parameters_default_value" name="Setting_a_function_parameters_default_value">関数の引数に対する既定値の設定</h4>
+
+<pre class="brush: js notranslate">function drawChart({size = 'big', coords = {x: 0, y: 0}, radius = 25} = {}) {
+ console.log(size, coords, radius);
+ // グラフの描画
+}
+
+drawChart({
+ coords: {x: 18, y: 30},
+ radius: 30
+});</pre>
+
+<div class="note">
+<p>上記の <strong><code>drawChart</code></strong> の関数シグネチャの中で、<code>{size = 'big', coords = {x: 0, y: 0}, radius = 25} = {}</code> として、分割代入の左辺に、右辺側で空のオブジェクトリテラルを代入しています。右辺の代入がない関数を記入することもできます。しかし、右辺の代入を取り除いた場合、関数は実行されたときに少なくともひとつの引数が提供されることを期待しますが、この形式では何も引数を指定せずに単純に <code><strong>drawChart()</strong></code> を呼び出すことができます。この設計は引数を指定せずに関数を呼び出せるようにしたい場合に役に立ちますし、もう一方の形式は、オブジェクトを確実に関数に渡したい場合に役に立ちます。</p>
+</div>
+
+<h4 id="Nested_object_and_array_destructuring" name="Nested_object_and_array_destructuring">入れ子になったオブジェクトと配列の分割代入</h4>
+
+<pre class="brush:js notranslate">const metadata = {
+ title: 'Scratchpad',
+ translations: [
+ {
+ locale: 'de',
+ localization_tags: [],
+ last_edit: '2014-04-14T08:43:37',
+ url: '/de/docs/Tools/Scratchpad',
+ title: 'JavaScript-Umgebung'
+ }
+ ],
+ url: '/en-US/docs/Tools/Scratchpad'
+};
+
+let {
+ title: englishTitle, // rename
+ translations: [
+ {
+ title: localeTitle, // rename
+ },
+ ],
+} = metadata;
+
+console.log(englishTitle); // "Scratchpad"
+console.log(localeTitle); // "JavaScript-Umgebung"</pre>
+
+<h4 id="For_of_iteration_and_destructuring" name="For_of_iteration_and_destructuring">イテレーターでの分割代入の利用</h4>
+
+<pre class="brush: js notranslate">const people = [
+ {
+ name: 'Mike Smith',
+ family: {
+ mother: 'Jane Smith',
+ father: 'Harry Smith',
+ sister: 'Samantha Smith'
+ },
+ age: 35
+ },
+ {
+ name: 'Tom Jones',
+ family: {
+ mother: 'Norah Jones',
+ father: 'Richard Jones',
+ brother: 'Howard Jones'
+ },
+ age: 25
+ }
+];
+
+for (const {name: n, family: {father: f}} of people) {
+ console.log('Name: ' + n + ', Father: ' + f);
+}
+
+// "Name: Mike Smith, Father: Harry Smith"
+// "Name: Tom Jones, Father: Richard Jones"
+</pre>
+
+<h4 id="Computed_object_property_names_and_destructuring" name="Computed_object_property_names_and_destructuring">計算されたオブジェクトのプロパティの名前と分割代入</h4>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names">オブジェクトリテラル</a>のような計算されたプロパティの名前も分割代入で使用できます。</p>
+
+<pre class="brush: js notranslate">let key = 'z';
+let {[key]: foo} = {z: 'bar'};
+
+console.log(foo); // "bar"
+</pre>
+
+<h4 id="Rest_in_Object_Destructuring" name="Rest_in_Object_Destructuring">オブジェクトの分割代入の残り</h4>
+
+<p><a class="external external-icon" href="https://github.com/tc39/proposal-object-rest-spread">Rest/Spread Properties for ECMAScript</a> 提案 (ステージ 4) は、分割代入に <a href="/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters">rest</a> 構文を追加しています。残余プロパティは、分割パターンによってすでに取り出されていない、残りの列挙可能なプロパティのキーを収集します。</p>
+
+<pre class="brush: js notranslate">let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}
+a; // 10
+b; // 20
+rest; // { c: 30, d: 40 }</pre>
+
+<h4 id="Invalid_JavaScript_identifier_as_a_property_name" name="Invalid_JavaScript_identifier_as_a_property_name">無効な JavaScript 識別子をプロパティ名として使用する</h4>
+
+<p>JavaScript で有効な代替識別子を与えることにより、JavaScript で有効ではない{{glossary("Identifier", "識別子")}}であるプロパティ名を分割代入で使用できます。</p>
+
+<pre class="brush: js notranslate">const foo = { 'fizz-buzz': true };
+const { 'fizz-buzz': fizzBuzz } = foo;
+
+console.log(fizzBuzz); // "true"
+</pre>
+
+<h4 id="Combined_Array_and_Object_Destructuring" name="Combined_Array_and_Object_Destructuring">配列とオブジェクトの分割代入の組み合わせ</h4>
+
+<p>配列とオブジェクトの分割代入は組み合わせることができます。配列 <code>props</code> の 3 番目の要素にあるオブジェクトの <code>name</code> プロパティが欲しい場合、次の操作ができます。</p>
+
+<pre class="brush: js notranslate">const props = [
+ { id: 1, name: 'Fizz'},
+ { id: 2, name: 'Buzz'},
+ { id: 3, name: 'FizzBuzz'}
+];
+
+const [,, { name }] = props;
+
+console.log(name); // "FizzBuzz"
+</pre>
+
+<h4 id="The_prototype_chain_is_looked_up_when_the_object_is_deconstructed" name="The_prototype_chain_is_looked_up_when_the_object_is_deconstructed">オブジェクトが分割されるときにはプロトタイプチェーンが参照される</h4>
+
+<p>オブジェクトが分割されるときで、自分自身のプロパティがアクセスされない場合は、プロトタイプチェーンを辿って参照が続けられます。</p>
+
+<pre class="brush: js notranslate">let obj = {self: '123'};
+obj.__proto__.prot = '456';
+const {self, prot} = obj;
+// self "123"
+// prot "456"(プロトタイプチェーンへのアクセス)</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-destructuring-assignment', 'Destructuring assignment')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.destructuring")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Assignment_Operators">代入演算子</a></li>
+ <li><a href="https://hacks.mozilla.org/2015/05/es6-in-depth-destructuring/">"ES6 in Depth: Destructuring" on hacks.mozilla.org</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/division/index.html b/files/ja/web/javascript/reference/operators/division/index.html
new file mode 100644
index 0000000000..e3fd9b96f9
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/division/index.html
@@ -0,0 +1,76 @@
+---
+title: 除算 (/)
+slug: Web/JavaScript/Reference/Operators/Division
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Division
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>除算演算子 (<code>/</code>) は、左のオペランドを被除数とし右のオペランドを除数としたオペランド同士の商を生成します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-division.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> <var>x</var> / <var>y</var>
+</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="基本の除算">基本の除算</h3>
+
+<pre class="brush: js notranslate">1 / 2 // 0.5
+
+Math.floor(3 / 2) // 1
+
+1.0 / 2.0 // 0.5
+</pre>
+
+<h3 id="ゼロ除算">ゼロ除算</h3>
+
+<pre class="brush: js notranslate">2.0 / 0 // Infinity
+
+2.0 / 0.0 // Infinity, because 0.0 === 0
+
+2.0 / -0.0 // -Infinity</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-multiplicative-operators', 'Division operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.division")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Addition">加算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Subtraction">減算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Multiplication">乗算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Remainder">剰余演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Exponentiation">べき乗演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Increment">インクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Decrement">デクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_negation">単項マイナス演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_plus">単項プラス演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/division_assignment/index.html b/files/ja/web/javascript/reference/operators/division_assignment/index.html
new file mode 100644
index 0000000000..f00c9d14c8
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/division_assignment/index.html
@@ -0,0 +1,63 @@
+---
+title: 除算代入 (/=)
+slug: Web/JavaScript/Reference/Operators/Division_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 代入演算子
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Division_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>除算代入演算子 (<code>/=</code>) は変数を右オペランドの値で除算し、結果をその変数に代入するものです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-division-assignment.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリーに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>演算子:</strong> x /= y
+<strong>意味:</strong> x = x / y</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_division_assignment" name="Using_division_assignment">除算代入の使用</h3>
+
+<pre class="brush: js notranslate">// 以下の変数があると想定する
+// bar = 5
+
+bar /= 2 // 2.5
+bar /= 'foo' // NaN
+bar /= 0 // Infinity</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.division_assignment")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment">JavaScript ガイドの代入演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Division">除算演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/equality/index.html b/files/ja/web/javascript/reference/operators/equality/index.html
new file mode 100644
index 0000000000..b1fdee1943
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/equality/index.html
@@ -0,0 +1,128 @@
+---
+title: 等価 (==)
+slug: Web/JavaScript/Reference/Operators/Equality
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Equality
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>等価演算子 (<code>==</code>) は、二つのオペランドが等しいことを検査し、論理値で結果を返します <a href="/ja/docs/Web/JavaScript/Reference/Operators/Strict_equality">厳密等価</a>演算子とは異なり、オペランドの型が異なる場合には型の変換を試みてから比較を行います。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-equality.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">x == y
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>等価演算子 (<code>==</code> および <code>!=</code>) は、<a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3">抽象等価比較アルゴリズム</a>を使用して二つのオペランドを比較します。これは、およそ次のようにまとめることができます。</p>
+
+<ul>
+ <li>両方のオペランドがオブジェクトである場合、同じオブジェクトを指している場合に限り <code>true</code> を返します。</li>
+ <li>一方のオペランドが <code>null</code> で、もう一方が <code>undefined</code> であった場合は <code>true</code> を返します。</li>
+ <li>オペランドの型が異なる場合は、比較前に同じ型に変換を試みます。
+ <ul>
+ <li>数値と文字列を比較する場合、文字列を数値に変換しようとします。</li>
+ <li>一方のオペランドが <code>Boolean</code> である場合、その Boolean のオペランドが <code>true</code> である場合は 1 に、 <code>false</code> である場合は +0 に変換します。</li>
+ <li>オペランドのうちの1つがオブジェクトで、もう一方が数値または文字列である場合は、そのオブジェクトの <code>valueOf()</code> および <code>toString()</code> メソッドを使用してプリミティブに変換しようとします。</li>
+ </ul>
+ </li>
+ <li>オペランドが同じ型である場合は、次のよう比較します。
+ <ul>
+ <li><code>String</code>: 両方のオペランドが同じ文字を同じ順序で持っている場合のみ、 <code>true</code> を返します。</li>
+ <li><code>Number</code>: 数値型は同じ値の数値である場合のみ、 <code>true</code> を返します。 <code>+0</code> と <code>-0</code> は同じ値と見なされます。一方のオペランドが <code>NaN</code> である場合は <code>false</code> を返します。</li>
+ <li><code>Boolean</code>: 両方のオペランドが共に <code>true</code> であるか、共に <code>false</code> である場合のみ <code>true</code> になります。</li>
+ </ul>
+ </li>
+</ul>
+
+<p>この演算子と<a href="/ja/docs/Web/JavaScript/Reference/Operators/Strict_equality">厳密等価</a> (<code>===</code>) 演算子の最も顕著な違いは、厳密等価演算子が型変換を試みない点です。厳密等価演算は、オペランドの型が異なる場合は常に異なるものと見なします。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Comparison_with_no_type_conversion" name="Comparison_with_no_type_conversion">型変換がない場合の比較</h3>
+
+<pre class="brush: js notranslate">1 == 1; // true
+"hello" == "hello"; // true</pre>
+
+<h3 id="Comparison_with_type_conversion" name="Comparison_with_type_conversion">型変換がある場合の比較</h3>
+
+<pre class="brush: js notranslate">"1" == 1; // true
+1 == "1"; // true
+0 == false; // true
+0 == null; // false
+0 == undefined; // false
+null == undefined; // true
+
+const number1 = new Number(3);
+const number2 = new Number(3);
+number1 == 3; // true
+number1 == number2; // false</pre>
+
+<h3 id="オブジェクトの比較">オブジェクトの比較</h3>
+
+<pre class="brush: js notranslate">const object1 = {"key": "value"}
+const object2 = {"key": "value"};
+
+object1 == object2 // false
+object2 == object2 // true</pre>
+
+<h3 id="Comparing_strings_and_String_objects" name="Comparing_strings_and_String_objects">文字列と String オブジェクトの比較</h3>
+
+<p><code>new String()</code> を使用して構築された文字列はオブジェクトであることに注意してください。文字列リテラルとの比較を行うと、 <code>String</code> オブジェクトは文字列リテラルに変換され、その中身が比較されます。ただし、両方のオペランドが <code>String</code> オブジェクトであった場合は、オブジェクトとして比較され、同じオブジェクトを参照している場合だけ比較に成功します。</p>
+
+<pre class="brush: js notranslate">const string1 = "hello";
+const string2 = String("hello");
+const string3 = new String("hello");
+const string4 = new String("hello");
+
+console.log(string1 == string2); // true
+console.log(string1 == string3); // true
+console.log(string2 == string3); // true
+console.log(string3 == string4); // false
+console.log(string4 == string4); // true</pre>
+
+<h3 id="Comparing_Dates_and_strings" name="Comparing_Dates_and_strings">Date と文字列の比較</h3>
+
+<pre class="brush: js notranslate">const d = new Date('December 17, 1995 03:24:00');
+const s = d.toString(); // for example: "Sun Dec 17 1995 03:24:00 GMT-0800 (Pacific Standard Time)"
+console.log(d == s); //true</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-equality-operators', 'Equality operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.strict_inequality")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Inequality">不等価演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Strict_equality">厳密等価演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Strict_inequality">厳密不等価演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/exponentiation/index.html b/files/ja/web/javascript/reference/operators/exponentiation/index.html
new file mode 100644
index 0000000000..8a3e13a8b1
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/exponentiation/index.html
@@ -0,0 +1,103 @@
+---
+title: べき乗 (**)
+slug: Web/JavaScript/Reference/Operators/Exponentiation
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Exponentiation
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>べき乗演算子 (<code>**</code>) は、1番目のオペランドを2番目のオペランドの累乗まで上げた結果を返します。これは <code>Math.pow</code> と同等ですが、オペランドとして <a href="/docs/Web/JavaScript/Data_structures#BigInt_%E5%9E%8B">BigInt</a> も受け入れます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-exponentiation.html")}}</div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> <var>var1</var> ** <var>var2</var>
+</pre>
+
+<h2 id="説明">説明</h2>
+
+<p>べき乗演算子は右結合的です: <code><var>a</var> ** <var>b</var> ** <var>c</var></code> は <code><var>a</var> ** (<var>b</var> ** <var>c</var>)</code> と等しくなります。</p>
+
+<p>PHP や Python など、べき乗演算子 (<code>**</code>) を持つほとんどの言語では、べき乗演算子は単項演算子 (単項演算子 <code>+</code> や単項演算子 <code>-</code> など) よりも優先順位が高いと定義されていますが、いくつかの例外があります。例えば、Bash では <code>**</code> 演算子は単項演算子よりも優先順位が低いと定義されています。</p>
+
+<p>JavaScriptでは、あいまいなべき乗式を記述することはできません。 つまり、基数の直前に単項演算子 (<code>+/-/~/!/delete/void/typeof</code>) を置くことはできません。 これを行うと、SyntaxError が発生します。</p>
+
+<pre class="brush: js notranslate">-2 ** 2;
+// Bashでは 4 他の言語では -4
+// JavaScriptでは意図があいまいなため無効
+
+
+-(2 ** 2);
+// JavaScriptでは意図が明白なため -4
+</pre>
+
+<p>注意: 一部のプログラミング言語ではべき乗計算にキャレット記号 <kbd>^</kbd> を使用していますが、JavaScript では<a href="/docs/Web/JavaScript/Reference/Operators/Bitwise_XOR">ビット排他的論理和</a>にこの記号を使用しています。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="基本的なべき乗">基本的なべき乗</h3>
+
+<pre class="brush: js notranslate">2 ** 3 // 8
+3 ** 2 // 9
+3 ** 2.5 // 15.588457268119896
+10 ** -1 // 0.1
+NaN ** 2 // NaN
+</pre>
+
+<h3 id="結合">結合</h3>
+
+<pre class="brush: js notranslate">2 ** 3 ** 2 // 512
+2 ** (3 ** 2) // 512
+(2 ** 3) ** 2 // 64</pre>
+
+<h3 id="単項演算子との使用">単項演算子との使用</h3>
+
+<p>べき乗式の結果の符号を反転させる</p>
+
+<pre class="brush: js notranslate">-(2 ** 2) // -4
+</pre>
+
+<p>べき乗式の基底を強制的に負の数にする</p>
+
+<pre class="brush: js notranslate">(-2) ** 2 // 4
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-exp-operator', 'Exponentiation operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザの互換性">ブラウザの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.exponentiation")}}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Addition">加算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Subtraction">減算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Multiplication">乗算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Division">除算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Remainder">剰余演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Increment">インクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Decrement">デクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_negation">単項マイナス演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_plus">単項プラス演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/exponentiation_assignment/index.html b/files/ja/web/javascript/reference/operators/exponentiation_assignment/index.html
new file mode 100644
index 0000000000..fa942f4779
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/exponentiation_assignment/index.html
@@ -0,0 +1,61 @@
+---
+title: べき乗代入 (**=)
+slug: Web/JavaScript/Reference/Operators/Exponentiation_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Exponentiation_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>べき乗代入演算子 (<code>**=</code>) は、変数の値を右辺のオペランドでべき乗します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-exponentiation-assignment.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> x **= y
+<strong>Meaning:</strong> x = x ** y</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="べき乗代入の仕様">べき乗代入の仕様</h3>
+
+<pre class="brush: js notranslate">// 次の変数を想定
+// bar = 5
+
+bar **= 2 // 25
+bar **= 'foo' // NaN</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.exponentiation_assignment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment">Assignment operators in the JS guide</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Exponentiation">Exponentiation operator</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/expression_closures/index.html b/files/ja/web/javascript/reference/operators/expression_closures/index.html
new file mode 100644
index 0000000000..6b0df0f858
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/expression_closures/index.html
@@ -0,0 +1,76 @@
+---
+title: 式クロージャ
+slug: Web/JavaScript/Reference/Operators/Expression_closures
+tags:
+ - Functions
+ - JavaScript
+ - Reference
+translation_of: Archive/Web/JavaScript/Expression_closures
+---
+<div class="warning"><strong>非標準。使用しないでください!</strong><br>
+式クロージャの構文は、非推奨とされた Firefox 固有の機能であり、Firefox Firefox 60 で削除されました。将来向きの用途には、<a href="/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a> の使用を検討してください。</div>
+
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>式クロージャは、単純な関数を書くための短縮された関数構文です。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">function [<em>name</em>]([<em>param1</em>[, <em>param2[</em>, ..., <em>paramN</em>]]])
+ <em>expression</em>
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>name</code></dt>
+ <dd>関数名。関数が <em>匿名</em> の場合、省略できます。名前は関数本体だけのローカルです。</dd>
+ <dt><code>paramN</code></dt>
+ <dd>関数に渡される引数の名前。関数は、最大 255 個の引数を持つことができます。</dd>
+ <dt><code>expression</code></dt>
+ <dd>関数本体を構成する式。</dd>
+</dl>
+
+<h2 id="説明">説明</h2>
+
+<p>これは、単純な関数を書くための短縮された関数構文にすぎません。典型的な <a class="external" href="http://en.wikipedia.org/wiki/Lambda_calculus#Lambda_calculus_and_programming_languages">Lambda 表記</a> に似た言語で書くためのものです。</p>
+
+<p>JavaScript 1.7 およびそれ以前:</p>
+
+<pre class="brush: js">function(x) { return x * x; }</pre>
+
+<p>JavaScript 1.8:</p>
+
+<pre class="brush: js">function(x) x * x</pre>
+
+<p>この構文により、中括弧と 'return' 文をなくします (それらは暗黙的に宣言されています)。構文が短くなること以外に、このようにコードを書くことへの付加的な利点はありません。</p>
+
+<h2 id="例">例</h2>
+
+<p>イベントリスナをバインドする短縮表現:</p>
+
+<pre class="brush: js">document.addEventListener("click", function() false, true);
+</pre>
+
+<p>JavaScript 1.6 から、配列関数の一部でこの表記法を用います:</p>
+
+<pre class="brush: js">elems.some(function(elem) elem.type == "text");
+</pre>
+
+<h2 id="ブラウザの実装状況">ブラウザの実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.expression_closures")}}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Functions_and_function_scope", "関数と関数のスコープ")}}</li>
+ <li>{{jsxref("Function")}}</li>
+ <li>{{jsxref("Statements/function", "function statement")}}</li>
+ <li>{{jsxref("Operators/function", "function expression")}}</li>
+ <li>{{jsxref("Statements/function*", "function* statement")}}</li>
+ <li>{{jsxref("Operators/function*", "function* expression")}}</li>
+ <li>{{jsxref("GeneratorFunction")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/function/index.html b/files/ja/web/javascript/reference/operators/function/index.html
new file mode 100644
index 0000000000..5ea0b7ffbc
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/function/index.html
@@ -0,0 +1,145 @@
+---
+title: 関数式
+slug: Web/JavaScript/Reference/Operators/function
+tags:
+ - Function
+ - JavaScript
+ - Language feature
+ - Operator
+ - Primary Expressions
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/function
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong><code>function</code></strong> キーワードは、式の中で関数を定義するために使用されます。</p>
+
+<p>{{jsxref("Function/Function", "Function")}} コンストラクターや{{jsxref("Statements/function", "関数宣言", "", 1)}}を用いて関数を定義することもできます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-functionexpression.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">let <var>myFunction</var> = function [<var>name</var>]([<var>param1</var>[, <var>param2[</var>, ..., <var>paramN</var>]]]) {
+ <var>statements</var>
+};</pre>
+
+<p>ES2015 からは{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}も使えます。</p>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>name</var></code> {{optional_inline}}</dt>
+ <dd>関数名。省略可能で、その場合は関数は<em>無名</em>になります。 name は関数本体のみのローカルです。</dd>
+ <dt><code><var>paramN</var></code> {{optional_inline}}</dt>
+ <dd>関数に渡される引数の名前です。</dd>
+ <dt><code><var>statements</var></code> {{optional_inline}}</dt>
+ <dd>関数の本体を構成する文です。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>関数式は関数宣言とよく似ており、ほとんど同じ書式でもあります (詳しくは {{jsxref("Statements/function", "function")}} 文を参照してください)。関数式と関数宣言の主な相違点は、<em>関数名</em>です。関数式では、<em>無名</em>関数を生成するために、関数名を省略できます。関数式は、定義するとすぐに実行する <strong>IIFE</strong> (即時実行関数)として使用できます。詳細については、{{jsxref("Functions", "関数", "", 1)}}の章を参照してください。</p>
+
+<h3 id="Function_expression_hoisting" name="Function_expression_hoisting">関数式の巻き上げ</h3>
+
+<p>JavaScript の関数式は、{{jsxref("Statements/function", "関数宣言", "#Function_declaration_hoisting", 1)}}と違って巻き上げられません。定義前に関数式を使用することはできません。</p>
+
+<pre class="brush: js">console.log(notHoisted) // undefined
+// 変数名は巻き上げが行われますが、定義は行われません。そのため undefined になります。
+notHoisted(); // TypeError: notHoisted is not a function
+
+var notHoisted = function() {
+ console.log('bar');
+};
+</pre>
+
+<h3 id="Named_function_expression" name="Named_function_expression">名前付き関数式</h3>
+
+<p>関数内でその関数自身を参照する必要がある場合は、名前付き関数式を作成する必要があります。<u><strong>この名前は関数本体 (スコープ) に対してのみローカルです</strong></u>。これにより非標準の {{jsxref("Functions/arguments/callee", "arguments.callee")}} プロパティの使用も避けられます。</p>
+
+<pre class="brush: js">let math = {
+ 'factit': function factorial(n) {
+ console.log(n)
+ if (n &lt;= 1) {
+ return 1;
+ }
+ return n * factorial(n - 1);
+ }
+};
+
+math.factit(3) //3;2;1;
+</pre>
+
+<p>関数式が代入された変数は <code>name</code> プロパティを持ちます。別の変数に代入しても name は変わりません。関数名が省略された場合、変数名になります (暗黙的gな名前)。関数名が存在したら、それが関数名になります (明示的な名前)。これは{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}にもあてはまります (アローは名前がないので変数名を暗黙的な名前として与える)。</p>
+
+<pre class="brush: js">var foo = function() {}
+foo.name // "foo"
+
+var foo2 = foo
+foo2.name // "foo"
+
+var bar = function baz() {}
+bar.name // "baz"
+
+console.log(foo === foo2); // true
+console.log(typeof baz); // undefined
+console.log(bar === baz); // false (errors because baz == undefined)
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Creating_an_unnamed_function" name="Creating_an_unnamed_function">無名関数の作成</h3>
+
+<p>次の例では、無名関数を定義してそれを <code>x</code> に割り当てます。 関数は引数の 2 乗を返します。</p>
+
+<pre class="brush: js">var x = function(y) {
+ return y * y;
+};
+</pre>
+
+<h3 id="Using_a_function_as_a_callback" name="Using_a_function_as_a_callback">関数をコールバックとして使用</h3>
+
+<p>より一般的には{{Glossary("Callback_function", "コールバック")}}として使われます。</p>
+
+<pre class="brush: js">button.addEventListener('click', function(event) {
+ console.log('button is clicked!')
+})</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function-definitions', 'Function definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.function")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Arrow_functions", "アロー関数", "", 1)}}</li>
+ <li>{{jsxref("Functions_and_function_scope", "関数と関数スコープ", "", 1)}}</li>
+ <li>{{jsxref("Function")}}</li>
+ <li>{{jsxref("Statements/function", "function")}} 文</li>
+ <li>{{jsxref("Statements/function*", "function*")}} 文</li>
+ <li>{{jsxref("Operators/function*", "function*")}} 式</li>
+ <li>{{jsxref("GeneratorFunction")}}</li>
+ <li>{{jsxref("Statements/async_function", "非同期関数", "", 1)}}</li>
+ <li>{{jsxref("Operators/async_function", "非同期関数式", "", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/function_star_/index.html b/files/ja/web/javascript/reference/operators/function_star_/index.html
new file mode 100644
index 0000000000..669955b169
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/function_star_/index.html
@@ -0,0 +1,88 @@
+---
+title: function* 式
+slug: Web/JavaScript/Reference/Operators/function*
+tags:
+ - ECMAScript6
+ - Function
+ - Iterator
+ - JavaScript
+ - Operator
+ - Primary Expression
+ - 演算子
+ - 関数
+translation_of: Web/JavaScript/Reference/Operators/function*
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong><code>function*</code></strong> キーワードは、式の中でジェネレーター関数を定義するために使用することができます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-functionasteriskexpression.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">function* [<var>name</var>]([<var>param1</var>[, <var>param2[</var>, ..., <var>paramN</var>]]]) {
+ <var>statements</var>
+}</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>name</var></code> {{optional_inline}}</dt>
+ <dd>関数名。省略可。省略した場合、関数は<em>無名関数</em>として認識されます。名前は関数本体のみにローカルです。</dd>
+ <dt><code><var>paramN</var></code><var> </var> {{optional_inline}}</dt>
+ <dd>関数に渡される引数の名前。関数は最大 255 の引数を持ち得ます。</dd>
+ <dt><code><var>statements</var></code></dt>
+ <dd>関数の本体を構成するステートメント。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>function*</code> 式は {{jsxref('Statements/function*', 'function* 文', "", 1)}}ととてもよく似ており、構文もほとんど同じです。<code>function*</code> 式と <code>function*</code> 文の主な違いは、<code>function*</code> 式で<em>無名</em>ジェネレーター関数を生成するには<em>関数名</em>が省略できる点です。詳細は {{jsxref("Functions", "functions")}} をご覧ください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_function*" name="Using_function*">function* を使用する</h3>
+
+<p>次の例では、無名ジェネレーター関数を定義し、<code>x</code> に割り当てます。関数は引数の二乗をもたらします:</p>
+
+<pre class="brush: js notranslate">let x = function*(y) {
+ yield y * y;
+};
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-generator-function-definitions', 'function*')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.function_star")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/function*", "function*")}} 文</li>
+ <li>{{jsxref("GeneratorFunction")}} オブジェクト</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">Iterator プロトコル</a></li>
+ <li>{{jsxref("Operators/yield", "yield")}}</li>
+ <li>{{jsxref("Operators/yield*", "yield*")}}</li>
+ <li>{{jsxref("Function")}} オブジェクト</li>
+ <li>{{jsxref("Statements/function", "function")}} 文</li>
+ <li>{{jsxref("Operators/function", "function")}} 式</li>
+ <li>{{jsxref("Functions_and_function_scope", "関数と関数スコープ", "", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/generator_comprehensions/index.html b/files/ja/web/javascript/reference/operators/generator_comprehensions/index.html
new file mode 100644
index 0000000000..250b8fad05
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/generator_comprehensions/index.html
@@ -0,0 +1,172 @@
+---
+title: ジェネレータ内包表記
+slug: Web/JavaScript/Reference/Operators/Generator_comprehensions
+tags:
+ - Iterator
+ - JavaScript
+ - Non-standard
+ - Reference
+translation_of: Archive/Web/JavaScript/Generator_comprehensions
+---
+<div class="warning"><strong>非標準。使用しないでください!</strong><br>
+ジェネレーター内包は非標準であり、Firefox 58 から削除されています。将来向きの用途には {{jsxref("Statements/function*", "ジェネレーター", "", 1)}} の使用を検討してください。</div>
+
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>generator comprehension</strong> 構文はすぐに既存の反復可能なオブジェクトに基づいて新たなジェネレーター関数を組み立てることができる JavaScript の式でした。しかし、これは標準仕様や Firefox の実装から削除されました。使用しないでください!</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">(for (x of iterable) x)
+(for (x of iterable) if (condition) x)
+(for (x of iterable) for (y of iterable) x + y)
+</pre>
+
+<h2 id="説明">説明</h2>
+
+<p>ジェネレータ内包表記の中では、この2種類のコンポーネントが許可されています。:</p>
+
+<ul>
+ <li>{{jsxref("Statements/for...of", "for...of")}}</li>
+ <li>{{jsxref("Statements/if...else", "if")}}</li>
+</ul>
+
+<p><code>for-of</code>イテレーションは常に最初のコンポーネントです。複数の<code>for-of</code> イテレーションまたはif文が許可されています。</p>
+
+<p>{{jsxref("Operators/Array_comprehensions","配列内包","","true")}} の重大な欠点は、メモリー内に新しい配列全体を構築してしまうことです。配列内包への入力自体が小さい配列であるときのオーバーヘッドは小さいのですが、入力が大きな配列や処理の多い (あるいは本当に無限の) ジェネレーターであるときの配列の新規作成は問題になる場合があります。</p>
+
+<p>ジェネレーターはアイテムを必要なときに要求に応じて算出するため、一連のデータの計算処理を軽減します。ジェネレーター内包は構文的に、配列内包とほとんど同じです。こちらは中括弧の代わりに丸括弧を使用して、配列を構築する代わりに、すぐには実行されないジェネレーターを作成します。これらは、ジェネレーター作成を簡略化した構文と考えることができます。</p>
+
+<p>整数の大規模な数列に対して反復処理を行うイテレーター <code>it</code> を想定します。数列の値を 2 倍にする反復処理を行う、新たなイテレーターを作成したいとします。配列内包では、2 倍の値を含むのに十分な配列をメモリー内に作成します:</p>
+
+<pre class="brush: js">var doubles = [for (i in it) i * 2];
+</pre>
+
+<p>一方ジェネレーター内包は、必要なときに要求に応じて 2 倍の値を生成するイテレーターを作成します:</p>
+
+<pre class="brush: js">var it2 = (for (i in it) i * 2);
+console.log(it2.next()); // The first value from it, doubled
+console.log(it2.next()); // The second value from it, doubled
+</pre>
+
+<p>ジェネレーター内包が関数の引数として使用されるときは、関数の呼び出しで使用される丸括弧によりジェネレーター内包の外側の丸括弧を省略できます:</p>
+
+<pre class="brush: js">var result = doSomething(for (i in it) i * 2);
+</pre>
+
+<p>2 つの例の大きな違いは、ジェネレーター内包を使用すると 'obj' 構造を合計 1 回しかループする必要がないのと対照的に、配列内包ではイテレートの際に再びループすることです。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="簡単なジェネレータ内包表記">簡単なジェネレータ内包表記</h3>
+
+<pre class="brush:js">(for (i of [ 1, 2, 3 ]) i*i );
+// generator function which yields 1, 4, and 9
+
+[...(for (i of [ 1, 2, 3 ]) i*i )];
+// [1, 4, 9]
+
+var abc = [ "A", "B", "C" ];
+(for (letters of abc) letters.toLowerCase());
+// generator function which yields "a", "b", and "c"
+</pre>
+
+<h3 id="if文と用いたジェネレータ内包表記">if文と用いたジェネレータ内包表記</h3>
+
+<pre class="brush: js">var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ];
+
+(for (year of years) if (year &gt; 2000) year);
+// generator function which yields 2006, 2010, and 2014
+
+(for (year of years) if (year &gt; 2000) if(year &lt; 2010) year);
+// generator function which yields 2006, the same as below:
+
+(for (year of years) if (year &gt; 2000 &amp;&amp; year &lt; 2010) year);
+// generator function which yields 2006
+</pre>
+
+<h3 id="ジェネレータ関数と比較したジェネレータ内包表記">ジェネレータ関数と比較したジェネレータ内包表記</h3>
+
+<p>ジェネレータ内包表記構文を理解する簡単な方法はジェネレータ関数と比較することです。</p>
+
+<p>例 1: 簡単なジェネレータ</p>
+
+<pre class="brush: js">var numbers = [ 1, 2, 3 ];
+
+// Generator function
+(function*() {
+ for (let i of numbers) {
+ yield i * i;
+ }
+})()
+
+// Generator comprehension
+(for (i of numbers) i*i );
+
+// Result: both return a generator which yields [ 1, 4, 9 ]
+</pre>
+
+<p>例 2: ジェネレータ内で<code>if</code>を使用する</p>
+
+<pre class="brush: js">var numbers = [ 1, 2, 3 ];
+
+// Generator function
+(function*() {
+ for (let i of numbers) {
+ if (i &lt; 3) {
+ yield i * 1;
+ }
+ }
+})()
+
+// Generator comprehension
+(for (i of numbers) if (i &lt; 3) i);
+
+// Result: both return a generator which yields [ 1, 2 ]</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<p>ジェネレーター内包は、ECMAScript 2015 で初期化されましたが、リビジョン 27 (2014 年 8 月) で取り除かれました。仕様セマンティクスについて、ES2015 の古いリビジョンをご覧ください。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.generator_comprehensions")}}</p>
+
+<h2 id="Differences_to_the_older_JS1.7JS1.8_comprehensions" name="Differences_to_the_older_JS1.7JS1.8_comprehensions">古い JS1.7/JS1.8 の内包表記との違い</h2>
+
+<div class="warning">JS1.7/JS1.8 の内包表記は、バージョン 46 で削除しました ({{bug(1220564)}})。</div>
+
+<p><strong>古い内包表記の構文 (使用しないでください!):</strong></p>
+
+<pre class="brush: js example-bad">(X for (Y in Z))
+(X for each (Y in Z))
+(X for (Y of Z))
+</pre>
+
+<p>違い:</p>
+
+<ul>
+ <li>ESNext の内包表記は全体のかわりに"for"ノードごとに1スコープを生成します。
+ <ul>
+ <li>旧: <code>[...(()=&gt;x for (x of [0, 1, 2]))][1]() // 2</code></li>
+ <li>新: <code>[...(for (x of [0, 1, 2]) ()=&gt;x)][1]() // 1, each iteration creates a fresh binding for x. </code></li>
+ </ul>
+ </li>
+ <li>ESNext の内包表記は代入式のかわりに"for"で始まります。
+ <ul>
+ <li>旧: <code>(i * 2 for (i of numbers))</code></li>
+ <li>新: <code>(for (i of numbers) <code>i * 2</code>)</code></li>
+ </ul>
+ </li>
+ <li>ESNext の内包表記は複数の<code>if</code>と<code>for</code>コンポーネントを持ちます。</li>
+ <li>ESNext の内包表記は<code>{{jsxref("Statements/for...of", "for...of")}}</code>でのみ動作し、<code>{{jsxref("Statements/for...in", "for...in")}}</code>イテレーションでは動作しません。</li>
+</ul>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/for...of", "for...of")}}</li>
+ <li>{{jsxref("Operators/Array_comprehensions", "Array comprehensions")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/greater_than/index.html b/files/ja/web/javascript/reference/operators/greater_than/index.html
new file mode 100644
index 0000000000..247f76e0cb
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/greater_than/index.html
@@ -0,0 +1,100 @@
+---
+title: 大なり (>)
+slug: Web/JavaScript/Reference/Operators/Greater_than
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Greater_than
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>大なり演算子 (<code>&gt;</code>) は、左辺のオペランドが右辺のオペランドより大きい場合は <code>true</code> を返し、それ以外の場合は <code>false</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-greater-than.html")}}</div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate">x &gt; y</pre>
+
+<h2 id="解説">解説</h2>
+
+<p>オペランドは、 <a class="external external-icon" href="https://tc39.es/ecma262/#sec-abstract-relational-comparison" rel="noopener">抽象関係比較</a> アルゴリズムを使用して比較されます。このアルゴリズムの概要については、 <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Less_than">小なり</a> 演算子のドキュメントを参照して下さい。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="文字列と文字列の比較">文字列と文字列の比較</h3>
+
+<pre class="brush: js notranslate">console.log("a" &gt; "b"); // false
+console.log("a" &gt; "a"); // false
+console.log("a" &gt; "3"); // true</pre>
+
+<h3 id="文字列と数値の比較">文字列と数値の比較</h3>
+
+<pre class="brush: js notranslate">console.log("5" &gt; 3); // true
+console.log("3" &gt; 3); // false
+console.log("3" &gt; 5); // false
+
+console.log("hello" &gt; 5); // false
+console.log(5 &gt; "hello"); // false
+
+console.log("5" &gt; 3n); // true
+console.log("3" &gt; 5n); // false</pre>
+
+<h3 id="数値と数値の比較">数値と数値の比較</h3>
+
+<pre class="brush: js notranslate">console.log(5 &gt; 3); // true
+console.log(3 &gt; 3); // false
+console.log(3 &gt; 5); // false</pre>
+
+<h3 id="数値と_BigInt_の比較">数値と BigInt の比較</h3>
+
+<pre class="brush: js notranslate">console.log(5n &gt; 3); // true
+console.log(3 &gt; 5n); // false</pre>
+
+<h3 id="ブール値、_null_、_undefined_、_NaN_の比較">ブール値、 null 、 undefined 、 NaN の比較</h3>
+
+<pre class="brush: js notranslate">console.log(true &gt; false); // true
+console.log(false &gt; true); // false
+
+console.log(true &gt; 0); // true
+console.log(true &gt; 1); // false
+
+console.log(null &gt; 0); // false
+console.log(1 &gt; null); // true
+
+console.log(undefined &gt; 3); // false
+console.log(3 &gt; undefined); // false
+
+console.log(3 &gt; NaN); // false
+console.log(NaN &gt; 3); // false</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-relational-operators', 'Relational operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.greater_than")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Greater_than_or_equal">Greater than or equal operator</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Less_than">Less than operator</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Less_than_or_equal">Less than or equal operator</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/greater_than_or_equal/index.html b/files/ja/web/javascript/reference/operators/greater_than_or_equal/index.html
new file mode 100644
index 0000000000..b72d8cf06c
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/greater_than_or_equal/index.html
@@ -0,0 +1,100 @@
+---
+title: 大なりイコール (>=)
+slug: Web/JavaScript/Reference/Operators/Greater_than_or_equal
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Greater_than_or_equal
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>大なりイコール演算子 (<code>&gt;=</code>) は、左辺のオペランドが右辺のオペランド以上の場合は <code>true</code> を返し、それ以外の場合は <code>false</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-greater-than-or-equal.html")}}</div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"> x &gt;= y</pre>
+
+<h2 id="解説">解説</h2>
+
+<p>オペランドは、<a class="external external-icon" href="https://tc39.es/ecma262/#sec-abstract-relational-comparison" rel="noopener">抽象関係比較</a>アルゴリズムを使用して比較されます。 このアルゴリズムの概要は<a href="/en-US/docs/Web/JavaScript/Reference/Operators/Less_than">小なり</a>演算子のドキュメントを参照して下さい。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="文字列と文字列の比較">文字列と文字列の比較</h3>
+
+<pre class="brush: js notranslate">console.log("a" &gt;= "b"); // false
+console.log("a" &gt;= "a"); // true
+console.log("a" &gt;= "3"); // true
+</pre>
+
+<h3 id="文字列と数値の比較">文字列と数値の比較</h3>
+
+<pre class="brush: js notranslate">console.log("5" &gt;= 3); // true
+console.log("3" &gt;= 3); // true
+console.log("3" &gt;= 5); // false
+
+console.log("hello" &gt;= 5); // false
+console.log(5 &gt;= "hello"); // false</pre>
+
+<h3 id="数値と数値の比較">数値と数値の比較</h3>
+
+<pre class="brush: js notranslate">console.log(5 &gt;= 3); // true
+console.log(3 &gt;= 3); // true
+console.log(3 &gt;= 5); // false</pre>
+
+<h3 id="数値と_BigInt_の比較">数値と BigInt の比較</h3>
+
+<pre class="brush: js notranslate">console.log(5n &gt;= 3); // true
+console.log(3 &gt;= 3n); // true
+console.log(3 &gt;= 5n); // false</pre>
+
+<h3 id="ブール値、_null_、_undefined_、_NaN_の比較">ブール値、 null 、 undefined 、 NaN の比較</h3>
+
+<pre class="brush: js notranslate">console.log(true &gt;= false); // true
+console.log(true &gt;= true); // true
+console.log(false &gt;= true); // false
+
+console.log(true &gt;= 0); // true
+console.log(true &gt;= 1); // true
+
+console.log(null &gt;= 0); // true
+console.log(1 &gt;= null); // true
+
+console.log(undefined &gt;= 3); // false
+console.log(3 &gt;= undefined); // false
+
+console.log(3 &gt;= NaN); // false
+console.log(NaN &gt;= 3); // false</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-relational-operators', 'Relational operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.greater_than_or_equal")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Greater_than">Greater than operator</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Less_than">Less than operator</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Less_than_or_equal">Less than or equal operator</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/grouping/index.html b/files/ja/web/javascript/reference/operators/grouping/index.html
new file mode 100644
index 0000000000..6b2966037b
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/grouping/index.html
@@ -0,0 +1,78 @@
+---
+title: グループ化演算子
+slug: Web/JavaScript/Reference/Operators/Grouping
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Primary Expressions
+ - 一次式
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Grouping
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>グループ化演算子 <code>( )</code> は、式での評価の優先順位を制御します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-groupingoperator.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"> ( )</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>グループ化演算子は、式または部分式の周りに括弧のペアで構成され、通常の<a href="/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence">演算子の優先順位</a>を上書きし、より低い優先順位の式をより高い優先順位の式の前に評価できるようにします。その名の通り、括弧の中にあるものをグループ化します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_grouping_operator" name="Using_the_grouping_operator">グループ化演算子の使用</h3>
+
+<p>最初に乗算と除算をし、次に加算と引き算をする優先順位を、最初に加算を評価するように上書きします。</p>
+
+<pre class="brush:js">var a = 1;
+var b = 2;
+var c = 3;
+
+// default precedence
+a + b * c // 7
+// evaluated by default like this
+a + (b * c) // 7
+
+// now overriding precedence
+// addition before multiplication
+(a + b) * c // 9
+
+// which is equivalent to
+a * c + b * c // 9
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-grouping-operator', 'The Grouping Operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.grouping")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence">演算子の優先順位</a></li>
+ <li>{{jsxref("Operators/delete", "delete")}}</li>
+ <li>{{jsxref("Operators/typeof", "typeof")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/in/index.html b/files/ja/web/javascript/reference/operators/in/index.html
new file mode 100644
index 0000000000..ac6c61dc62
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/in/index.html
@@ -0,0 +1,141 @@
+---
+title: in
+slug: Web/JavaScript/Reference/Operators/in
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Relational Operators
+translation_of: Web/JavaScript/Reference/Operators/in
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong><code>in</code> 演算子</strong>は、指定されたプロパティが指定されたオブジェクトにある場合に <code>true</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-inoperator.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>prop</var> in <var>object</var></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>prop</var></code></dt>
+ <dd>プロパティ名または配列のインデックスを表す文字列式またはシンボルです(シンボルではない場合は、文字列に強制変換されます)。</dd>
+</dl>
+
+<dl>
+ <dt><code><var>object</var></code></dt>
+ <dd>オブジェクト(またはそのプロトタイプチェーン)に、指定された名前(<code><var>prop</var></code>)のプロパティが含まれているかどうかを確認するオブジェクト。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_usage" name="Basic_usage">基本的な使い方</h3>
+
+<p>次の例で <code>in</code> 演算子の使用法を示します。</p>
+
+<pre class="brush:js notranslate">// Arrays
+let trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
+0 in trees // true を返す
+3 in trees // true を返す
+6 in trees // false を返す
+'bay' in trees // false を返す (インデックスの指す値ではなく、インデックスの数字を指定しなければならない)
+'length' in trees // true を返す (length は Array のプロパティ)
+Symbol.iterator in trees // true を返す (配列は反復可能。ES2015 以上で動作する)
+
+// 定義済みオブジェクト
+'PI' in Math // true を返す
+
+// ユーザー定義オブジェクト
+let mycar = {make: 'Honda', model: 'Accord', year: 1998};
+'make' in mycar // true を返す
+'model' in mycar // true を返す
+</pre>
+
+<p><code>in</code> 演算子の右側には、オブジェクトを指定しなければなりません。例えば、<code>String</code> コンストラクタで作成した文字列は指定できますが、文字列リテラルは指定できません。</p>
+
+<pre class="brush:js notranslate">let color1 = new String('green');
+'length' in color1 // true を返す
+
+let color2 = 'coral';
+// エラーが発生 (color2 は String オブジェクトではありません)
+'length' in color2
+</pre>
+
+<h3 id="Using_in_with_deleted_or_undefined_properties" name="Using_in_with_deleted_or_undefined_properties">削除済みあるいは未定義状態のプロパティへの <code>in</code> の使用</h3>
+
+<p><code><a href="/ja/docs/JavaScript/Reference/Operators/delete" title="JavaScript/Reference/Operators/Special/delete">delete</a></code> 演算子で削除されたプロパティについて、<code>in</code> 演算子は <code>false</code> を返します。</p>
+
+<pre class="brush:js notranslate">let mycar = {make: 'Honda', model: 'Accord', year: 1998};
+delete mycar.make;
+'make' in mycar; // false を返す
+
+let trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple');
+delete trees[3];
+3 in trees; // false を返す
+</pre>
+
+<p>{{jsxref("Global_Objects/undefined", "undefined")}} を設定しているが削除されていないプロパティについて、<code>in</code> 演算子は true を返します。</p>
+
+<pre class="brush:js notranslate">let mycar = {make: 'Honda', model: 'Accord', year: 1998};
+mycar.make = undefined;
+'make' in mycar; // true を返す
+</pre>
+
+<pre class="brush:js notranslate">let trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple');
+trees[3] = undefined;
+3 in trees; // true を返す
+</pre>
+
+<p><code>in</code> 演算子は、空の配列スロットに対して <code>false</code> を返します。直接アクセスしても <code>undefined</code> が返されます。</p>
+
+<pre class="brush:js notranslate">let empties = new Array(3)
+empties[2] // undefined を返す
+2 in empties // false を返す
+</pre>
+
+<p>これを避けるためには、新しい配列が常に空でない値で埋められるようにするか、配列の終わりを超えてインデックスに書き込まないようにします。</p>
+
+<pre class="brush:js notranslate">let empties = new Array(3).fill(undefined)
+2 in empties // true を返す
+</pre>
+
+<h3 id="Inherited_properties" name="Inherited_properties">継承されたプロパティ</h3>
+
+<p><code>in</code> 演算子は、プロトタイプチェーンのプロパティに対して <code>true</code> を返します。(<em>継承されていない</em>プロパティのみをチェックする場合は、代わりに {{jsxref("Object.prototype.hasOwnProperty()")}} を使用してください)。</p>
+
+<pre class="brush:js notranslate">'toString' in {} // returns true
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-relational-operators', 'Relational Operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.in")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a></code></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Operators/delete">delete</a></code></li>
+ <li>{{jsxref("Object.prototype.hasOwnProperty()")}}</li>
+ <li>{{jsxref("Reflect.has()")}}</li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">プロパティの列挙可能性と所有権</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/increment/index.html b/files/ja/web/javascript/reference/operators/increment/index.html
new file mode 100644
index 0000000000..9b575490f5
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/increment/index.html
@@ -0,0 +1,81 @@
+---
+title: インクリメント (++)
+slug: Web/JavaScript/Reference/Operators/Increment
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Increment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>インクリメント演算子 (<code>++</code>) は、オペランドをインクリメント (1を加算) して値を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-increment.html")}}</div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> <var>x</var>++ or ++<var>x</var>
+</pre>
+
+<h2 id="解説">解説</h2>
+
+<p>オペランドに後置で演算子を付けると (例えば、 <code><var>x</var>++</code>) 、インクリメント演算子はインクリメントしますが、インクリメント前の値を返します。</p>
+
+<p>オペランドに前置で演算子を付けると (例えば、 <code>++<var>x</var></code>) 、インクリメント演算子はインクリメントし、インクリメント後の値を返します。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="後置インクリメント">後置インクリメント</h3>
+
+<pre class="brush: js notranslate">let x = 3;
+y = x++;
+
+// y = 3
+// x = 4
+</pre>
+
+<h3 id="前置インクリメント">前置インクリメント</h3>
+
+<pre class="brush: js notranslate">let a = 2;
+b = ++a;
+
+// a = 3
+// b = 3
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-postfix-increment-operator', 'Increment operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.increment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Addition">加算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Subtraction">減算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Multiplication">乗算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Division">除算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Remainder">剰余演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Exponentiation">べき乗演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Decrement">デクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_negation">単項マイナス演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_plus">単項プラス演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/index.html b/files/ja/web/javascript/reference/operators/index.html
new file mode 100644
index 0000000000..71489adc52
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/index.html
@@ -0,0 +1,299 @@
+---
+title: 式と演算子
+slug: Web/JavaScript/Reference/Operators
+tags:
+ - JavaScript
+ - Landing page
+ - Operators
+ - Overview
+ - Reference
+ - 概要
+ - 演算子
+translation_of: Web/JavaScript/Reference/Operators
+---
+<div>{{JSSidebar("Operators")}}</div>
+
+<p class="summary">この節では、JavaScript 言語のすべての演算子、式、キーワードについて記述しています。</p>
+
+<h2 id="Expressions_and_operators_by_category" name="Expressions_and_operators_by_category">式と演算子 (カテゴリ別)</h2>
+
+<p>アルファベット順リストは左側のサイドバーをご覧ください。</p>
+
+<h3 id="Primary_expressions" name="Primary_expressions">基本式</h3>
+
+<p>JavaScript の基本的なキーワードと一般的な式です。</p>
+
+<dl>
+ <dt>{{JSxRef("Operators/this", "this")}}</dt>
+ <dd><code>this</code> キーワードは関数の実行コンテキストを参照します。</dd>
+ <dt>{{JSxRef("Operators/function", "function")}}</dt>
+ <dd><code>function</code> キーワードは関数式を定義します。</dd>
+ <dt>{{JSxRef("Operators/class", "class")}}</dt>
+ <dd><code>class</code> キーワードはクラス式を定義します。</dd>
+ <dt>{{JSxRef("Operators/function*", "function*")}}</dt>
+ <dd><code>function*</code> キーワードはジェネレーター関数式を定義します。</dd>
+ <dt>{{JSxRef("Operators/yield", "yield")}}</dt>
+ <dd>ジェネレーター関数の一時停止と再開を行います。</dd>
+ <dt>{{JSxRef("Operators/yield*", "yield*")}}</dt>
+ <dd>別のジェネレーター関数または反復可能オブジェクトを代行します。</dd>
+ <dt>{{JSxRef("Operators/async_function", "async function")}}</dt>
+ <dd><code>async function</code> は非同期の関数式を定義します。</dd>
+ <dt>{{JSxRef("Operators/await", "await")}}</dt>
+ <dd>非同期関数式の停止/再開と、プロミスの解決/拒絶を待ちます。</dd>
+ <dt>{{JSxRef("Global_Objects/Array", "[]")}}</dt>
+ <dd>配列初期化子またはリテラル構文です。</dd>
+ <dt>{{JSxRef("Operators/Object_initializer", "{}")}}</dt>
+ <dd>オブジェクト初期化子またはリテラル構文です。</dd>
+ <dt>{{JSxRef("Global_Objects/RegExp", "/ab+c/i")}}</dt>
+ <dd>正規表現式のリテラル構文です。</dd>
+ <dt>{{JSxRef("Operators/Grouping", "( )")}}</dt>
+ <dd>グループ化演算子です。</dd>
+</dl>
+
+<h3 id="Left-hand-side_expressions" name="Left-hand-side_expressions">左辺式</h3>
+
+<p>左辺値は、代入の対象になります。</p>
+
+<dl>
+ <dt>{{JSxRef("Operators/Property_accessors", "プロパティアクセサー", "", 1)}}</dt>
+ <dd>プロパティアクセス演算子はオブジェクトのプロパティやメソッドへのアクセスを提供します<br>
+ (<code>object.property</code> や <code>object["property"]</code>)。</dd>
+ <dt>{{JSxRef("Operators/new", "new")}}</dt>
+ <dd><code>new</code> 演算子はコンストラクタのインスタンスを作成します。</dd>
+ <dt>{{JSxRef("Operators/new%2Etarget", "new.target")}}</dt>
+ <dd>コンストラクタ内で <code>new.target</code> を使うことで、{{jsxref("Operators/new", "new")}} によって呼び出されるコンストラクタを参照できます。</dd>
+ <dt>{{JSxRef("Operators/super", "super")}}</dt>
+ <dd><code>super</code> キーワードは親コンストラクタを呼び出します。</dd>
+ <dt>{{JSxRef("Operators/Spread_syntax", "...obj")}}</dt>
+ <dd>展開記法 (スプレッド記法) は、式を複数の引数または複数の要素に展開して、それぞれ関数呼び出しまたは配列リテラルに渡します。</dd>
+</dl>
+
+<h3 id="Increment_and_decrement" name="Increment_and_decrement">インクリメントとデクリメント</h3>
+
+<p>接尾/接頭辞のインクリメント演算子と接尾/接頭辞のデクリメント演算子です。</p>
+
+<dl>
+ <dt>{{JSxRef("Operators/Increment", "A++")}}</dt>
+ <dd>後置型インクリメント演算子。</dd>
+ <dt>{{JSxRef("Operators/Decrement", "A--")}}</dt>
+ <dd>後置型デクリメント演算子。</dd>
+ <dt>{{JSxRef("Operators/Increment", "++A")}}</dt>
+ <dd>前置型インクリメント演算子。</dd>
+ <dt>{{JSxRef("Operators/Decrement", "--A")}}</dt>
+ <dd>前置型デクリメント演算子。</dd>
+</dl>
+
+<h3 id="Unary_operators" name="Unary_operators">単項演算子</h3>
+
+<p>単項演算は、1 個のオペランドによる演算です。</p>
+
+<dl>
+ <dt>{{JSxRef("Operators/delete", "delete")}}</dt>
+ <dd><code>delete</code> 演算子は、オブジェクトからプロパティを削除します。</dd>
+ <dt>{{JSxRef("Operators/void", "void")}}</dt>
+ <dd><code>void</code> 演算子は、式の戻り値を破棄します。</dd>
+ <dt>{{JSxRef("Operators/typeof", "typeof")}}</dt>
+ <dd><code>typeof</code> 演算子は、与えられたオブジェクトの型を判別します。</dd>
+ <dt>{{JSxRef("Operators/Unary_plus", "+")}}</dt>
+ <dd>単項正値演算子は、そのオペランドを Number 型に変換します。</dd>
+ <dt>{{JSxRef("Operators/Unary_negation", "-")}}</dt>
+ <dd>単項負値演算子は、そのオペランドを Number 型に変換して正負を反転します。</dd>
+ <dt>{{JSxRef("Operators/Bitwise_NOT", "~")}}</dt>
+ <dd>ビット否定演算子です。</dd>
+ <dt>{{JSxRef("Operators/Logical_NOT", "!")}}</dt>
+ <dd>論理否定演算子です。</dd>
+</dl>
+
+<h3 id="Arithmetic_operators" name="Arithmetic_operators">算術演算子</h3>
+
+<p>算術演算子は、数値 (リテラルまたは値) をオペランドとして取り、1 個の数値を返します。</p>
+
+<dl>
+ <dt>{{JSxRef("Operators/Addition", "+")}}</dt>
+ <dd>加算演算子です。</dd>
+ <dt>{{JSxRef("Operators/Subtraction", "-")}}</dt>
+ <dd>減算演算子です。</dd>
+ <dt>{{JSxRef("Operators/Division", "/")}}</dt>
+ <dd>除算演算子です。</dd>
+ <dt>{{JSxRef("Operators/Multiplication", "*")}}</dt>
+ <dd>乗算演算子です。</dd>
+ <dt>{{JSxRef("Operators/Remainder", "%")}}</dt>
+ <dd>剰余演算子です。</dd>
+ <dt>{{JSxRef("Operators/Exponentiation", "**")}}</dt>
+ <dd>べき乗演算子です。</dd>
+</dl>
+
+<h3 id="Relational_operators" name="Relational_operators">関係演算子</h3>
+
+<p>比較演算子は、そのオペランドを比較し、その比較が真かどうかに基づいて <code>Boolean</code> 値を返します。</p>
+
+<dl>
+ <dt>{{JSxRef("Operators/in", "in")}}</dt>
+ <dd><code>in</code> 演算子は、与えられたプロパティをオブジェクトが持っているかどうかを判別します。</dd>
+ <dt>{{JSxRef("Operators/instanceof", "instanceof")}}</dt>
+ <dd><code>instanceof</code> 演算子は、オブジェクトが別のオブジェクトのインスタンスかどうかを判別します。</dd>
+ <dt>{{JSxRef("Operators/Less_than", "&lt;")}}</dt>
+ <dd>小なり演算子です。</dd>
+ <dt>{{JSxRef("Operators/Greater_than", "&gt;")}}</dt>
+ <dd>大なり演算子です。</dd>
+ <dt>{{JSxRef("Operators/Less_than_or_equal", "&lt;=")}}</dt>
+ <dd>小なりイコール演算子です。</dd>
+ <dt>{{JSxRef("Operators/Greater_than_or_equal", "&gt;=")}}</dt>
+ <dd>大なりイコール演算子です。</dd>
+</dl>
+
+<div class="note">
+<p><strong>注: =&gt;</strong> は演算子ではなく、<a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a> のための記法です。</p>
+</div>
+
+<h3 id="Equality_operators" name="Equality_operators">等値演算子</h3>
+
+<p>等値演算子の評価結果は常に、比較が真かどうかに基づいて <code>Boolean</code> 型の値になります。</p>
+
+<dl>
+ <dt>{{JSxRef("Operators/Equality", "==")}}</dt>
+ <dd>等値演算子です。</dd>
+ <dt>{{JSxRef("Operators/Inequality", "!=")}}</dt>
+ <dd>不等値演算子です。</dd>
+ <dt>{{JSxRef("Operators/Strict_equality", "===")}}</dt>
+ <dd>同値演算子です。</dd>
+ <dt>{{JSxRef("Operators/Strict_inequality", "!==")}}</dt>
+ <dd>非同値演算子です。</dd>
+</dl>
+
+<h3 id="Bitwise_shift_operators" name="Bitwise_shift_operators">ビットシフト演算子</h3>
+
+<p>オペランドのすべてのビットをシフト演算します。</p>
+
+<dl>
+ <dt>{{JSxRef("Operators/Left_shift", "&lt;&lt;")}}</dt>
+ <dd>ビット左シフト演算子です。</dd>
+ <dt>{{JSxRef("Operators/Right_shift", "&gt;&gt;")}}</dt>
+ <dd>ビット右シフト演算子です。</dd>
+ <dt>{{JSxRef("Operators/Unsigned_right_shift", "&gt;&gt;&gt;")}}</dt>
+ <dd>ビット符号なし右シフト演算子です。</dd>
+</dl>
+
+<h3 id="Binary_bitwise_operators" name="Binary_bitwise_operators">バイナリービット演算子</h3>
+
+<p>ビット演算子は、そのオペランドを 32 ビット (0 と 1) の並びとして扱い、標準の JavaScript 数値を返します。</p>
+
+<dl>
+ <dt>{{JSxRef("Operators/Bitwise_AND", "&amp;")}}</dt>
+ <dd>ビット論理積 (AND) です。</dd>
+ <dt>{{JSxRef("Operators/Bitwise_OR", "|")}}</dt>
+ <dd>ビット論理和 (OR) です。</dd>
+ <dt>{{JSxRef("Operators/Bitwise_XOR", "^")}}</dt>
+ <dd>ビット排他的論理和 (XOR) です。</dd>
+</dl>
+
+<h3 id="Binary_logical_operators" name="Binary_logical_operators">バイナリー論理演算子</h3>
+
+<p>論理演算には、一般的に (論理) 真偽値が使用され、それが置かれた時に真偽値を返します。</p>
+
+<dl>
+ <dt>{{JSxRef("Operators/Logical_AND", "&amp;&amp;")}}</dt>
+ <dd>論理積 (AND) です。</dd>
+ <dt>{{JSxRef("Operators/Logical_OR", "||")}}</dt>
+ <dd>論理和 (OR) です。</dd>
+ <dt>{{JSxRef("Operators/Nullish_coalescing_operator", "??")}}</dt>
+ <dd>Null 合体 です。</dd>
+</dl>
+
+
+
+<h3 id="Conditional_ternary_operator" name="Conditional_ternary_operator">条件 (三項) 演算子</h3>
+
+<dl>
+ <dt>{{JSxRef("Operators/Conditional_Operator", "(condition ? ifTrue : ifFalse)")}}</dt>
+ <dd>
+ <p>この条件演算子は、条件の論理値を基に、2 つの値のいずれか一方を返します。</p>
+ </dd>
+</dl>
+
+<h3 id="Optional_Chaining_operator" name="Optional_Chaining_operator">オプショナルチェイニング演算子</h3>
+
+<dl>
+ <dt>{{JSxRef("Operators/Optional_chaining", "?.")}}</dt>
+ <dd>
+ <p>オプショナルチェイニング演算子は、参照が <a href="/ja/docs/Glossary/nullish">nullish</a>(<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/null"><code>null</code></a> または <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/undefined"><code>undefined</code></a>)の場合にエラーを発生させるのではなく、<code>undefined</code> を返します。</p>
+ </dd>
+</dl>
+
+<h3 id="Assignment_operators" name="Assignment_operators">代入演算子</h3>
+
+<p>代入演算子は、右辺のオペランドに基づいて、値を左辺のオペランドに代入します。</p>
+
+<dl>
+ <dt>{{JSxRef("Operators/Assignment", "=")}}</dt>
+ <dd>代入演算子です。</dd>
+ <dt>{{JSxRef("Operators/Multiplication_assignment", "*=")}}</dt>
+ <dd>乗算値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Exponentiation_assignment", "**=")}}</dt>
+ <dd>べき乗値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Division_assignment", "/=")}}</dt>
+ <dd>除算値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Remainder_assignment", "%=")}}</dt>
+ <dd>剰余値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Addition_assignment", "+=")}}</dt>
+ <dd>加算値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Subtraction_assignment", "-=")}}</dt>
+ <dd>減算値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Left_shift_assignment", "&lt;&lt;=")}}</dt>
+ <dd>左シフトした値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Right_shift_assignment", "&gt;&gt;=")}}</dt>
+ <dd>右シフトした値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Unsigned_right_shift_assignment", "&gt;&gt;&gt;=")}}</dt>
+ <dd>符号なしの右シフトした値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Bitwise_AND_assignment", "&amp;=")}}</dt>
+ <dd>ビット論理積 (AND) の値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Bitwise_XOR_assignment", "^=")}}</dt>
+ <dd>ビット排他的論理和 (XOR) の値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Bitwise_OR_assignment", "|=")}}</dt>
+ <dd>ビット論理和 (OR) の値を代入します。</dd>
+ <dt>{{JSxRef("Operators/Logical_AND_assignment", "&amp;&amp;=")}}</dt>
+ <dd>論理積代入です。</dd>
+ <dt>{{JSxRef("Operators/Logical_OR_assignment", "||=")}}</dt>
+ <dd>論理和代入です。</dd>
+ <dt>{{JSxRef("Operators/Logical_nullish_assignment", "??=")}}</dt>
+ <dd>論理 Null 代入です。</dd>
+ <dt>{{JSxRef("Operators/Destructuring_assignment", "[a, b] = [1, 2]")}}<br>
+ {{JSxRef("Operators/Destructuring_assignment", "{a, b} = {a:1, b:2}")}}</dt>
+ <dd>
+ <p>分割代入は、配列やオブジェクトのプロパティを、配列やオブジェクトリテラルに似た構文を使用して変数に代入します。</p>
+ </dd>
+</dl>
+
+<h3 id="Comma_operator" name="Comma_operator">カンマ演算子</h3>
+
+<dl>
+ <dt>{{JSxRef("Operators/Comma_Operator", ",")}}</dt>
+ <dd>カンマ演算子は、複数の式を単一の文で評価し、その最後の式の結果を返します。</dd>
+</dl>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-ecmascript-language-expressions', 'ECMAScript Language: Expressions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence">演算子の優先順位</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/inequality/index.html b/files/ja/web/javascript/reference/operators/inequality/index.html
new file mode 100644
index 0000000000..7dba373779
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/inequality/index.html
@@ -0,0 +1,98 @@
+---
+title: 不等価 (!=)
+slug: Web/JavaScript/Reference/Operators/Inequality
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Inequality
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>不等価演算子 (<code>!=</code>) は、2つのオペランドが等しくないかをチェックし、ブール値の結果を返します。<a href="/en-US/docs/Web/JavaScript/Reference/Operators/Strict_inequality">厳密不等価</a>演算子とは異なり、異なる型のオペランドを変換して比較を行おうとします。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-inequality.html")}}</div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate">x != y</pre>
+
+<h2 id="説明">説明</h2>
+
+<p>不等価演算子は、そのオペランドが等しくないかどうかをチェックします。これは<a href="/en-US/docs/Web/JavaScript/Reference/Operators/Equality">等価</a>演算子の否定なので、次の2行は常に同じ結果になります。</p>
+
+<pre class="brush: js notranslate">x != y
+
+!(x == y)</pre>
+
+<p>比較アルゴリズムの詳細については、<a href="/en-US/docs/Web/JavaScript/Reference/Operators/Equality">等価</a>演算子のページを参照して下さい。</p>
+
+<p>等価演算子と同様に、不等価演算子は異なる型のオペランドを変換して比較しようとします。</p>
+
+<pre class="brush: js notranslate">3 != "3"; // false</pre>
+
+<p>これを防止し、異なる型が異なる結果を返すようにするには、代わりに<a href="/en-US/docs/Web/JavaScript/Reference/Operators/Strict_inequality">厳密不等価</a>演算子を使用します:</p>
+
+<pre class="brush: js notranslate">3 !== "3"; // true</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="型変換なしの比較">型変換なしの比較</h3>
+
+<pre class="brush: js notranslate">1 != 2; // true
+"hello" != "hola"; // true
+
+1 != 1; // false
+"hello" != "hello"; // false</pre>
+
+<h3 id="型変換ありの比較">型変換ありの比較</h3>
+
+<pre class="brush: js notranslate">"1" != 1; // false
+1 != "1"; // false
+0 != false; // false
+0 != null; // true
+0 != undefined; // true
+null != undefined; // false
+
+const number1 = new Number(3);
+const number2 = new Number(3);
+number1 != 3; // false
+number1 != number2; // true</pre>
+
+<h3 id="オブジェクトの比較">オブジェクトの比較</h3>
+
+<pre class="brush: js notranslate">const object1 = {"key": "value"}
+const object2 = {"key": "value"};
+
+object1 != object2 // true
+object2 != object2 // false</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-equality-operators', 'Equality operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.inequality")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Equality">等価演算子</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Strict_equality">厳密等価演算子</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Strict_inequality">厳密不等価演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/instanceof/index.html b/files/ja/web/javascript/reference/operators/instanceof/index.html
new file mode 100644
index 0000000000..a238d8b522
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/instanceof/index.html
@@ -0,0 +1,175 @@
+---
+title: instanceof
+slug: Web/JavaScript/Reference/Operators/instanceof
+tags:
+ - JavaScript
+ - Language feature
+ - Object
+ - Operator
+ - Prototype
+ - Relational Operators
+ - instanceof
+translation_of: Web/JavaScript/Reference/Operators/instanceof
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong><code>instanceof</code></strong> 演算子は、オブジェクトが自身のプロトタイプにコンストラクタの <code>prototype</code> プロパティを持っているかを確認します。戻り値はブール値です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-instanceof.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>object</var> instanceof <var>constructor</var></pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>object</var></code></dt>
+ <dd>確認するオブジェクト</dd>
+</dl>
+
+<dl>
+ <dt><code><var>constructor</var></code></dt>
+ <dd>オブジェクトに対して確認を行う関数</dd>
+</dl>
+
+<h2 id="説明">説明</h2>
+
+<p><code>instanceof</code> 演算子は、<code>object</code> のプロトタイプチェインで <code>constructor.prototype</code> の存在を確認します。</p>
+
+<pre class="brush: js notranslate">// コンストラクタを定義
+function C() {}
+function D() {}
+
+let o = new C()
+
+// true なぜなら: Object.getPrototypeOf(o) === C.prototype
+o instanceof C;
+
+// false D.prototype は o のプロトタイプチェーンのどこにも存在しない
+o instanceof D;
+
+o instanceof Object; // true なぜなら...
+C.prototype instanceof Object // true だから
+
+C.prototype = {}
+let o2 = new C()
+
+o2 instanceof C; // true
+
+// false C.prototype は o のプロトタイプチェーンの
+// どこにも存在しない
+o instanceof C;
+
+D.prototype = new C(); // 継承を使用
+let o3 = new D()
+o3 instanceof D; // true
+o3 instanceof C; // true o3 のプロトタイプチェーンに C.prototype があるため。
+</pre>
+
+<p>注意事項: <code>instanceof</code> による確認結果はコンストラクタの <code>prototype</code> プロパティの変化に従って変わることがあります。また、オブジェクトのプロトタイプを <code>Object.setPrototypeOf</code> を用いて変更した場合や、非標準の <code>__proto__</code> 疑似プロパティを用いた場合も変わりえます。</p>
+
+<h3 id="instanceof_and_multiple_context_e.g._frames_or_windows" name="instanceof_and_multiple_context_e.g._frames_or_windows"><code>instanceof</code> と複数のコンテキスト (例: frame や window)</h3>
+
+<p>異なるスコープは、別々の実行環境を持ちます。つまり、それらは別々の組み込み物 (別々のグローバルオブジェクト、別々のコンストラクタ 等々) を持ちます。これにより予期せぬ結果になる場合があります。例えば、<code>[] instanceof window.frames[0].Array</code> は、<code>Array.prototype !== window.frames[0].Array</code> であることおよび配列が以前から継承していることから <code>false</code> を返します。</p>
+
+<p>これは、始めはわかりにくいかもしれませんが、スクリプトで複数のフレームやウィンドウを扱い始め、オブジェクトをあるコンテキストから別のコンテキストへ関数を経由して渡すようになると、正当かつ重要な事項になります。例えば、<code>Array.isArray(<var>myObj</var>)</code> を使用して、与えられたオブジェクトが実際に配列であるかどうかを安全にチェックできます。</p>
+
+<p>例えば、別のコンテキストで <a href="/ja/docs/Web/API/Node">Nodes</a> が <a href="/ja/docs/Web/API/SVGElement">SVGElement</a> であるかどうかをチェックするには、<code>myNode instanceof myNode.ownerDocument.defaultView.SVGElement</code> を使用します。</p>
+
+<div class="note">
+<p><strong>Mozilla 開発者への注意点</strong></p>
+
+<p>XPCOM を用いるコードでは <code>instanceof</code> に特別な効果があります: <code>obj instanceof <em>xpcomInterface</em></code> (例えば <code>Components.interfaces.nsIFile</code>) は <code>obj.QueryInterface(<em>xpcomInterface</em>)</code> を呼び出し、<code>QueryInterface</code> が成功した場合に <code>true</code> を返します。</p>
+
+<p>このような呼び出しの副作用として、<code>instanceof</code> による確認の成功後に <code><var>obj</var></code> の <code>xpcomInterface</code> のプロパティを利用できることがあります。標準 JavaScript の環境と異なり、<code>obj</code> が異なるスコープ由来であっても <code><var>obj</var> instanceof <var>xpcomInterface</var></code> での確認は期待どおりに動作します。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Demonstrating_that_String_and_Date_are_of_type_Object_and_exceptional_cases" name="Demonstrating_that_String_and_Date_are_of_type_Object_and_exceptional_cases"><code>String</code> や <code>Date</code> が <code>Object</code> タイプであることの実証</h3>
+
+<p>以下のコードは、<code>String</code> や <code>Date</code> オブジェクトが <code>Object</code> タイプでもある (<code>Object</code> から派生している) ことの実証に <code>instanceof</code> を用いています。</p>
+
+<p>また、オブジェクトリテラルを用いて作成されたオブジェクトに対する例外、つまり、prototype が <code>undefined</code> であるにも関わらず <code>instanceof Object</code> が <code>true</code> を報告する例を示します。</p>
+
+<pre class="brush: js notranslate">let simpleStr = 'This is a simple string'
+let myString = new String()
+let newStr = new String('コンストラクターで作成された文字列')
+let myDate = new Date()
+let myObj = {}
+let myNonObj = Object.create(null)
+
+simpleStr instanceof String // false を返す 文字列リテラルはオブジェクトではありません。
+myString instanceof String // true を返す
+newStr instanceof String // true を返す
+myString instanceof Object // true を返す
+
+myObj instanceof Object // true を返す すべてのオブジェクトリテラルはプロトタイプとして Object.prototype を持っています。
+({}) instanceof Object // true を返す 上記と同じ
+myNonObj instanceof Object // false を返す プロトタイプはプロトタイプチェーンの終わりです(null)
+myString instanceof Date // false を返す
+
+myDate instanceof Date // true を返す
+myDate instanceof Object // true を返す
+myDate instanceof String // false を返す
+</pre>
+
+<h3 id="Demonstrating_that_mycar_is_of_type_Car_and_type_Object" name="Demonstrating_that_mycar_is_of_type_Car_and_type_Object"><code>mycar</code> が <code>Car</code> タイプおよび <code>Object</code> タイプであることの実証</h3>
+
+<p>以下のコードは、<code>Car</code> オブジェクトタイプとそのインスタンスである <code>mycar</code> を生成しています。<code>instanceof</code> 演算子で、<code>mycar</code> は <code>Car</code> タイプおよび <code>Object</code> タイプであることを実証します。</p>
+
+<pre class="brush: js notranslate">function Car(make, model, year) {
+ this.make = make;
+ this.model = model;
+ this.year = year;
+}
+let mycar = new Car('Honda', 'Accord', 1998)
+let a = mycar instanceof Car // true を返す
+let b = mycar instanceof Object // true を返す
+</pre>
+
+<h3 id="Not_an_instanceof" name="Not_an_instanceof">インスタンスではないことの実証</h3>
+
+<p>オブジェクトが特定のコンストラクタの <code>instanceof</code> でないかどうかを確認するには次のようにします。</p>
+
+<pre class="brush: js notranslate">if (!(mycar instanceof Car)) {
+ // Do something, like:
+  // mycar = new Car(mycar)
+}
+</pre>
+
+<p>これは実際には次のものとは異なります。</p>
+
+<pre class="brush: js notranslate">if (!mycar instanceof Car)</pre>
+
+<p>これは常に <code>false</code> になります。(<code>!mycar</code> は <code>instanceof</code> の前に評価され、常に <code>Car</code> のインスタンスを確認したブール値になります)。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-relational-operators', 'Relational Operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.instanceof")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Operators/typeof" title="/ja/docs/JavaScript/Reference/Operators/typeof">typeof</a></code></li>
+ <li>{{jsxref("Symbol.hasInstance")}}</li>
+ <li>{{jsxref("Object.prototype.isPrototypeOf")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/left_shift/index.html b/files/ja/web/javascript/reference/operators/left_shift/index.html
new file mode 100644
index 0000000000..9a274f84b2
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/left_shift/index.html
@@ -0,0 +1,77 @@
+---
+title: 左シフト (<<)
+slug: Web/JavaScript/Reference/Operators/Left_shift
+tags:
+ - Bitwise operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - ビット演算子
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Left_shift
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>左シフト演算子 (<code>&lt;&lt;</code>)</strong>は、1つ目のオペランドを指定されたビット数だけ左にずらします。左にずらしてあふれたビットは廃棄されます。0のビットが右からずれて入ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-left-shift.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>a</var> &lt;&lt; <var>b</var></code>
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>この演算子は、1つ目のオペランドを指定されたビット数だけ左にずらします。左にずらしてあふれたビットは廃棄されます。0のビットが右からずれて入ります。</p>
+
+<p>例えば <code>9 &lt;&lt; 2</code> は 36 になります。</p>
+
+<pre class="brush: js notranslate">. 9 (10進数): 00000000000000000000000000001001 (2進数)
+ --------------------------------
+9 &lt;&lt; 2 (10進数): 00000000000000000000000000100100 (2進数) = 36 (10進数)
+</pre>
+
+<p>任意の数 <code>x</code> を <code>y</code> ビット分だけ左にビット単位にずらすと、 <code>x * 2 ** y</code> になります。<br>
+ ですから、例えば <code>9 &lt;&lt; 3</code> は <code>9 * (2 ** 3) = 9 * (8) = 72</code> になります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_left_shift" name="Using_left_shift">左シフトの使用</h3>
+
+<pre class="brush: js notranslate">9 &lt;&lt; 3; // 72
+
+// 9 * (2 ** 3) = 9 * (8) = 72
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-bitwise-shift-operators', 'Bitwise Shift Operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.left_shift")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise">JavaScript ガイドのビット毎演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Left_shift_assignment">左シフト代入演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/left_shift_assignment/index.html b/files/ja/web/javascript/reference/operators/left_shift_assignment/index.html
new file mode 100644
index 0000000000..cbe638ccd2
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/left_shift_assignment/index.html
@@ -0,0 +1,61 @@
+---
+title: 左シフト代入 (<<=)
+slug: Web/JavaScript/Reference/Operators/Left_shift_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Left_shift_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>左シフト代入演算子 (<code>&lt;&lt;=</code>) は、指定された量のビットを左に移動し、結果を変数に代入します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-left-shift-assignment.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> x &lt;&lt;= y
+<strong>Meaning:</strong> x = x &lt;&lt; y</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="左シフト代入の使用">左シフト代入の使用</h3>
+
+<pre class="brush: js notranslate">let a = 5;
+// 00000000000000000000000000000101
+
+bar &lt;&lt;= 2; // 20
+// 00000000000000000000000000010100</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.left_shift_assignment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment">代入演算子</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Left_shift">左シフト演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/less_than/index.html b/files/ja/web/javascript/reference/operators/less_than/index.html
new file mode 100644
index 0000000000..c684188b51
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/less_than/index.html
@@ -0,0 +1,115 @@
+---
+title: 小なり (<)
+slug: Web/JavaScript/Reference/Operators/Less_than
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Less_than
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>小なり演算子 (<code>&lt;</code>) は、左辺のオペランドが右辺のオペランドより小さい場合は <code>true</code> を返し、それ以外の場合は <code>false</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-less-than.html")}}</div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"> x &lt; y</pre>
+
+<h2 id="説明">説明</h2>
+
+<p>オペランドは、以下に大まかに要約されている<a href="https://tc39.es/ecma262/#sec-abstract-relational-comparison">抽象関係比較</a>アルゴリズムを使用して比較されます:</p>
+
+<ul>
+ <li>最初に、オブジェクトは <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive">Symbol.ToPrimitive</a></code> を使用してプリミティブに変換されます。</li>
+ <li>両方の値が文字列である場合、それらに含まれる Unicode コードポイントの値に基づいて、文字列として比較されます。</li>
+ <li>それ以外の場合、 JavaScript は非数値型を数値に変換しようとします:
+ <ul>
+ <li>ブール値 <code>true</code> および <code>false</code> は、それぞれ 1 および 0 に変換されます。</li>
+ <li><code>null</code> は 0 に変換されます。</li>
+ <li><code>undefined</code> は <code>NaN</code> に変換されます。</li>
+ <li>文字列は、含まれている値に基づいて変換され、数値が含まれていない場合は <code>NaN</code> として変換されます。</li>
+ </ul>
+ </li>
+ <li>いずれかの値が <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN">NaN</a></code> の場合、演算子は <code>false</code> を返します。</li>
+ <li>それ以外の場合、値は数値として比較されます。</li>
+</ul>
+
+<h2 id="例">例</h2>
+
+<h3 id="文字列と文字列の比較">文字列と文字列の比較</h3>
+
+<pre class="brush: js notranslate">console.log("a" &lt; "b"); // true
+console.log("a" &lt; "a"); // false
+console.log("a" &lt; "3"); // false</pre>
+
+<h3 id="文字列と数値の比較">文字列と数値の比較</h3>
+
+<pre class="brush: js notranslate">console.log("5" &lt; 3); // false
+console.log("3" &lt; 3); // false
+console.log("3" &lt; 5); // true
+
+console.log("hello" &lt; 5); // false
+console.log(5 &lt; "hello"); // false
+
+console.log("5" &lt; 3n); // false
+console.log("3" &lt; 5n); // true</pre>
+
+<h3 id="数値と数値の比較">数値と数値の比較</h3>
+
+<pre class="brush: js notranslate">console.log(5 &lt; 3); // false
+console.log(3 &lt; 3); // false
+console.log(3 &lt; 5); // true</pre>
+
+<h3 id="数値と_BigInt_の比較">数値と BigInt の比較</h3>
+
+<pre class="brush: js notranslate">console.log(5n &lt; 3); // false
+console.log(3 &lt; 5n); // true</pre>
+
+<h3 id="ブール値_null_undefined_NaN_の比較">ブール値, null, undefined, NaN の比較</h3>
+
+<pre class="brush: js notranslate">console.log(true &lt; false); // false
+console.log(false &lt; true); // true
+
+console.log(0 &lt; true); // true
+console.log(true &lt; 1); // false
+
+console.log(null &lt; 0); // false
+console.log(null &lt; 1); // true
+
+console.log(undefined &lt; 3);    // false
+console.log(3 &lt; undefined);    // false
+
+console.log(3 &lt; NaN); // false
+console.log(NaN &lt; 3); // false</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-relational-operators', 'Relational operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.less_than")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Greater_than">Greater than operator</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Greater_than_or_equal">Greater than or equal operator</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Less_than_or_equal">Less than or equal operator</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/less_than_or_equal/index.html b/files/ja/web/javascript/reference/operators/less_than_or_equal/index.html
new file mode 100644
index 0000000000..425fe7c264
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/less_than_or_equal/index.html
@@ -0,0 +1,104 @@
+---
+title: 小なりイコール (<=)
+slug: Web/JavaScript/Reference/Operators/Less_than_or_equal
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Less_than_or_equal
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>小なりイコール演算子 (<code>&lt;=</code>) は、左のオペランドが右のオペランドより小さいか等しい場合に <code>true</code> を返し、それ以外の場合は <code>false</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-less-than-or-equal.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"> x &lt;= y</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オペランドは<a class="external external-icon" href="https://tc39.es/ecma262/#sec-abstract-relational-comparison" rel="noopener">抽象関係比較</a>アルゴリズムを使用して比較されます。このアルゴリズムの概要は<a href="/ja/docs/Web/JavaScript/Reference/Operators/Greater_than">大なり</a>演算子のドキュメントをご覧ください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="String_to_string_comparison" name="String_to_string_comparison">文字列と文字列の比較</h3>
+
+<pre class="brush: js notranslate">console.log("a" &lt;= "b"); // true
+console.log("a" &lt;= "a"); // true
+console.log("a" &lt;= "3"); // false
+</pre>
+
+<h3 id="String_to_number_comparison" name="String_to_number_comparison">文字列と数値の比較</h3>
+
+<pre class="brush: js notranslate">console.log("5" &lt;= 3); // false
+console.log("3" &lt;= 3); // true
+console.log("3" &lt;= 5); // true
+
+console.log("hello" &lt;= 5); // false
+console.log(5 &lt;= "hello"); // false</pre>
+
+<h3 id="Number_to_Number_comparison" name="Number_to_Number_comparison">数値と数値の比較</h3>
+
+<pre class="brush: js notranslate">console.log(5 &lt;= 3); // false
+console.log(3 &lt;= 3); // true
+console.log(3 &lt;= 5); // true</pre>
+
+<h3 id="Number_to_BigInt_comparison" name="Number_to_BigInt_comparison">数値と BigInt の比較</h3>
+
+<pre class="brush: js notranslate">console.log(5n &lt;= 3); // false
+console.log(3 &lt;= 3n); // true
+console.log(3 &lt;= 5n); // true</pre>
+
+<h3 id="Comparing_Boolean_null_undefined_NaN" name="Comparing_Boolean_null_undefined_NaN">論理型, null, undefined, NaN の比較</h3>
+
+<pre class="brush: js notranslate">console.log(true &lt;= false); // false
+console.log(true &lt;= true); // true
+console.log(false &lt;= true); // true
+
+console.log(true &lt;= 0); // false
+console.log(true &lt;= 1); // true
+
+console.log(null &lt;= 0); // true
+console.log(1 &lt;= null); // false
+
+console.log(undefined &lt;= 3); // false
+console.log(3 &lt;= undefined); // false
+
+console.log(3 &lt;= NaN); // false
+console.log(NaN &lt;= 3); // false</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-relational-operators', 'Relational operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.less_than_or_equal")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Greater_than">大なり演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Greater_than_or_equal">大なりイコール演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Less_than">小なり演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/logical_and/index.html b/files/ja/web/javascript/reference/operators/logical_and/index.html
new file mode 100644
index 0000000000..467230cfec
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/logical_and/index.html
@@ -0,0 +1,146 @@
+---
+title: 論理積 (&&)
+slug: Web/JavaScript/Reference/Operators/Logical_AND
+tags:
+ - JavaScript
+ - Language feature
+ - Logical Operator
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+ - 論理演算子
+translation_of: Web/JavaScript/Reference/Operators/Logical_AND
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>論理積 (<code>&amp;&amp;</code>) 演算子 (論理結合) をオペランドの組み合わせに対して使用すると、すべてのオペランドが true である場合に true になります。一般的には {{jsxref("Boolean")}} (論理) 値で使用されます。その場合は論理値を返します。ただし <code>&amp;&amp;</code> 演算子は実際には指定されたオペランドのうち一つの値を返すので、この演算子が論理値以外で使用された場合は、論理値以外の値を返すことになります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-logical-and.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><em>expr1</em> &amp;&amp; <em>expr2</em>
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>expr<strong>1</strong></code> が <code>true</code> に変換できる場合は <code>expr<strong>2</strong></code> を返し、それ以外の場合は <code>expr<strong>1</strong></code> を返します。</p>
+
+<p>ある値が <code>true</code> に変換できる場合、その値は真値 ({{Glossary("truthy")}}) と呼ばれます。ある値が <code>false</code> に変換できる場合、その値は偽値 ({{Glossary("falsy")}}) と呼ばれます。</p>
+
+<p>false に変換することができる式の例を示します。</p>
+
+<ul>
+ <li><code>null</code></li>
+ <li><code>NaN</code></li>
+ <li><code>0</code></li>
+ <li>空文字列 (<code>""</code> または <code>''</code> または <code>``</code>)</li>
+ <li><code>undefined</code></li>
+</ul>
+
+<p><code>&amp;&amp;</code> 演算子では論理値以外のオペランドを使用することができますが、返値が常に <a href="/ja/docs/Web/JavaScript/Data_structures#Boolean_type">boolean プリミティブ</a>に変換することが可能であるため、論理演算子と見なすことができます。返値 (または一般的な式) を対応する論理値に明示的に変換するには、二重の<a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_NOT">否定演算子</a>または {{jsxref("Global_Objects/Boolean/Boolean", "Boolean")}} コンストラクターを使用してください。</p>
+
+<h3 id="Short-circuit_evaluation" name="Short-circuit_evaluation">短絡評価</h3>
+
+<p>論理積の式は左から右へと評価され、下記の規則を使用して「短絡」評価が可能なように評価されます。</p>
+
+<p><code>(偽値の式) &amp;&amp; <em>expr</em></code> は短絡評価で偽値の式に評価されます。</p>
+
+<p>短絡とは、上記の <code><em>expr</em></code> の部分が<strong>評価されず</strong>、したがって、これを行うことの副作用が効果を及ぼさないことを意味します (例えば、 <code><em>expr</em></code> が関数呼び出しであった場合、この場所では呼び出されません)。これは、最初のオペランドが評価された時点で、すでに演算子の値が決定しているためです。例を示します。</p>
+
+<pre class="brush: js notranslate">function A(){ console.log('called A'); return false; }
+function B(){ console.log('called B'); return true; }
+
+console.log( A() &amp;&amp; B() );
+// 関数呼び出しによって "called A" がログ出力され、
+// それから false (演算子の結果の値) が出力されます。
+</pre>
+
+<h3 id="Operator_precedence" name="Operator_precedence">演算子の優先順位</h3>
+
+<p>以下の式は同じであるように見えるかもしれませんが、異なります。 <code>&amp;&amp;</code> 演算子は <code>||</code> 演算子よりも先に実行されるからです (<a href="/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence">演算子の優先順位</a>を参照)。</p>
+
+<pre class="brush: js notranslate">true || false &amp;&amp; false // true を返す。 &amp;&amp; が先に実行されるため
+(true || false) &amp;&amp; false // false を返す。演算子の優先順位が適用されないため</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_AND" name="Using_AND">論理和の使用</h3>
+
+<p>以下のコードは <code>&amp;&amp;</code> (論理積) 演算子の例を示しています。</p>
+
+<pre class="brush: js notranslate">a1 = true &amp;&amp; true // t &amp;&amp; t returns true
+a2 = true &amp;&amp; false // t &amp;&amp; f returns false
+a3 = false &amp;&amp; true // f &amp;&amp; t returns false
+a4 = false &amp;&amp; (3 == 4) // f &amp;&amp; f returns false
+a5 = 'Cat' &amp;&amp; 'Dog' // t &amp;&amp; t returns "Dog"
+a6 = false &amp;&amp; 'Cat' // f &amp;&amp; t returns false
+a7 = 'Cat' &amp;&amp; false // t &amp;&amp; f returns false
+a8 = '' &amp;&amp; false // f &amp;&amp; f returns ""
+a9 = false &amp;&amp; '' // f &amp;&amp; f returns false</pre>
+
+<h3 id="Conversion_rules_for_booleans" name="Conversion_rules_for_booleans">論理型の変換規則</h3>
+
+<h4 id="AND_から_OR_への変換">AND から OR への変換</h4>
+
+<p><strong>論理型</strong>に関する以下の操作は、</p>
+
+<pre class="brush: js notranslate">bCondition1 &amp;&amp; bCondition2</pre>
+
+<p>常に以下のものと等しくなります。</p>
+
+<pre class="brush: js notranslate">!(!bCondition1 || !bCondition2)</pre>
+
+<h4 id="Converting_OR_to_AND" name="Converting_OR_to_AND">OR から AND への変換</h4>
+
+<p><strong>論理型</strong>に関する以下の操作は、</p>
+
+<pre class="brush: js notranslate">bCondition1 || bCondition2</pre>
+
+<p>常に以下のものと等しくなります。</p>
+
+<pre class="brush: js notranslate">!(!bCondition1 &amp;&amp; !bCondition2)</pre>
+
+<h3 id="Removing_nested_parentheses" name="Removing_nested_parentheses">入れ子になった括弧の除去</h3>
+
+<p>論理式は左から右に評価されるので、いくつかのルールに従って複雑な式から括弧を削除することは常に可能です。</p>
+
+<p>以下の<strong>論理型</strong>に関する複合操作は、</p>
+
+<pre class="brush: js notranslate">bCondition1 || (bCondition2 &amp;&amp; bCondition3)</pre>
+
+<p>常に以下のものと等しくなります。</p>
+
+<pre class="brush: js notranslate">bCondition1 || bCondition2 &amp;&amp; bCondition3</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#prod-LogicalANDExpression', 'Logical AND expression')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.logical_and")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Boolean")}}</li>
+ <li>{{Glossary("Truthy")}}</li>
+ <li>{{Glossary("Falsy")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/logical_and_assignment/index.html b/files/ja/web/javascript/reference/operators/logical_and_assignment/index.html
new file mode 100644
index 0000000000..1e74fc6b2d
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/logical_and_assignment/index.html
@@ -0,0 +1,89 @@
+---
+title: 論理積代入 (&&=)
+slug: Web/JavaScript/Reference/Operators/Logical_AND_assignment
+tags:
+ - JavaScript
+ - Language feature
+ - Logical assignment
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Logical_AND_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>論理積代入 (<code>x &amp;&amp;= y</code>) 演算子は、<code>x</code> が {{Glossary("truthy")}} である場合にのみ代入します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-logical-and-assignment.html")}}</div>
+
+<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><em>expr1</em> &amp;&amp;= <em>expr2</em>
+</pre>
+
+<h2 id="説明">説明</h2>
+
+<h3 id="短絡評価(ショートサーキット)">短絡評価(ショートサーキット)</h3>
+
+<p><a href="/docs/Web/JavaScript/Reference/Operators/Logical_AND">論理積演算子</a>は左から右に評価され、次のルールを使って短絡評価の可能性があるかどうかテストされます。</p>
+
+<p><code>(偽値の式) &amp;&amp; expr</code> は、偽値の式が短絡評価されます。</p>
+
+<p>短絡評価とは、上記の <code><em>expr</em></code> 部分が<strong>評価されない</strong>ことを意味します。したがって、評価された場合の副作用は発生しません。(例えば、<code><em>expr</em></code> が関数呼び出しである場合、呼び出しは行われません。)</p>
+
+<p>論理積代入も短絡評価されます。これは、<code>x &amp;&amp;= y</code> が以下と等価であることを意味します。</p>
+
+<pre class="brush: js notranslate">x &amp;&amp; (x = y);</pre>
+
+<p>そして、常に代入が行われる以下と等価ではありません。</p>
+
+<pre class="brush: js notranslate example-bad">x = x &amp;&amp; y;
+</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="論理積代入演算子の使用">論理積代入演算子の使用</h3>
+
+<pre class="brush: js notranslate">let x = 0;
+let y = 1;
+
+x &amp;&amp;= 0; // 0
+x &amp;&amp;= 1; // 0
+y &amp;&amp;= 1; // 1
+y &amp;&amp;= 0; // 0
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ </tr>
+ <tr>
+ <td>{{SpecName('Logical Assignment', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザの互換性">ブラウザの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.logical_and_assignment")}}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_AND">論理積 (&amp;&amp;)</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">Null合体 (<code>??</code>)</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_AND_assignment">ビット論理積代入 (<code>&amp;=</code>)</a></li>
+ <li>{{jsxref("Boolean")}}</li>
+ <li>{{Glossary("Truthy")}}</li>
+ <li>{{Glossary("Falsy")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/logical_not/index.html b/files/ja/web/javascript/reference/operators/logical_not/index.html
new file mode 100644
index 0000000000..9ba7180d85
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/logical_not/index.html
@@ -0,0 +1,109 @@
+---
+title: 論理否定 (!)
+slug: Web/JavaScript/Reference/Operators/Logical_NOT
+tags:
+ - JavaScript
+ - Language feature
+ - Logical Operator
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+ - 論理演算子
+translation_of: Web/JavaScript/Reference/Operators/Logical_NOT
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>論理否定 (<code>!</code>) 演算子 (論理反転、否定) は、真値を取ると偽値になり、その逆も同様です。これは通常 {{jsxref("Boolean")}} (論理型) の値に使用されます。論理型以外の値に使用した場合、単一のオペランドが <code>true</code> に変換できる場合は <code>false</code> を返し、それ以外は <code>true</code> を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-logical-not.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">!<var>expr</var>
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>単一のオペランドが <code>true</code> に変換できる場合は <code>false</code> を返し、それ以外は <code>true</code> を返します。</p>
+
+<p>ある値が <code>true</code> に変換できる場合、その値は真値 ({{Glossary("truthy")}}) と呼ばれます。ある値が <code>false</code> に変換できる場合、その値は偽値 ({{Glossary("falsy")}}) と呼ばれます。</p>
+
+<p>false に変換することができる式の例を示します。</p>
+
+<ul>
+ <li><code>null</code></li>
+ <li><code>NaN</code></li>
+ <li><code>0</code></li>
+ <li>空文字列 (<code>""</code> または <code>''</code> または <code>``</code>)</li>
+ <li><code>undefined</code></li>
+</ul>
+
+<p><code>!</code> 演算子は論理値以外のオペランドに対して使用することができますが、返値が常に <a href="/ja/docs/Web/JavaScript/Data_structures#Boolean_type">boolean プリミティブ</a>に変換することが可能であるため、論理演算子と見なすことができます。返値 (または一般的な式) を対応する論理値に明示的に変換するには、二重の<a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_NOT">否定演算子</a>または {{jsxref("Global_Objects/Boolean/Boolean", "Boolean")}} コンストラクターを使用してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_NOT" name="Using_NOT">否定の使用</h3>
+
+<p>以下のコードは <code>!</code> (論理否定) 演算子の例を示しています。</p>
+
+<pre class="brush: js notranslate">n1 = !true // !t returns false
+n2 = !false // !f returns true
+n3 = !'' // !f returns true
+n4 = !'Cat' // !t returns false</pre>
+
+<h3 id="Double_NOT_!!" name="Double_NOT_!!">二重否定 (<code>!!</code>)</h3>
+
+<p>複数の否定演算子を連続して使用することで、明示的にあらゆる値を対応する<a href="/ja/docs/Web/JavaScript/Data_structures#Boolean_type">論理型プリミティブ</a>に変換することができます。変換は値の「真値性」または「偽値性」に基づいて行われます ({{Glossary("truthy")}} および {{Glossary("falsy")}} を参照)。</p>
+
+<p>同じ変換は {{jsxref("Global_Objects/Boolean/Boolean", "Boolean")}} 関数を通じて行うこともできます。</p>
+
+<pre class="brush: js notranslate">n1 = !!true // !!truthy returns true
+n2 = !!{} // !!truthy returns true: <strong>any</strong> object is truthy...
+n3 = !!(new Boolean(false)) // ...even Boolean objects with a false <em>.valueOf()</em>!
+n4 = !!false // !!falsy returns false
+n5 = !!"" // !!falsy returns false
+n6 = !!Boolean(false) // !!falsy returns false</pre>
+
+<h3 id="Converting_between_NOTs" name="Converting_between_NOTs">否定同士の変換</h3>
+
+<p>以下の操作を<strong>論理値</strong>で行った場合、</p>
+
+<pre class="brush: js notranslate">!!bCondition</pre>
+
+<p>常に以下のものと等しくなります。</p>
+
+<pre class="brush: js notranslate">bCondition</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#prod-LogicalORExpression', 'Logical OR expression')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.logical_or")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Boolean")}}</li>
+ <li>{{Glossary("Truthy")}}</li>
+ <li>{{Glossary("Falsy")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/logical_nullish_assignment/index.html b/files/ja/web/javascript/reference/operators/logical_nullish_assignment/index.html
new file mode 100644
index 0000000000..1c2235a65e
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/logical_nullish_assignment/index.html
@@ -0,0 +1,89 @@
+---
+title: Null 合体代入 (??=)
+slug: Web/JavaScript/Reference/Operators/Logical_nullish_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Logical Operator
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Logical_nullish_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>Null 合体代入 (<code>x ??= y</code>) 演算子は、<code>x</code> が {{Glossary("nullish")}} (<code>null</code> または <code>undefined</code>) である場合にのみ代入を行います。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-logical-nullish-assignment.html")}}</div>
+
+<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><em>expr1</em> ??= <em>expr2</em>
+</pre>
+
+<h2 id="説明">説明</h2>
+
+<h3 id="短絡評価(ショートサーキット)">短絡評価(ショートサーキット)</h3>
+
+<p><a href="/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">Null 合体演算子</a>は左から右に評価され、次のルールを使って短絡評価の可能性があるかどうかテストされます。</p>
+
+<p><code>(null や undefined ではない式) ?? expr</code> は、左辺が <code>null</code> でも <code>undefined</code> でもないことが証明されたら、左辺の式が短絡評価されます。</p>
+
+<p>短絡評価とは、上記の <code><em>expr</em></code> 部分が<strong>評価されない</strong>ことを意味します。したがって、評価された場合の副作用は発生しません。(例えば、<code><em>expr</em></code> が関数呼び出しである場合、呼び出しは行われません。)</p>
+
+<p>Null 合体代入も短絡評価されます。これは、<code>x ??= y</code> が以下と等価であることを意味します。</p>
+
+<pre class="brush: js notranslate">x ?? (x = y);</pre>
+
+<p>そして、常に代入が行われる以下と等価ではありません。</p>
+
+<pre class="brush: js notranslate example-bad">x = x ?? y;
+</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="Null_合体代入演算子の使用">Null 合体代入演算子の使用</h3>
+
+<pre class="brush: js notranslate">function config(options) {
+ options.duration ??= 100;
+ options.speed ??= 25;
+ return options;
+}
+
+config({ duration: 125 }); // { duration: 125, speed: 25 }
+config({}); // { duration: 100, speed: 25 }
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ </tr>
+ <tr>
+ <td>{{SpecName('Logical Assignment', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザの互換性">ブラウザの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.logical_nullish_assignment")}}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">Null 合体演算子 (<code>??</code>)</a></li>
+ <li>{{Glossary("Nullish")}}</li>
+ <li>{{Glossary("Truthy")}}</li>
+ <li>{{Glossary("Falsy")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/logical_operators/index.html b/files/ja/web/javascript/reference/operators/logical_operators/index.html
new file mode 100644
index 0000000000..5b2cf76b3a
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/logical_operators/index.html
@@ -0,0 +1,294 @@
+---
+title: 論理演算子
+slug: Web/JavaScript/Reference/Operators/Logical_Operators
+tags:
+ - JavaScript
+ - Operator
+translation_of: Web/JavaScript/Reference/Operators
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<h2 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h2>
+
+<p>{{ 原語併記("論理演算子", "Logical operators") }} は、基本的に真偽(論理)値とともに用いられ真偽値を返します。しかし、<code>&amp;&amp;</code> および <code>||</code> 演算子は真偽値ではない値も使うことができるため、その場合は、真偽値ではない値を返すことがあります。その場合の考え方は以下の「説明」の欄の記載の通りとなります。</p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>論理演算子を以下の表で説明します。:</p>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>演算子</th>
+ <th>使用法</th>
+ <th>説明</th>
+ </tr>
+ <tr>
+ <td>論理 AND(<code>&amp;&amp;</code>)</td>
+ <td><code><em>expr1</em> &amp;&amp; <em>expr2</em></code></td>
+ <td><code>expr1</code> を false と見ることができる場合は、<code>expr1</code> を返します。そうでない場合は、<code>expr2</code> を返します。したがって、真偽値と共に使われた場合、 演算対象の両方が true ならば、<code>&amp;&amp;</code> は、true を返し、そうでなければ、false を返します。</td>
+ </tr>
+ <tr>
+ <td>論理 OR (<code>||</code>)</td>
+ <td><code><em>expr1</em> || <em>expr2</em></code></td>
+ <td><code>expr1</code> を true と見ることができる場合は、<code>expr1</code> を返します。そうでない場合は、<code>expr2</code> を返します。したがって、真偽値と共に使われた場合、 演算対象のどちらかが true ならば、<code>||</code> は、true を返し、両方とも false の場合は、false を返します。</td>
+ </tr>
+ <tr>
+ <td>論理 NOT (<code>!</code>)</td>
+ <td><code>!<em>expr</em></code></td>
+ <td>単一の演算対象が true と見ることができる場合は、false を返します。そうでない場合は、true を返します。</td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code>true</code> に変換できる値は、いわゆる {{Glossary("truthy")}} です。<code>false</code> に変換できる値は、いわゆる {{Glossary("falsy")}} です。</p>
+
+<p><code>false</code> と見ることができる式の例は、null、0、空文字列 ("")、あるいは、<code>undefined</code> と評価されるものです。</p>
+
+<p><code>&amp;&amp;</code> と <code>||</code> 演算子が真偽値ではない値である演算対象とともに用いることができても、それらは、真偽演算子と考えることができます。なぜなら、それらの戻り値は、常に、真偽値と見ることができるからです。</p>
+
+<h3 id=".E3.82.B7.E3.83.A7.E3.83.BC.E3.83.88.E3.82.B5.E3.83.BC.E3.82.AD.E3.83.83.E3.83.88.E8.A9.95.E4.BE.A1" name=".E3.82.B7.E3.83.A7.E3.83.BC.E3.83.88.E3.82.B5.E3.83.BC.E3.82.AD.E3.83.83.E3.83.88.E8.A9.95.E4.BE.A1">ショートサーキット評価</h3>
+
+<p>論理演算子は左から右へ評価されるため、論理演算子で左辺を評価した時点で論理式の結果が確定した場合には右辺の評価を行わないことを、ショートサーキット評価といいます。例えば、A &amp;&amp; Bという論理式があった場合、Aがfalseなら、その時点で式全体の結果はfalseで確定するため、Bがどうであるかについてはチェックしません。:</p>
+
+<ul>
+ <li><code>false &amp;&amp; (<em>anything</em>)</code> をショートサーキット評価すると、false になります。</li>
+ <li><code>true || (<em>anything</em>)</code> をショートサーキット評価すると、true になります。</li>
+</ul>
+
+<p> 上記の式の anything の部分は評価されません。また、<strong>上記の式の anything の部分は (括弧で示しているとおり) ひとつの論理式ですので注意してください。</strong></p>
+
+<p>例えば、以下の 2 つの関数は等価です。</p>
+
+<pre class="brush: js">function shortCircuitEvaluation() {
+  doSomething() || doSomethingElse()
+}
+
+function equivalentEvaluation() {
+  var flag = doSomething();
+  if (!flag) {
+    doSomethingElse();
+  }
+}
+</pre>
+
+<p>しかし、以下の式は等価ではありません。これは<a href="/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence">演算子の優先順位</a>のためであり、右側の演算子をひとつの式にする (必要に応じて括弧でグループ化する) 必要性の重要度を高めています。</p>
+
+<pre class="brush: js">false &amp;&amp; true || true // true を返す
+false &amp;&amp; (true || true) // false を返す</pre>
+
+<h3 id=".E8.AB.96.E7.90.86_AND_.28&amp;&amp;.29" name=".E8.AB.96.E7.90.86_AND_.28&amp;&amp;.29">論理 AND (<code>&amp;&amp;</code>)</h3>
+
+<p>以下のコードは、<code>&amp;&amp;</code> (論理 AND) 演算子の例を示しています。</p>
+
+<pre class="brush: js">a1 = true &amp;&amp; true // t &amp;&amp; t true を返します。
+a2 = true &amp;&amp; false // t &amp;&amp; f false を返します。
+a3 = false &amp;&amp; true // f &amp;&amp; t false を返します。
+a4 = false &amp;&amp; (3 == 4) // f &amp;&amp; f false を返します。
+a5 = "Cat" &amp;&amp; "Dog" // t &amp;&amp; t "Dog" を返します。
+a6 = false &amp;&amp; "Cat" // f &amp;&amp; t false を返します。
+a7 = "Cat" &amp;&amp; false // t &amp;&amp; f false を返します。
+</pre>
+
+<h3 id=".E8.AB.96.E7.90.86_OR_.28||.29" name=".E8.AB.96.E7.90.86_OR_.28||.29">論理 OR (<code>||</code>)</h3>
+
+<p>以下のコードは、<code>||</code> (論理 OR) 演算子の例を示しています。</p>
+
+<pre class="brush: js">o1 = true || true // t || t true を返します。
+o2 = false || true // f || t true を返します。
+o3 = true || false // t || f true を返します。
+o4 = false || (3 == 4) // f || f false を返します。
+o5 = "Cat" || "Dog" // t || t "Cat" を返します。
+o6 = false || "Cat" // f || t "Cat" を返します。
+o7 = "Cat" || false // t || f "Cat" を返します。
+</pre>
+
+<h3 id=".E8.AB.96.E7.90.86_NOT_.28.21.29" name=".E8.AB.96.E7.90.86_NOT_.28.21.29">論理 NOT (<code>!</code>)</h3>
+
+<p>以下のコードは、<code>!</code> (論理 NOT) 演算子の例を示しています。</p>
+
+<pre class="brush: js">n1 = !true // !t false を返します。
+n2 = !false // !f true を返します。
+n3 = !"Cat" // !t false を返します。
+</pre>
+
+<h3 id="Conversion_rules" name="Conversion_rules">変換規則</h3>
+
+<h4 id="Converting_AND_to_OR" name="Converting_AND_to_OR">AND から OR への変換</h4>
+
+<p>Boolean について以下の演算を行います:</p>
+
+<pre class="brush: js">bCondition1 &amp;&amp; bCondition2</pre>
+
+<p>これは以下の演算と等価です:</p>
+
+<pre class="brush: js">!(!bCondition1 || !bCondition2)</pre>
+
+<h4 id="Converting_OR_to_AND" name="Converting_OR_to_AND">OR から AND への変換</h4>
+
+<p>Boolean について以下の演算を行います:</p>
+
+<pre class="brush: js">bCondition1 || bCondition2</pre>
+
+<p>これは以下の演算と等価です:</p>
+
+<pre class="brush: js">!(!bCondition1 &amp;&amp; !bCondition2)</pre>
+
+<h4 id="Converting_between_NOTs" name="Converting_between_NOTs">NOT 間の変換</h4>
+
+<p>Boolean について以下の演算を行います:</p>
+
+<pre class="brush: js">!!bCondition</pre>
+
+<p>これは以下の演算と等価です:</p>
+
+<pre class="brush: js">bCondition</pre>
+
+<h3 id="Removing_nested_parentheses" name="Removing_nested_parentheses">入れ子の括弧を削除する</h3>
+
+<p>論理演算子は左から右へ評価されるため、複雑な式の中にある括弧をいくつかの規則に従って削除することができます。</p>
+
+<h4 id="Removing_nested_AND" name="Removing_nested_AND">入れ子の AND を削除する</h4>
+
+<p>Boolean について以下の複雑な演算を行います:</p>
+
+<pre class="brush: js">bCondition1 || (bCondition2 &amp;&amp; bCondition3)</pre>
+
+<p>これは以下の演算と等価です:</p>
+
+<pre class="brush: js">bCondition1 || bCondition2 &amp;&amp; bCondition3</pre>
+
+<h4 id="Removing_nested_OR" name="Removing_nested_OR">入れ子の OR を削除する</h4>
+
+<p>Boolean について以下の複雑な演算を行います:</p>
+
+<pre class="brush: js">bCondition1 &amp;&amp; (bCondition2 || bCondition3)</pre>
+
+<p>これは以下の演算と等価です:</p>
+
+<pre class="brush: js">!(!bCondition1 || !bCondition2 &amp;&amp; !bCondition3)</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">策定状況</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>最初期の定義</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-11.11')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td>仕様書内のいくつかのセクションで定義: <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.9">Logical NOT Operator</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.11">Binary Logical Operators</a></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-binary-logical-operators')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td>仕様書内のいくつかのセクションで定義: <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-logical-not-operator">Logical NOT Operator</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-binary-logical-operators">Binary Logical Operators</a></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-binary-logical-operators')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td>仕様書内のいくつかのセクションで定義: <a href="http://tc39.github.io/ecma262/#sec-logical-not-operator">Logical NOT Operator</a>, <a href="http://tc39.github.io/ecma262/#sec-binary-logical-operators">Binary Logical Operators</a></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>{{CompatibilityTable}}</div>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>論理 AND (<code>&amp;&amp;</code>)</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ <tr>
+ <td>論理 OR (<code>||</code>)</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ <tr>
+ <td>論理 NOT (<code>!</code>)</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Android</th>
+ <th>Chrome for Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>論理 AND (<code>&amp;&amp;</code>)</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ <tr>
+ <td>論理 OR (<code>||</code>)</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ <tr>
+ <td>論理 NOT (<code>!</code>)</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators">ビット演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Boolean">Boolean</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/logical_or/index.html b/files/ja/web/javascript/reference/operators/logical_or/index.html
new file mode 100644
index 0000000000..8fe1693e8a
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/logical_or/index.html
@@ -0,0 +1,155 @@
+---
+title: 論理和 (||)
+slug: Web/JavaScript/Reference/Operators/Logical_OR
+tags:
+ - JavaScript
+ - Language feature
+ - Logical Operator
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+ - 論理演算子
+translation_of: Web/JavaScript/Reference/Operators/Logical_OR
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>論理和 (<code>||</code>) 演算子 (論理的分割) をオペランドの組み合わせに対して使用すると、オペランドのうち 1 つ以上が true である場合に true になります。一般的には {{jsxref("Boolean")}} (論理) 値で使用されます。その場合は論理値を返します。ただし <code>||</code> 演算子は実際には指定されたオペランドのうち一つの値を返すので、この演算子が論理値以外で使用された場合は、論理値以外の値を返すことになります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-logical-or.html", "shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><em>expr1</em> || <em>expr2</em>
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>expr<strong>1</strong></code> が <code>true</code> に変換できる場合は <code>expr<strong>1</strong></code> を返し、それ以外の場合は <code>expr<strong>2</strong></code> を返します。</p>
+
+<p>ある値が <code>true</code> に変換できる場合、その値は真値 ({{Glossary("truthy")}}) と呼ばれます。ある値が <code>false</code> に変換できる場合、その値は偽値 ({{Glossary("falsy")}}) と呼ばれます。</p>
+
+<p>false に変換されうる式の例を示します。</p>
+
+<ul>
+ <li><code>null</code></li>
+ <li><code>NaN</code></li>
+ <li><code>0</code></li>
+ <li>空文字列 (<code>""</code> または <code>''</code> または <code>``</code>)</li>
+ <li><code>undefined</code></li>
+</ul>
+
+<p><code>||</code> 演算子では論理値以外のオペランドを使用することができますが、返値が常に <a href="/ja/docs/Web/JavaScript/Data_structures#Boolean_type">boolean プリミティブ</a>に変換することが可能であるため、論理演算子と見なすことができます。返値 (または一般的な式) を対応する論理値に明示的に変換するには、二重の<a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_NOT">否定演算子</a>または {{jsxref("Global_Objects/Boolean/Boolean", "Boolean")}} コンストラクターを使用してください。</p>
+
+<h3 id="Short-circuit_evaluation" name="Short-circuit_evaluation">短絡評価</h3>
+
+<p>論理和の式は左から右へと評価され、下記の規則を使用して「短絡」評価が可能なように評価されます。</p>
+
+<p><code>(真値の式) || <em>expr</em></code> は短絡評価で真値の式に評価されます。</p>
+
+<p>短絡とは、上記の <code><em>expr</em></code> の部分が<strong>評価されず</strong>、したがって、これを行うことの副作用が効果を及ぼさないことを意味します (例えば、 <code><em>expr</em></code> が関数呼び出しであった場合、この場所では呼び出されません)。これは、最初のオペランドが評価された時点で、すでに演算子の値が決定しているためです。例を示します。</p>
+
+<pre class="brush: js notranslate">function A(){ console.log('called A'); return false; }
+function B(){ console.log('called B'); return true; }
+
+console.log( B() || A() );
+// 関数呼び出しによって "called B" がログ出力され、
+// それから true (演算子の結果の値) が出力されます。
+</pre>
+
+<h3 id="Operator_precedence" name="Operator_precedence">演算子の優先順位</h3>
+
+<p>以下の式は同じであるように見えるかもしれませんが、異なります。 <code>&amp;&amp;</code> 演算子は <code>||</code> 演算子よりも先に実行されるからです (<a href="/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence">演算子の優先順位</a>参照)。</p>
+
+<pre class="brush: js notranslate">true || false &amp;&amp; false // true を返す。 &amp;&amp; が先に実行されるため
+(true || false) &amp;&amp; false // false を返す。演算子の優先順位が適用されないため</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_OR" name="Using_OR">OR の使用</h3>
+
+<p>以下のコードは <code>||</code> (論理和) 演算子の例を示しています。</p>
+
+<pre class="brush: js notranslate">o1 = true || true // t || t returns true
+o2 = false || true // f || t returns true
+o3 = true || false // t || f returns true
+o4 = false || (3 == 4) // f || f returns false
+o5 = 'Cat' || 'Dog' // t || t returns "Cat"
+o6 = false || 'Cat' // f || t returns "Cat"
+o7 = 'Cat' || false // t || f returns "Cat"
+o8 = '' || false // f || f returns false
+o9 = false || '' // f || f returns ""
+o10 = false || varObject // f || object returns varObject
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> この演算子を使用していくつかの変数に既定値を提供する場合、<em>偽値</em> が使用されないことに注意してください。{{jsxref("null")}} や {{jsxref("undefined")}} をフィルタリングする必要がある場合は、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">Null 合体演算子</a>の使用を検討してください。</p>
+</div>
+
+<h3 id="Conversion_rules_for_booleans" name="Conversion_rules_for_booleans">論理型の変換規則</h3>
+
+<h4 id="Converting_AND_to_OR" name="Converting_AND_to_OR">AND から OR への変換</h4>
+
+<p><strong>論理型</strong>に関する以下の操作は、</p>
+
+<pre class="brush: js notranslate">bCondition1 &amp;&amp; bCondition2</pre>
+
+<p>常に以下のものと等しくなります。</p>
+
+<pre class="brush: js notranslate">!(!bCondition1 || !bCondition2)</pre>
+
+<h4 id="Converting_OR_to_AND" name="Converting_OR_to_AND">OR から AND への変換</h4>
+
+<p><strong>論理型</strong>に関する以下の操作は、</p>
+
+<pre class="brush: js notranslate">bCondition1 || bCondition2</pre>
+
+<p>常に以下のものと等しくなります。</p>
+
+<pre class="brush: js notranslate">!(!bCondition1 &amp;&amp; !bCondition2)</pre>
+
+<h3 id="Removing_nested_parentheses" name="Removing_nested_parentheses">入れ子になった括弧の除去</h3>
+
+<p>論理式は左から右に評価されるので、いくつかのルールに従って複雑な式から括弧を削除することは常に可能です。</p>
+
+<p>以下の<strong>論理型</strong>に関する複合操作は、</p>
+
+<pre class="brush: js notranslate">bCondition1 &amp;&amp; (bCondition2 || bCondition3)</pre>
+
+<p>常に以下のものと等しくなります。</p>
+
+<pre class="brush: js notranslate">!(!bCondition1 || !bCondition2 &amp;&amp; !bCondition3)</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#prod-LogicalORExpression', 'Logical OR expression')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.logical_or")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">Null 合体演算子 (<code>??</code>)</a></li>
+ <li>{{jsxref("Boolean")}}</li>
+ <li>{{Glossary("Truthy")}}</li>
+ <li>{{Glossary("Falsy")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/logical_or_assignment/index.html b/files/ja/web/javascript/reference/operators/logical_or_assignment/index.html
new file mode 100644
index 0000000000..4f9a661684
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/logical_or_assignment/index.html
@@ -0,0 +1,93 @@
+---
+title: 論理和代入 (||=)
+slug: Web/JavaScript/Reference/Operators/Logical_OR_assignment
+tags:
+ - JavaScript
+ - Language feature
+ - Logical Operator
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Logical_OR_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>論理和代入演算子 (<code>x ||= y</code>) は、<code>x</code> が {{Glossary("falsy")}} である場合にのみ代入します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-logical-or-assignment.html")}}</div>
+
+<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><em>expr1</em> ||= <em>expr2</em>
+</pre>
+
+<h2 id="説明">説明</h2>
+
+<h3 id="短絡評価(ショートサーキット)">短絡評価(ショートサーキット)</h3>
+
+<p><a href="/docs/Web/JavaScript/Reference/Operators/Logical_OR">論理和</a>演算子は次のように動作します。</p>
+
+<pre class="brush: js notranslate">x || y;
+// x が truthy の場合 x を返します
+// x が truthy ではない場合 y を返します</pre>
+
+<p>論理和演算子は、1番目のオペランドが既に結果を決定していない場合にのみ、2番目のオペランドの評価を行う短絡評価をします。</p>
+
+<p>論理和代入も短絡評価されます。これは、<code>x ||= y</code> が以下と等価であることを意味します。</p>
+
+<pre class="brush: js notranslate">x || (x = y);
+</pre>
+
+<p>そして、常に代入が行われる以下と等価ではありません。</p>
+
+<pre class="brush: js notranslate example-bad">x = x || y;
+</pre>
+
+<p>注意: この動作は、数学的な代入演算子やビット代入演算子とは異なることに注意してください。</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="デフォルトの内容を設定する">デフォルトの内容を設定する</h3>
+
+<p>"lyrics" 要素が空の場合は、<code><a href="/docs/Web/API/Element/innerHTML">innerHTML</a></code> をデフォルト値に設定します。</p>
+
+<pre class="brush: js notranslate">document.getElementById('lyrics').innerHTML ||= '&lt;i&gt;No lyrics.&lt;/i&gt;'</pre>
+
+<p>ここでの短絡評価は、要素が不必要に更新されることがなく、追加のパースやレンダリング作業、フォーカスの損失などの望ましくない副作用を引き起こすことがないので、特に有益です。</p>
+
+<p>注意: チェック対象の API が返す値に注意してください。空の文字列({{Glossary("falsy")}} な値)が返される場合は、<code>||=</code> を使用する必要があります。それ以外の場合(戻り値が {{jsxref("null")}} または {{jsxref("undefined")}} の場合)は <code>??=</code> 演算子を使用します。</p>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ </tr>
+ <tr>
+ <td>{{SpecName('Logical Assignment', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザの互換性">ブラウザの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.logical_or_assignment")}}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Logical_OR">論理和演算子 (||)</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">Null合体演算子 (<code>??</code>)</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Bitwise_OR_assignment">ビット論理和代入 (<code>|=</code>)</a></li>
+ <li>{{jsxref("Boolean")}}</li>
+ <li>{{Glossary("Truthy")}}</li>
+ <li>{{Glossary("Falsy")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/multiplication/index.html b/files/ja/web/javascript/reference/operators/multiplication/index.html
new file mode 100644
index 0000000000..3921c0c56a
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/multiplication/index.html
@@ -0,0 +1,74 @@
+---
+title: 乗算 (*)
+slug: Web/JavaScript/Reference/Operators/Multiplication
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Multiplication
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>乗算演算子 (<code>*</code>) はオペランドの積を生成します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-multiplication.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> <var>x</var> * <var>y</var>
+</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="数値を使用した乗算">数値を使用した乗算</h3>
+
+<pre class="brush: js notranslate"> 2 * 2 // 4
+-2 * 2 // -4
+</pre>
+
+<h3 id="無限大との乗算">無限大との乗算</h3>
+
+<pre class="brush: js notranslate">Infinity * 0 // NaN
+Infinity * Infinity // Infinity</pre>
+
+<h3 id="非数との乗算">非数との乗算</h3>
+
+<pre class="brush: js notranslate">'foo' * 2 // NaN</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-multiplicative-operators', 'Multiplication operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.multiplication")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Addition">加算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Subtraction">減算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Division">除算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Remainder">剰余演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Exponentiation">べき乗演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Increment">インクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Decrement">デクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_negation">単項マイナス演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_plus">単項プラス演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/multiplication_assignment/index.html b/files/ja/web/javascript/reference/operators/multiplication_assignment/index.html
new file mode 100644
index 0000000000..86e53c206a
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/multiplication_assignment/index.html
@@ -0,0 +1,61 @@
+---
+title: 乗算代入 (*=)
+slug: Web/JavaScript/Reference/Operators/Multiplication_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Multiplication_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>乗算代入演算子 (<code>*=</code>) は、変数に右のオペランドの値を乗算し、結果を変数に代入します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-multiplication-assignment.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> x *= y
+<strong>Meaning:</strong> x = x * y</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="乗算代入の使用">乗算代入の使用</h3>
+
+<pre class="brush: js notranslate">// 次の変数を想定
+// bar = 5
+
+bar *= 2 // 10
+bar *= 'foo' // NaN</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.multiplication_assignment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment">代入演算子</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Multiplication">乗算演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/new.target/index.html b/files/ja/web/javascript/reference/operators/new.target/index.html
new file mode 100644
index 0000000000..b00f08cb4e
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/new.target/index.html
@@ -0,0 +1,113 @@
+---
+title: new.target
+slug: Web/JavaScript/Reference/Operators/new.target
+tags:
+ - Classes
+ - ECMAScript 2015
+ - JavaScript
+ - Language feature
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/new.target
+---
+<div>{{JSSidebar("Operators")}}</div>
+
+<p><strong><code>new.target</code></strong> プロパティを使用すると、関数やコンストラクタが <a href="/ja/docs/Web/JavaScript/Reference/Operators/new">new</a> 演算子を使用して呼び出されたかどうかを検出できます。コンストラクタや関数内で、<a href="/ja/docs/Web/JavaScript/Reference/Operators/new">new</a> 演算子でインスタンス生成すると、<code>new.target</code> はコンストラクタや関数への参照を返します。通常の関数呼び出しの場合、<code>new.target</code> は {{jsxref("undefined")}} です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-newtarget.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new.target</pre>
+
+<h2 id="Description" name="Description">概要</h2>
+
+<p><code>new.target</code> の構文は、<code>new</code> キーワードとドット、プロパティ名 <code>target</code> で構成されています。通常、ドットの左側はプロパティアクセスが行われるオブジェクトですが、ここでの <code>new</code> はオブジェクトではありません。</p>
+
+<p><code>new.target</code> プロパティは、すべての関数で使用できる疑似的なプロパティです。</p>
+
+<p>クラスのコンストラクタでは、構築されたクラスを参照します。</p>
+
+<p>通常の関数では、<a href="/ja/docs/Web/JavaScript/Reference/Operators/new">new</a> 演算子を介して呼び出されたと仮定して、関数自体を参照します。それ以外の場合、<code>new.target</code> は {{jsxref("undefined")}} です。</p>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a>では、<code>new.target</code> は周囲のスコープから継承されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="new.target_in_function_calls" name="new.target_in_function_calls">関数呼び出しにおいての <code>new.target</code> の使用</h3>
+
+<p>通常の関数呼び出しでは(コンストラクタ関数の呼び出しとは反対に)、<code>new.target</code> は {{jsxref("undefined")}} です。これにより、関数がコンストラクタとして <a href="/ja/docs/Web/JavaScript/Reference/Operators/new">new</a> で呼び出されたかを検出できます。</p>
+
+<pre class="brush: js notranslate">function Foo() {
+ if (!new.target) { throw 'Foo() must be called with new' }
+ console.log('Foo instantiated with new')
+}
+
+new Foo() // logs "Foo instantiated with new"
+Foo() // throws "Foo() must be called with new"
+</pre>
+
+<h3 id="new.target_in_constructors" name="new.target_in_constructors">コンストラクタにおいての new.target</h3>
+
+<p>クラスコンストラクタで、<code>new.target</code> は <code>new</code> で直接実行されたコンストラクタを参照します。これは、コンストラクタは親クラスにあり、子コンストラクタからデリゲートされた場合も同様です。</p>
+
+<pre class="brush: js notranslate">class A {
+ constructor() {
+ console.log(new.target.name)
+ }
+}
+
+class B extends A { constructor() { super() } }
+
+let a = new A() // logs "A"
+let b = new B() // logs "B"
+
+class C { constructor() { console.log(new.target) } }
+class D extends C { constructor() { super() } }
+
+let c = new C() // logs class C{constructor(){console.log(new.target);}}
+let d = new D() // logs class D extends C{constructor(){super();}}</pre>
+
+<p class="summary">上記のクラス <code>C</code> と <code>D</code> の例から、<code>new.target</code> は初期化されたクラスのクラス定義を指しているように見えます。たとえば、<code>d</code> を <code>new D()</code> で初期化した場合は、<code>D</code> のクラス定義が出力され、同様に <code>c</code> の場合は <code>C</code> のクラスが出力されます。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-built-in-function-objects', 'Built-in Function Objects')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-built-in-function-objects', 'Built-in Function Objects')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.new_target")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions">関数</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Classes">クラス</a></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Operators/new">new</a></code></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Operators/this">this</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/new/index.html b/files/ja/web/javascript/reference/operators/new/index.html
new file mode 100644
index 0000000000..3e9267d703
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/new/index.html
@@ -0,0 +1,181 @@
+---
+title: new 演算子
+slug: Web/JavaScript/Reference/Operators/new
+tags:
+ - JavaScript
+ - Left-hand-side expressions
+ - Operator
+ - Reference
+ - 左辺値式
+ - 演算子
+translation_of: Web/JavaScript/Reference/Operators/new
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><span class="seoSummary"><strong><code>new</code> 演算子</strong>を使用すると、開発者はユーザー定義のオブジェクト型やコンストラクタ関数を持つ組み込みオブジェクト型のインスタンスを作成することができます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-newoperator.html")}}</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new <var>constructor</var>[([<var>arguments</var>])]</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>constructor</var></code></dt>
+ <dd>オブジェクトインスタンスの型を指定するクラスまたは関数です。</dd>
+</dl>
+
+<dl>
+ <dt><code><var>arguments</var></code></dt>
+ <dd><code><var>constructor</var></code> が呼び出される際の引数のリストです。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+
+<p><strong><code>new</code></strong> 演算子は次のことを行います。</p>
+
+<ol>
+ <li>空白のプレーンな JavaScript オブジェクトを作成します。</li>
+ <li>他のオブジェクトを親プロトタイプとすることで、新しく作成されたオブジェクトと他のオブジェクトをリンク(コンストラクターを設定)します。
+</li>
+ <li>ステップ 1 で新しく作成されたオブジェクトを <code>this</code> コンテキストとして渡します。</li>
+ <li>関数がオブジェクトを返さない場合は <code>this</code> を返します。</li>
+</ol>
+
+<p>ユーザー定義のオブジェクトを生成するには、2 つのステップが必要です。</p>
+
+<ol>
+ <li>関数を記述して、オブジェクトの型を定義します。</li>
+ <li><code>new</code> 演算子を使用して、オブジェクトのインスタンスを生成します。</li>
+</ol>
+
+<p>オブジェクトの型を定義するために、オブジェクトの名称やプロパティを指定する、オブジェクトの型のための関数を作成します。オブジェクトは、別のオブジェクトそのものをプロパティとして持つことができます。後述の例をご覧ください。</p>
+
+<p>コード <code>new <em>Foo</em>(...)</code> を実行すると、以下の処理が行われます:</p>
+
+<ol>
+ <li><code><em>Foo</em>.prototype</code> を継承する、新しいオブジェクトを生成します。</li>
+ <li>指定した引数を伴ってコンストラクター関数 <code><em>Foo</em></code> が呼び出され、<code><a href="/ja/docs/Web/JavaScript/Reference/Operators/this">this</a></code> が新たに生成したオブジェクトに紐づけられます。<code>new <em>Foo</em></code> は <code>new <em>Foo</em>()</code> と等価です。すなわち、引数を指定しない場合は <code><em>Foo</em></code> が引数なしで呼び出されます。</li>
+ <li>コンストラクター関数が返すオブジェクト (null, false, 3.1415 などのプリミティブ型ではないもの) が、<code>new</code> 式の結果になります。コンストラクター関数が明示的にオブジェクトを返さない場合は、ステップ 1 で生成したオブジェクトを代わりに使用します。(通常、コンストラクターは値を返しませんが、通常のオブジェクト生成プロセスをオーバーライドしたい場合はそのようにすることができます。)</li>
+</ol>
+
+<p>以前生成したオブジェクトに、いつでもプロパティを追加できます。例えば <code>car1.color = "black"</code> という構文は、<code>color</code> プロパティを <code>car1</code> に追加して、値として "<code>black</code>" を代入します。しかし、これは他のオブジェクトには影響を与えません。同じ型のすべてのオブジェクトに新たなプロパティを追加するには、<code>Car</code> オブジェクト型の定義に対してプロパティを追加しなければなりません。</p>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype">Function.prototype</a></code> プロパティを使用して、以前定義したオブジェクトに対して共有のプロパティを追加できます。これはオブジェクト型のあるインスタンスのプロパティではなく、関数を使用して生成したすべてのオブジェクトで共有するプロパティを定義します。以下のコードでは <code>Car</code> 型のオブジェクトすべてに対して color プロパティを値 <code>"original color"</code> で定義しています。また、インスタンスオブジェクト <code>car1</code> の color プロパティに文字列の値 "<code>black</code>" を上書きしています。詳しくは <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype">prototype</a> をご覧ください。</p>
+
+<pre class="brush: js notranslate">function Car() {}
+car1 = new Car();
+car2 = new Car();
+
+console.log(car1.color); // undefined
+
+Car.prototype.color = "original color";
+console.log(car1.color); // original color
+
+car1.color = 'black';
+console.log(car1.color); // black
+
+console.log(car1.__proto__.color) //original color
+console.log(car2.__proto__.color) //original color
+console.log(car1.color) // black
+console.log(car2.color) // original color
+</pre>
+
+<div class="note">
+<p><code>new</code> 演算子を記述しなかった場合、<strong>コンストラクターは通常の関数として扱われ</strong>、<em>オブジェクトを作成しません</em>。その際、<code>this</code> の値も異なるものになります。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Object_type_and_object_instance" name="Object_type_and_object_instance">オブジェクトの型とオブジェクトのインスタンス</h3>
+
+<p>自動車用のオブジェクト型を作成したいとします。このオブジェクト型は <code>Car</code> という名前で、make、model、year というプロパティを持たせます。そのために、以下の関数を記述します。</p>
+
+<pre class="brush: js notranslate">function Car(make, model, year) {
+ this.make = make;
+ this.model = model;
+ this.year = year;
+}
+</pre>
+
+<p>これで、以下のように <code>mycar</code> という名前のオブジェクトを生成できます。</p>
+
+<pre class="brush: js notranslate">var mycar = new Car('Eagle', 'Talon TSi', 1993);
+</pre>
+
+<p>この構文は <code>mycar</code> を生成して、プロパティに特定の値を代入しています。<code>mycar.make</code> の値は文字列 "Eagle"、<code>mycar.year</code> の値は整数 1993 などとなります。</p>
+
+<p><code>new</code> を呼び出して、<code>car</code> オブジェクトをいくつも生成できます。例えば、</p>
+
+<pre class="brush: js notranslate">var kenscar = new Car('Nissan', '300ZX', 1992);
+</pre>
+
+<h3 id="Object_property_that_is_itself_another_object" name="Object_property_that_is_itself_another_object">それ自身が別のオブジェクトであるプロパティ</h3>
+
+<p>以下のように、<code>Person</code> という名前のオブジェクトを定義します:</p>
+
+<pre class="brush: js notranslate">function Person(name, age, sex) {
+ this.name = name;
+ this.age = age;
+ this.sex = sex;
+}
+</pre>
+
+<p>そして、以下のように <code>Person</code> オブジェクトのインスタンスを新たに 2 つ生成します。</p>
+
+<pre class="brush: js notranslate">var rand = new Person('Rand McNally', 33, 'M');
+var ken = new Person('Ken Jones', 39, 'M');
+</pre>
+
+<p>さらに <code>Car</code> の定義を、以下のように <code>Person</code> オブジェクトを値としてとる <code>owner</code> プロパティを持つように書き換えます:</p>
+
+<pre class="brush: js notranslate">function Car(make, model, year, owner) {
+ this.make = make;
+ this.model = model;
+ this.year = year;
+ this.owner = owner;
+}
+</pre>
+
+<p>新しいオブジェクトを生成するため、以下のように使用します。</p>
+
+<pre class="brush: js notranslate">var car1 = new Car('Eagle', 'Talon TSi', 1993, rand);
+var car2 = new Car('Nissan', '300ZX', 1992, ken);
+</pre>
+
+<p>この構文では新しいオブジェクトを生成するときに文字列や整数のリテラル値を渡す代わりに、owner のパラメータとしてオブジェクト <code>rand</code> や <code>ken</code> を渡しています。<code>car2</code> の所有者名を調べるには、以下のようにしてプロパティにアクセスできます。</p>
+
+<pre class="brush: js notranslate">car2.owner.name
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-new-operator', 'The new Operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.new")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Function")}}</li>
+ <li>{{jsxref("Reflect.construct()")}}</li>
+ <li>{{jsxref("Object.prototype")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/nullish_coalescing_operator/index.html b/files/ja/web/javascript/reference/operators/nullish_coalescing_operator/index.html
new file mode 100644
index 0000000000..3302e2e02b
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/nullish_coalescing_operator/index.html
@@ -0,0 +1,155 @@
+---
+title: Null 合体 (??)
+slug: Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - nullish coalescing
+translation_of: Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
+---
+<p>{{JSSidebar("Operators")}}</p>
+
+<p><strong>Null 合体演算子 (<code>??</code>)</strong> は論理演算子の一種です。この演算子は左辺が {{jsxref("null")}} または {{jsxref("undefined")}} の場合に右の値を返し、それ以外の場合に左の値を返します。</p>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators">OR 演算子 (<code>||</code>)</a> と違い、<code>null</code> と <code>undefined</code> 以外の <em><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Description">falsy</a></em> な値のときには左の値を返します。つまり、左辺が <code>''</code> や <code>0</code> の場合は左の値を評価して返します。その他の例については以下を参照してください。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-nullishcoalescingoperator.html")}}</div>
+
+<p class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.<br>
+ See <a href="https://github.com/mdn/interactive-examples/pull/1482#issuecomment-553841750">PR #1482</a> regarding the addition of this example.</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>leftExpr</var> ?? <var>rightExpr</var>
+</pre>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>Null 合体演算子は左辺が {{jsxref("null")}} または {{jsxref("undefined")}} の場合に右辺の値を返します。</p>
+
+<h3 id="Assigning_a_default_value_to_a_variable" name="Assigning_a_default_value_to_a_variable">変数にデフォルト値を代入する</h3>
+
+<p>以前は、変数にデフォルト値を代入したい場合、一般的なパターンは OR 演算子 (<code><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_OR_2">||</a></code>) を使用することでした:</p>
+
+<pre class="brush: js notranslate">let foo;
+
+// foo is never assigned any value so it is still undefined
+let someDummyText = foo || 'Hello!';</pre>
+
+<p>しかし、<code>||</code> が論理演算子であるため、左辺の値は評価によって強制的にブール値になり、falsy な値 (<code>0</code>, <code>''</code>, <code>NaN</code>, <code>null</code>, <code>undefined</code>) が返されることはありません。この動作は、<code>0</code> や <code>''</code>, <code>NaN</code> を有効な値と考えている場合、予期せぬ結果を引き起こす可能性があります。</p>
+
+<pre class="brush: js notranslate">let count = 0;
+let text = "";
+
+let qty = count || 42;
+let message = text || "hi!";
+console.log(qty); // 42 and not 0
+console.log(message); // "hi!" and not ""
+</pre>
+
+<p>Null 合体演算子は、左辺の値が <code>null</code> もしくは <code>undefined</code> のどちらか (その他の falsy な値は含みません) に評価された場合にのみ右辺の値を返すことで、この潜在的な危険を回避します:</p>
+
+<pre class="brush: js notranslate">let myText = ''; // An empty string (which is also a falsy value)
+
+let notFalsyText = myText || 'Hello world';
+console.log(notFalsyText); // Hello world
+
+let preservingFalsy = myText ?? 'Hi neighborhood';
+console.log(preservingFalsy); // '' (as myText is neither undefined nor null)
+</pre>
+
+<h3 id="Short-circuiting" name="Short-circuiting">短絡評価</h3>
+
+<p>OR 演算子や AND 演算子と同様に、左辺が <code>null</code> でも <code>undefined</code> でもないことが証明された場合、右辺の式は評価されません。</p>
+
+<pre class="brush: js notranslate">function A() { console.log('A was called'); return undefined;}
+function B() { console.log('B was called'); return false;}
+function C() { console.log('C was called'); return "foo";}
+
+console.log( A() ?? C() );
+// logs "A was called" then "C was called" and then "foo"
+// as A() returned undefined so both expressions are evaluated
+
+console.log( B() ?? C() );
+// logs "B was called" then "false"
+// as B() returned false (and not null or undefined), the right
+// hand side expression was not evaluated
+</pre>
+
+<h3 id="No_chaining_with_AND_or_OR_operators" name="No_chaining_with_AND_or_OR_operators">AND 演算子、OR 演算子とつなげて使わない</h3>
+
+<p>AND 演算子 (<code>&amp;&amp;</code>) と OR 演算子 (<code>||</code>) を直接 <code>??</code> とつなげて使うことはできません。このような場合 <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError">SyntaxError</a></code> が発生します。</p>
+
+<pre class="brush: js example-bad notranslate">null || undefined ?? "foo"; // raises a SyntaxError
+true || undefined ?? "foo"; // raises a SyntaxError</pre>
+
+<p>ただし、カッコを付けて明示的に優先順位を示すのは正しいやり方です。</p>
+
+<pre class="brush: js example-good notranslate">(null || undefined) ?? "foo"; // returns "foo"
+</pre>
+
+<h3 id="Relationship_with_the_optional_chaining_operator_." name="Relationship_with_the_optional_chaining_operator_.">オプショナルチェイニング演算子 (<code>?.</code>) との関係</h3>
+
+<p>Null 合体演算子は、<code>null</code> と <code>undefined</code> を特定の値として扱いますが、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Optional_chaining">オプショナルチェイニング演算子 (<code>?.</code>)</a> も同様の扱いをします。この演算子は、<code>null</code> または <code>undefined</code> である可能性のあるオブジェクトのプロパティにアクセスするのに便利です。</p>
+
+<pre class="brush: js notranslate">let foo = { someFooProp: "hi" };
+
+console.log(foo.someFooProp?.toUpperCase()); // "HI"
+console.log(foo.someBarProp?.toUpperCase()); // undefined
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>次の例では、デフォルト値を設定していますが、<code>null</code> や <code>undefined</code> 以外の値は保持されます。</p>
+
+<pre class="brush: js notranslate">const nullValue = null;
+const emptyText = ""; // falsy
+const someNumber = 42;
+
+const valA = nullValue ?? "default for A";
+const valB = emptyText ?? "default for B";
+const valC = someNumber ?? 0;
+
+console.log(valA); // "default for A"
+console.log(valB); // "" (as the empty string is not null or undefined)
+console.log(valC); // 42
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <p>{{SpecName('ESDraft', '#prod-Nulli', 'nullish coalescing expression')}}</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.nullish_coalescing")}}</p>
+
+<h3 id="Implementation_Progress" name="Implementation_Progress">実装の進捗</h3>
+
+<p>この機能はまだブラウザー間相互運用の安定性に達していないため、以下の表はこの機能の日々の実装状況を示しています。このデータは、 JavaScript の標準テストスイートである <a href="https://github.com/tc39/test262">Test262</a> で、該当する機能テストを Nightly ビルド、または各ブラウザーの JavaScript エンジンの最新リリースで実行することで生成されます。</p>
+
+<div>{{EmbedTest262ReportResultsTable("coalesce-expression")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Optional_chaining">オプショナルチェイニング演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators">論理 OR (<code>||</code>) 演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/Default_parameters">デフォルト引数</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/object_initializer/index.html b/files/ja/web/javascript/reference/operators/object_initializer/index.html
new file mode 100644
index 0000000000..305f7259ed
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/object_initializer/index.html
@@ -0,0 +1,311 @@
+---
+title: オブジェクト初期化子
+slug: Web/JavaScript/Reference/Operators/Object_initializer
+tags:
+ - ECMAScript 2015
+ - JSON
+ - JavaScript
+ - Literal
+ - Methods
+ - Object
+ - Primary Expression
+ - computed
+ - mutation
+ - properties
+translation_of: Web/JavaScript/Reference/Operators/Object_initializer
+---
+<div>{{JsSidebar("Operators")}}</div>
+
+<p>オブジェクトは <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object"><code>new Object()</code></a>、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/create">Object.create()</a></code>、<em>リテラル</em>表記法 (<em>initializer</em> 表記法) を使用して初期化されます。オブジェクト初期化子はオブジェクトのプロパティ名と関連した値のゼロ以上のペアのリストです。中括弧 (<code>{}</code>) で囲まれます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-objectinitializer.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: js">var o = {};
+var o = { a: 'foo', b: 42, c: {} };
+
+var a = 'foo', b = 42, c = {};
+var o = {a: a, b: b, c: c};
+
+var o = {
+ <var>property: function </var>(<var>parameters</var>) {},
+ get <var>property</var>() {},
+ set <var>property</var>(<var>value</var>) {},
+};
+</pre>
+
+<h3 id="New_notations_in_ECMAScript_2015" name="New_notations_in_ECMAScript_2015">ECMAScript 2015 での新しい表記法</h3>
+
+<p>これらの表記をサポートするための互換性の表を参照してください。非サポート環境では、これらの表記は、構文エラーにつながります。</p>
+
+<pre class="brush: js">// Shorthand property names (ES2015)
+var a = 'foo', b = 42, c = {};
+var o = {a, b, c};
+
+// Shorthand method names (ES2015)
+var o = {
+ <var>property</var>(<var>parameters</var>) {}
+};
+
+// Computed property names (ES2015)
+var prop = 'foo';
+var o = {
+ [prop]: 'hey',
+ ['b' + 'ar']: 'there'
+};</pre>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>オブジェクト初期化子は、{{jsxref("Object")}} の初期化を表す式です。オブジェクトはオブジェクトを表す<em>プロパティ</em>で構成されます。オブジェクトプロパティの値は特定の {{Glossary("primitive")}} データ型か他のオブジェクトのどちらかを含みます。</p>
+
+<h3 id="Creating_objects" name="Creating_objects">オブジェクトの生成</h3>
+
+<p>プロパティを持たない空のオブジェクトは下記のように中括弧を記述することで生成されます。</p>
+
+<pre class="brush: js">var object = {};</pre>
+
+<p><em>リテラル</em>表記法、<em>initializer</em> 表記法の利点は中括弧内にプロパティをもつオブジェクトをすばやく生成できる点です。また、カンマで区切られた <code>key: value</code> のペアを記述することでプロパティ値の生成も可能です。以下に、三つのプロパティをもつオブジェクトを生成する方法を記します。キーは <code>"foo"</code>、<code>"age"</code>、<code>"baz"</code> であり、各々のキーの値は、文字列の <code>"bar"</code>、数値の <code>42</code> 、そして <code>baz</code> はオブジェクトがプロパティ値となります。</p>
+
+<pre class="brush: js">var object = {
+ foo: 'bar',
+ age: 42,
+ baz: {myProp: 12},
+}</pre>
+
+<h3 id="Accessing_properties" name="Accessing_properties">プロパティへのアクセス</h3>
+
+<p>一度オブジェクトを生成した後も、プロパティにアクセスすることができます。その方法は「ドット表記法」か「ブラケット表記法」と言われます。詳細については、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">プロパティへのアクセス</a>をご覧ください。</p>
+
+<pre class="brush: js">object.foo; // "bar"
+object['age']; // 42
+
+object.foo = 'baz';
+</pre>
+
+<h3 id="Property_definitions" name="Property_definitions">プロパティの定義</h3>
+
+<p>初期化構文を使用してプロパティを記譜する方法について既に学びました。多くの場合、コード内には、オブジェクトに設定したい変数があります。下記のコードをご覧ください。:</p>
+
+<pre class="brush: js">var a = 'foo',
+ b = 42,
+ c = {};
+
+var o = {
+ a: a,
+ b: b,
+ c: c
+};</pre>
+
+<p>ECMAScript 2015 では、同じことを達成するために利用可能な短い表記があります。:</p>
+
+<pre class="brush: js">var a = 'foo',
+ b = 42,
+ c = {};
+
+// Shorthand property names (ES2015)
+var o = {a, b, c};
+
+// In other words,
+console.log((o.a === {a}.a)); // true
+</pre>
+
+<h4 id="Duplicate_property_names" name="Duplicate_property_names">重複したプロパティ名</h4>
+
+<p>プロパティに対して同じ名前を使用するとき、二番目のプロパティは最初のプロパティを上書きします。</p>
+
+<pre class="brush: js">var a = {x: 1, x: 2};
+console.log(a); // {x: 2}
+</pre>
+
+<p>ECMAScript 5 の strict モードのコードでは、重複したプロパティの名前は {{jsxref("SyntaxError")}} とみなされます。実行時に重複を可能にする計算されたプロパティ名の導入により、ECMAScript 2015 ではこの制限は取り除かれました。</p>
+
+<pre class="brush: js">function haveES2015DuplicatePropertySemantics() {
+ 'use strict';
+ try {
+ ({prop: 1, prop: 2});
+
+ // No error thrown, duplicate property names allowed in strict mode
+ return true;
+ } catch (e) {
+ // Error thrown, duplicates prohibited in strict mode
+ return false;
+ }
+}</pre>
+
+<h3 id="Method_definitions" name="Method_definitions">メソッドの定義</h3>
+
+<p>オブジェクトのプロパティは <a href="/ja/docs/Web/JavaScript/Reference/Functions">function</a>、<a href="/ja/docs/Web/JavaScript/Reference/Functions/get">getter</a> メソッド、<a href="/ja/docs/Web/JavaScript/Reference/Functions/set">setter </a>メソッドも参照することができます</p>
+
+<pre class="brush: js">var o = {
+ <var>property: function </var>(<var>parameters</var>) {},
+ get <var>property</var>() {},
+ set <var>property</var>(<var>value</var>) {},
+};</pre>
+
+<p>ECMAScript 2015 では、省略表記が利用可能です。そのため、キーワード "function" はもはや必要ではありません。</p>
+
+<pre class="brush: js">// Shorthand method names (ES2015)
+var o = {
+ <var>property</var>(<var>parameters</var>) {},
+ *<var>generator</var>() {}
+};</pre>
+
+<p>ECMAScript 2015 では、その値がジェネレーター関数であるプロパティを簡潔に定義する方法があります。:</p>
+
+<pre class="brush: js">var o = {
+ *<var>generator</var>() {
+ ...........
+ }
+};</pre>
+
+<p>ECMAScript 5 では、下記のように記述します (しかし、ES5 はジェネレーターを持たないことに注意してください):</p>
+
+<pre class="brush: js">var o = {
+ generator:<var> function* </var>() {
+ ...........
+ }
+};</pre>
+
+<p>メソッドの詳細や例については、<a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義</a>をご覧ください。</p>
+
+<h3 id="Computed_property_names" name="Computed_property_names">計算されたプロパティ名</h3>
+
+<p>ECMAScript 2015 から、オブジェクト初期化子構文も計算されたプロパティ名をサポートします。括弧 <code>[]</code> の中に式を記述でき、それが計算されてプロパティ名として使用されます。これは、あなたが既にプロパティを読み込んだり設定したりするために使用したことがあるかもしれない、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">メンバー演算子</a>構文のブラケット表記を思い起こさせます。今では、オブジェクトリテラルでも同様な構文を使うことができます:</p>
+
+<pre class="brush: js">// Computed property names (ES2015)
+var i = 0;
+var a = {
+ ['foo' + ++i]: i,
+ ['foo' + ++i]: i,
+ ['foo' + ++i]: i
+};
+
+console.log(a.foo1); // 1
+console.log(a.foo2); // 2
+console.log(a.foo3); // 3
+
+var param = 'size';
+var config = {
+ [param]: 12,
+ ['mobile' + param.charAt(0).toUpperCase() + param.slice(1)]: 4
+};
+
+console.log(config); // {size: 12, mobileSize: 4}</pre>
+
+<h3 id="Spread_properties" name="Spread_properties">スプレッドプロパティ</h3>
+
+<p><a href="https://github.com/tc39/proposal-object-rest-spread">ECMAScript proposal の Rest/Spread プロパティ</a> (ステージ 4) オブジェクトリテラルに<a href="/ja/docs/Web/JavaScript/Reference/Operators/Spread_operator">スプレッド</a>プロパティを追加します。 渡されたオブジェクトから新しいオブジェクトに独自の列挙可能なプロパティをコピーします。</p>
+
+<p>{{jsxref("Object.assign()")}} を使うよりも短いコードで prototype を除いた浅いコピーの作成や、マージしたオブジェクトの作成を書けます。</p>
+
+<pre class="brush: js">var obj1 = { foo: 'bar', x: 42 };
+var obj2 = { foo: 'baz', y: 13 };
+
+var clonedObj = { ...obj1 };
+// Object { foo: "bar", x: 42 }
+
+var mergedObj = { ...obj1, ...obj2 };
+// Object { foo: "baz", x: 42, y: 13 }</pre>
+
+<p>{{jsxref("Object.assign()")}} は <a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/set">setters</a> をトリガーしますが、スプレッド構文はトリガーできません。</p>
+
+<h3 id="Prototype_mutation" name="Prototype_mutation">プロトタイプ変異</h3>
+
+<p><code>__proto__: value</code> 形式、または <code>"__proto__": value</code> 形式のプロパティ定義は、<code>__proto__</code> 名をもつプロパティを生成しません。かわりに、与えられた値がオブジェクトか <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/null"><code>null</code></a> の場合、その値に生成されたオブジェクトの <code>[[Prototype]]</code> を変更します (その値がオブジェクト、または null ではない場合、オブジェクトは変更されません)。</p>
+
+<pre class="brush: js">var obj1 = {};
+assert(Object.getPrototypeOf(obj1) === Object.prototype);
+
+var obj2 = {__proto__: null};
+assert(Object.getPrototypeOf(obj2) === null);
+
+var protoObj = {};
+var obj3 = {'__proto__': protoObj};
+assert(Object.getPrototypeOf(obj3) === protoObj);
+
+var obj4 = {__proto__: 'not an object or null'};
+assert(Object.getPrototypeOf(obj4) === Object.prototype);
+assert(!obj4.hasOwnProperty('__proto__'));
+</pre>
+
+<p>単一のプロトタイプの変異のみ、オブジェクトリテラルに許可されています: すなわち、複数のプロトタイプの変異は構文エラーです。</p>
+
+<p>"colon" 表記法を使用しないプロパティ定義はプロトタイプ変異ではありません。:  任意の他の名称を使用する同様の定義と同じように動作するプロパティ定義です。</p>
+
+<pre class="brush: js">var __proto__ = 'variable';
+
+var obj1 = {__proto__};
+assert(Object.getPrototypeOf(obj1) === Object.prototype);
+assert(obj1.hasOwnProperty('__proto__'));
+assert(obj1.__proto__ === 'variable');
+
+var obj2 = {__proto__() { return 'hello'; }};
+assert(obj2.__proto__() === 'hello');
+
+var obj3 = { ['__prot' + 'o__']: 17 };
+assert(obj3.__proto__ === 17);
+</pre>
+
+<h2 id="Object_literal_notation_vs_JSON" name="Object_literal_notation_vs_JSON">オブジェクトリテラル表記法 vs JSON</h2>
+
+<p>オブジェクトリテラル表記法は <strong>J</strong>ava<strong>S</strong>cript <strong>O</strong>bject <strong>N</strong>otation (<a href="/ja/docs/Glossary/JSON">JSON</a>) とは異なります。それらは似ていますが、それらの間には違いがあります。:</p>
+
+<ul>
+ <li>JSON は、<code>"property": value</code> 構文を使用するプロパティ定義<em>のみ</em>許可します。プロパティ名称は二重引用符で囲まなければなりません。そして、その定義は簡略にすることはできません。</li>
+ <li>JSON ではその値は strings、numbers、arrays、<code>true</code>、<code>false</code>、<code>null</code>、別の (JSON) オブジェクトのみです。</li>
+ <li>関数の値 (上記"{{anch("Method definitions", "メソッド")}}"を参照) は JSON では値を割り当てることができません。</li>
+ <li>{{jsxref("Date")}} のようなオブジェクトは {{jsxref("JSON.parse()")}} の後で string になります。</li>
+ <li>{{jsxref("JSON.parse()")}} は計算されたプロパティ名を拒否し、エラーがスローされます。</li>
+</ul>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">ステータス</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>初期定義。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-11.1.5', 'Object Initializer')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Functions/get">getter</a> と <a href="/ja/docs/Web/JavaScript/Reference/Functions/set">setter</a> が追加されました。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-object-initializer', 'Object Initializer')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>簡略表現メソッド/プロパティの名称と計算されたプロパティ名が追加されました。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object-initializer', 'Object Initializer')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.operators.object_initializer")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors">メンバー演算子</a></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Functions/get">get</a></code> / <code><a href="/ja/docs/Web/JavaScript/Reference/Functions/set">set</a></code></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar">字句文法</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/operator_precedence/index.html b/files/ja/web/javascript/reference/operators/operator_precedence/index.html
new file mode 100644
index 0000000000..69b9c5c76b
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/operator_precedence/index.html
@@ -0,0 +1,483 @@
+---
+title: 演算子の優先順位
+slug: Web/JavaScript/Reference/Operators/Operator_Precedence
+tags:
+ - Guide
+ - JavaScript
+ - precedence
+ - ガイド
+ - 優先順位
+translation_of: Web/JavaScript/Reference/Operators/Operator_Precedence
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>演算子の優先順位</strong>は、演算子が互いにどのように解析されるかを決定します。優先度の高い演算子は、優先度の低い演算子のオペランドになります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-operatorprecedence.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Precedence_And_Associativity" name="Precedence_And_Associativity">優先度と結合性</h2>
+
+<p>以下の表現で記述できる式を考えてみましょう。なお、OP<sub>1</sub> と OP<sub>2</sub> は演算子に置き換わります。</p>
+
+<pre class="syntaxbox notranslate">a OP<sub>1</sub> b OP<sub>2</sub> c</pre>
+
+<p><code>OP<sub>1</sub></code> と <code>OP<sub>2</sub></code> の優先順位 (下記の一覧表を参照) が異なる場合は、優先順位の高い演算子が先に実行され、結合性は関係ありません。コードの中で加算が先に書かれているにもかかわらず、乗算の方が加算よりも優先順位が高く、先に実行されていることを確認してください。</p>
+
+<pre class="brush: js notranslate">console.log(3 + 10 * 2); // 23 を出力
+console.log(3 + (10 * 2)); // 括弧の優先順位が高いので、23 を出力
+console.log((3 + 10) * 2); // 括弧が順位を変更するので 26 を出力
+</pre>
+
+<p>左結合 (左から右) は <code>(a OP<sub>1</sub> b) OP<sub>2</sub> c</code> のように処理されることであり、右結合 (右から左) は <code>a OP<sub>1</sub> (b OP<sub>2</sub> c)</code> のように解釈されることです。代入演算子は右結合なので、このように書くことができます。</p>
+
+<pre class="brush: js notranslate">a = b = 5; // a = (b = 5); と書いたのと同じ
+</pre>
+
+<p>これで、<code>a</code> と <code>b</code> が 5 の値を得るという期待通りの結果を得ることができます。これは代入演算子が代入した値を返すためです。まず <code>b</code> に 5 が設定されます。そして <code>a</code> にも、代入演算子の右オペランドである <code>b = 5</code> が返す 5 が設定されるのです。</p>
+
+<p>他の例として、べき乗演算子だけが右結合性を持ちますが、他の算術演算子は左結合性を持ちます。興味深いのは、結合性や優先順位に関係なく、評価の順序は常に左から右になることです。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td>コード</td>
+ <td>出力結果</td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="brush: js notranslate">
+function echo(name, num) {
+ console.log("Evaluating the " + name + " side");
+ return num;
+}
+// 除算演算子 (/) の場合
+console.log(echo("left", 6) / echo("right", 2));
+</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+Evaluating the left side
+Evaluating the right side
+3
+</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="brush: js notranslate">
+function echo(name, num) {
+ console.log("Evaluating the " + name + " side");
+ return num;
+}
+// べき乗演算子 (**) の場合
+console.log(echo("left", 2) ** echo("right", 3));</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+Evaluating the left side
+Evaluating the right side
+8</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>結合性の違いは、同じ優先順位の演算子が複数存在する場合に現れます。上の例のように演算子が一つだけの場合や、演算子の優先順位が異なる場合は、結合性は出力に影響を与えません。下の例では、同じ演算子が複数使われている場合に、結合性が出力結果にどのような影響を与えるかを見てみましょう。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td>コード</td>
+ <td>出力結果</td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="brush: js notranslate">
+function echo(name, num) {
+ console.log("Evaluating the " + name + " side");
+ return num;
+}
+// 除算演算子 (/) の場合
+console.log(echo("left", 6) / echo("middle", 2) / echo("right", 3));
+</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+Evaluating the left side
+Evaluating the middle side
+Evaluating the right side
+1
+</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="brush: js notranslate">
+function echo(name, num) {
+ console.log("Evaluating the " + name + " side");
+ return num;
+}
+// べき乗演算子 (**) の場合
+console.log(echo("left", 2) ** echo("middle", 3) ** echo("right", 2));
+</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+Evaluating the left side
+Evaluating the middle side
+Evaluating the right side
+512
+</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <pre class="brush: js notranslate">
+function echo(name, num) {
+ console.log("Evaluating the " + name + " side");
+ return num;
+}
+// 左と中央の間のべき乗を括弧で囲んだ場合
+console.log((echo("left", 2) ** echo("middle", 3)) ** echo("right", 2));</pre>
+ </td>
+ <td>
+ <pre class="notranslate">
+Evaluating the left side
+Evaluating the middle side
+Evaluating the right side
+64</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>上記のコードを見てください。<code>6 / 3 / 2</code> は、除算が左結合なので <code>(6 / 3) / 2</code> と同じになります。一方で、べき乗は右結合なので、<code>2 ** 3 ** 2</code> は <code>2 ** (3 ** 2)</code> と同じになります。したがって、<code>(2 ** 3) ** 2</code> とすると上記の表にある通り、演算順序が変わって結果が 64 になります。</p>
+
+<p>優先順位は結合度よりも優先されることを忘れないでください。そのため、割り算とべき乗を交ぜた場合、べき乗は割り算よりも先に計算されます。例えば <code>2 ** 3 / 3 ** 2</code> の結果は 0.8888888888888888 となります。これは <code>(2 ** 3) / (3 ** 2)</code> と同じだからです。</p>
+
+<h3 id="グループ化と短絡の注意">グループ化と短絡の注意</h3>
+
+<p>下記の表では、<strong>グループ化</strong>が最上位の優先順位を持つものとして挙げられています。しかし、特に短絡が発生する場合は、グループ化記号 <code>( … )</code> の中の式が最初に評価されるとは限りません。</p>
+
+<p>短絡は、条件付き評価を表す用語です。例えば、<code>a &amp;&amp; (b + c)</code> という式において、<code>a</code> が {{Glossary("falsy")}} である場合、従属式である <code>(b + c)</code> は括弧で囲まれていても評価されません。この論理的分離演算子 ("OR") は「短絡的」といえるでしょう。論理的分離演算子の他にも、ほかに短絡が発生する演算子には、論理的結合 ("AND") 演算子、Null 合体演算子、オプションチェーン演算子、条件演算子があります。いかに例を示します。</p>
+
+<pre class="brush: js notranslate">a || (b * c); // `a` を最初に評価し、`a` が "truthy" であれば `a` を出力
+a &amp;&amp; (b &lt; c); // `a` を最初に評価し、`a` が "falsy" であれば `a` を出力
+a ?? (b || c); // `a` を最初に評価し、`a` が `null` または `undefined` でなければ `a` を出力
+a?.b.c; // `a` を最初に評価し、then produce `a` if `a` is `null` or `undefined`
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js notranslate">3 &gt; 2 &amp;&amp; 2 &gt; 1
+// returns true
+
+3 &gt; 2 &gt; 1
+// 結果は false となる。3 &gt; 2 は true であり、true は
+// 不等号で 1 に変換されるため、true &gt; 1 は 1 &gt; 1 となり、
+// false となる。(3 &gt; 2) &gt; 1 のように括弧を付けると明確になる。
+</pre>
+
+<h2 id="Table" name="Table">一覧表</h2>
+
+<p>以下の表は優先順位の最も高いもの (21) から最も低いもの (1) の順に並べられています。</p>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>優先順位</th>
+ <th>演算子の種類</th>
+ <th>結合性</th>
+ <th>演算子</th>
+ </tr>
+ <tr>
+ <td>21</td>
+ <td>{{jsxref("Operators/Grouping", "グループ化", "", 1)}}</td>
+ <td>n/a</td>
+ <td><code>( … )</code></td>
+ </tr>
+ <tr>
+ <td colspan="1" rowspan="5">20</td>
+ <td>{{jsxref("Operators/Property_Accessors", "メンバーへのアクセス", "#Dot_notation", 1)}}</td>
+ <td>左から右</td>
+ <td><code>… . …</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Operators/Property_Accessors", "計算値によるメンバーへのアクセス","#Bracket_notation", 1)}}</td>
+ <td>左から右</td>
+ <td><code>… [ … ]</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Operators/new","new")}} (引数リスト付き)</td>
+ <td>なし</td>
+ <td><code>new … ( … )</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Guide/Functions">関数呼び出し</a></td>
+ <td>左から右</td>
+ <td><code>… ( <var>… </var>)</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Optional_chaining">オプショナルチェイニング</a></td>
+ <td>左から右</td>
+ <td><code>?.</code></td>
+ </tr>
+ <tr>
+ <td rowspan="1">19</td>
+ <td>{{jsxref("Operators/new","new")}} (引数リストなし)</td>
+ <td>右から左</td>
+ <td><code>new …</code></td>
+ </tr>
+ <tr>
+ <td rowspan="2">18</td>
+ <td>{{jsxref("Operators/Arithmetic_Operators","後置インクリメント","#Increment", 1)}}</td>
+ <td colspan="1" rowspan="2">なし</td>
+ <td><code>… ++</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Operators/Arithmetic_Operators","後置デクリメント","#Decrement", 1)}}</td>
+ <td><code>… --</code></td>
+ </tr>
+ <tr>
+ <td colspan="1" rowspan="10">17</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_NOT">論理 NOT</a></td>
+ <td colspan="1" rowspan="10">右から左</td>
+ <td><code>! …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_NOT">ビットごとの NOT</a></td>
+ <td><code>~ …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus">単項 +</a></td>
+ <td><code>+ …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_negation">単項 -</a></td>
+ <td><code>- …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Increment">前置インクリメント</a></td>
+ <td><code>++ …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Decrement">前置デクリメント</a></td>
+ <td><code>-- …</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Operators/typeof", "typeof")}}</td>
+ <td><code>typeof …</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Operators/void", "void")}}</td>
+ <td><code>void …</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Operators/delete", "delete")}}</td>
+ <td><code>delete …</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Operators/await", "await")}}</td>
+ <td><code>await …</code></td>
+ </tr>
+ <tr>
+ <td>16</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Exponentiation">べき乗</a></td>
+ <td>右から左</td>
+ <td><code>… ** …</code></td>
+ </tr>
+ <tr>
+ <td rowspan="3">15</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Multiplication">乗算</a></td>
+ <td colspan="1" rowspan="3">左から右</td>
+ <td><code>… * …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Division">除算</a></td>
+ <td><code>… / …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Remainder">剰余</a></td>
+ <td><code>… % …</code></td>
+ </tr>
+ <tr>
+ <td rowspan="2">14</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Addition">加算</a></td>
+ <td colspan="1" rowspan="2">左から右</td>
+ <td><code>… + …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Subtraction">減算</a></td>
+ <td><code>… - …</code></td>
+ </tr>
+ <tr>
+ <td rowspan="3">13</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators">左ビットシフト</a></td>
+ <td colspan="1" rowspan="3">左から右</td>
+ <td><code>… &lt;&lt; …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators">右ビットシフト</a></td>
+ <td><code>… &gt;&gt; …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators">符号なし右ビットシフト</a></td>
+ <td><code>… &gt;&gt;&gt; …</code></td>
+ </tr>
+ <tr>
+ <td rowspan="6">12</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Less_than_operator">小なり</a></td>
+ <td colspan="1" rowspan="6">左から右</td>
+ <td><code>… &lt; …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Less_than__or_equal_operator">小なりイコール</a></td>
+ <td><code>… &lt;= …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Greater_than_operator">大なり</a></td>
+ <td><code>… &gt; …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Greater_than_or_equal_operator">大なりイコール</a></td>
+ <td><code>… &gt;= …</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Operators/in", "in")}}</td>
+ <td><code>… in …</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Operators/instanceof", "instanceof")}}</td>
+ <td><code>… instanceof …</code></td>
+ </tr>
+ <tr>
+ <td rowspan="4">11</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Equality">等価</a></td>
+ <td colspan="1" rowspan="4">左から右</td>
+ <td><code>… == …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Inequality">不等価</a></td>
+ <td><code>… != …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Identity">厳密等価</a></td>
+ <td><code>… === …</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Nonidentity">厳密不等価</a></td>
+ <td><code>… !== …</code></td>
+ </tr>
+ <tr>
+ <td>10</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_AND">ビット単位 AND</a></td>
+ <td>左から右</td>
+ <td><code>… &amp; …</code></td>
+ </tr>
+ <tr>
+ <td>9</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_XOR">ビット単位 XOR</a></td>
+ <td>左から右</td>
+ <td><code>… ^ …</code></td>
+ </tr>
+ <tr>
+ <td>8</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_OR">ビット単位 OR</a></td>
+ <td>左から右</td>
+ <td><code>… | …</code></td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_AND">論理 AND</a></td>
+ <td>左から右</td>
+ <td><code>… &amp;&amp; …</code></td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_OR">論理 OR</a></td>
+ <td>左から右</td>
+ <td><code>… || …</code></td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">Null 合体</a></td>
+ <td>left-to-right</td>
+ <td><code>… ?? …</code></td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Conditional_Operator">条件</a></td>
+ <td>右から左</td>
+ <td><code>… ? … : …</code></td>
+ </tr>
+ <tr>
+ <td rowspan="16">3</td>
+ <td rowspan="16"><a href="/ja/docs/Web/JavaScript/Reference/Operators/Assignment_Operators">代入</a></td>
+ <td rowspan="16">右から左</td>
+ <td><code>… = …</code></td>
+ </tr>
+ <tr>
+ <td><code>… += …</code></td>
+ </tr>
+ <tr>
+ <td><code>… -= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… **= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… *= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… /= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… %= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… &lt;&lt;= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… &gt;&gt;= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… &gt;&gt;&gt;= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… &amp;= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… ^= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… |= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… &amp;&amp;= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… ||= …</code></td>
+ </tr>
+ <tr>
+ <td><code>… ??= …</code></td>
+ </tr>
+ <tr>
+ <td rowspan="2">2</td>
+ <td>{{jsxref("Operators/yield", "yield")}}</td>
+ <td colspan="1" rowspan="2">右から左</td>
+ <td><code>yield …</code></td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Operators/yield*", "yield*")}}</td>
+ <td><code>yield* …</code></td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td><a href="/ja/docs/Web/JavaScript/Reference/Operators/Comma_Operator">カンマ / シーケンス</a></td>
+ <td>左から右</td>
+ <td><code>… , …</code></td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/web/javascript/reference/operators/optional_chaining/index.html b/files/ja/web/javascript/reference/operators/optional_chaining/index.html
new file mode 100644
index 0000000000..e7d213f8fa
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/optional_chaining/index.html
@@ -0,0 +1,203 @@
+---
+title: Optional chaining (?.)
+slug: Web/JavaScript/Reference/Operators/Optional_chaining
+tags:
+ - Chaining
+ - JavaScript
+ - Language feature
+ - Operator
+ - Optional chaining
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Optional_chaining
+---
+<div>{{JSSidebar("Operators")}}</div>
+
+<p><ruby><strong>オプショナルチェイニング</strong><rp> (</rp><rt>optional chaining</rt><rp>) </rp></ruby>演算子 <strong><code>?.</code></strong> は、接続されたオブジェクトチェーンの深くに位置するプロパティの値を、チェーン内の各参照が正しいかどうかを明示的に確認せずに読み込むことを可能にします。 <span class="seoSummary"><code>?.</code> 演算子の機能は <code>.</code> チェーン演算子と似ていますが、参照が {{glossary("nullish")}} ({{JSxRef("null")}} または {{JSxRef("undefined")}}) の場合にエラーとなるのではなく、式が短絡され <code>undefined</code> が返されるところが異なります。</span> 関数呼び出しで使用すると、与えられた関数が存在しない場合、 <code>undefined</code> を返します。</p>
+
+<p>これは、参照が失われた可能性のある連結されたプロパティにアクセスする時、結果的に短く単純な式になります。また、必要なプロパティの存在が保証されていない場合にオブジェクトのコンテンツを探索するのにも役立ちます。</p>
+
+<p>オプショナルチェイニングは、存在しないルートオブジェクトでは使用できません。<code>if (typeof a == "undefined")</code> のようなチェックを置き換えるものではありません。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-optionalchainingoperator.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>obj</var>?.<var>prop</var>
+<var>obj</var>?.[<var>expr</var>]
+<em>arr</em>?.[<var>index</var>]
+<var>func</var>?.(<var>args</var>)
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オプショナルチェイニング演算子は、参照や関数が <code>undefined</code> または <code>null</code> である可能性がある場合でも、接続されたオブジェクトの値に簡単にアクセスする手段を提供します。</p>
+
+<p>たとえば、入れ子構造を持つオブジェクト <code>obj</code> を考えましょう。オプショナルチェイニング演算子なしで深い入れ子になったサブプロパティにアクセスするには、次のように、各プロパティ間の参照を確認する必要があります:</p>
+
+<pre class="brush: js notranslate">let nestedProp = obj.first &amp;&amp; obj.first.second;</pre>
+
+<p><code>obj.first.second</code> の値にアクセスする前に、 <code>obj.first</code> の値が <code>null</code> または <code>undefined</code> でないことを確認します。これにより、 <code>obj.first</code> をテストせずに直接 <code>obj.first.second</code> にアクセスしたときに起きるエラーを防ぐことができます。</p>
+
+<p>しかし、オプショナルチェイニング演算子 (<code>?.</code>) を使えば、<code>obj.first.second</code> にアクセスしようとする前に <code>obj.first</code> の状態を明示的にテストする必要がなくなります:</p>
+
+<pre class="brush: js notranslate">let nestedProp = obj.first?.second;</pre>
+
+<p><code>?.</code> を <code>.</code> の代わりに用いることで、 JavaScript が <code>obj.first.second</code> にアクセスしようとする前に <code>obj.first</code> が <code>null</code> または <code>undefined</code> でないことを暗黙的に確かめるようになります。<code>obj.first</code> が <code>null</code> または <code>undefined</code> であった場合、式が自動的に短絡され、 <code>undefined</code> が返ります。</p>
+
+<p>これは、一時的な変数が作成されないことを除き、次の式と等価です。</p>
+
+<pre class="brush: js notranslate">let temp = obj.first;
+let nestedProp = ((temp === null || temp === undefined) ? undefined : temp.second);
+</pre>
+
+<h3 id="Optional_chaining_with_function_calls" name="Optional_chaining_with_function_calls">関数呼び出しでオプショナルチェイニング演算子を使う</h3>
+
+<p>存在しない可能性がある関数の呼び出しを試行するときに、オプショナルチェイニングを使うことができます。これはたとえば、ユーザーのデバイス上で使えなかったり、実装が古かったりするために使えなかったりする可能性がある API を使うときに役立ちます。</p>
+
+<p>関数呼び出しでオプショナルチェイニング演算子を用いた場合、メソッドが見つからないときは自動的に <code>undefined</code> が返ります。例外はスローされません。</p>
+
+<pre class="brush: js notranslate">let result = someInterface.customMethod?.();</pre>
+
+<div class="blockIndicator note">
+<p><strong>注意:</strong> 上記のようなプロパティの関数がない場合に、<code>?.</code> を使用すると {{JSxRef("TypeError")}} 例外が発生します (<code>someInterface.customMethod is not a function</code>)。</p>
+</div>
+
+<div class="blockIndicator note">
+<p><strong>注意:</strong> <code>someInterface</code> 自体が <code>null</code> または <code>undefined</code> の場合にも、{{JSxRef("TypeError")}} 例外が発生します (<code>someInterface is null</code>)。<code>someInterface</code> 自体が <code>null</code> または <code>undefined</code> の可能性がある場合は、次の位置にも <code>?.</code> を使用しなければなりません。<code>someInterface?.customMethod?.()</code></p>
+</div>
+
+<h4 id="Dealing_with_optional_callbacks_or_event_handlers" name="Dealing_with_optional_callbacks_or_event_handlers">省略可能なコールバックやイベントハンドラを扱う</h4>
+
+<p>コールバックを使う場合や、オブジェクトからメソッドを<a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">分割代入</a>を利用して取り出す場合に、存在しない値がある可能性があり、その存在を検証するまで関数として呼び出せません。その場合 <code>?.</code> を利用することで、検証の必要性を回避できます。</p>
+
+<pre class="brush: js notranslate">// Written as of ES2019
+function doSomething(onContent, onError) {
+ try {
+ // ... do something with the data
+ }
+ catch (err) {
+ if (onError) { // Testing if onError really exists
+ onError(err.message);
+ }
+ }
+}
+</pre>
+
+<pre class="brush: js notranslate">// Using optional chaining with function calls
+function doSomething(onContent, onError) {
+ try {
+ // ... do something with the data
+ }
+ catch (err) {
+ onError?.(err.message); // no exception if onError is undefined
+ }
+}
+</pre>
+
+<h3 id="Optional_chaining_with_expressions" name="Optional_chaining_with_expressions">オプショナルチェイニング演算子を式と組み合わせて使う</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors#Bracket_notation">ブラケット表記法</a>とオプショナルチェイニング演算子を組み合わせることもできます。</p>
+
+<pre class="brush: js notranslate">let nestedProp = obj?.['prop' + 'Name'];
+</pre>
+
+<h3 id="Optional_chaining_not_valid_on_the_left-hand_side_of_an_assignment" name="Optional_chaining_not_valid_on_the_left-hand_side_of_an_assignment">オプショナルチェイニング演算子は代入の左辺値では有効にならない</h3>
+
+<pre class="brush: js notranslate"><code>let object = {};
+object?.property = 1; // Uncaught SyntaxError: Invalid left-hand side in assignment</code></pre>
+
+<h3 id="オプショナルチェイニングにより配列の要素にアクセス">オプショナルチェイニングにより配列の要素にアクセス</h3>
+
+<pre class="brush: js notranslate">let arrayItem = arr?.[42];</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_example" name="Basic_example">基本的な例</h3>
+
+<p>次の例では、マップに存在しない <code>bar</code> メンバの <code>name</code> プロパティを取得しようとしています。したがって、結果は <code>undefined</code> になります。</p>
+
+<pre class="brush: js notranslate">let myMap = new Map();
+myMap.set("foo", {name: "baz", desc: "inga"});
+
+let nameBar = myMap.get("bar")?.name;</pre>
+
+<h3 id="Short-circuiting_evaluation" name="Short-circuiting_evaluation">短絡評価</h3>
+
+<p>式と一緒にオプショナルチェイニング演算子を用いたとき、左側のオペランドが <code>null</code> または <code>undefined</code> である場合にその式は評価されなくなります。</p>
+
+<pre class="brush: js notranslate">let potentiallyNullObj = null;
+let x = 0;
+let prop = potentiallyNullObj?.[x++];
+
+console.log(x); // 0 as x was not incremented
+</pre>
+
+<h3 id="Stacking_the_optional_chaining_operator" name="Stacking_the_optional_chaining_operator">オプショナルチェイニングをつなげて使う</h3>
+
+<p>入れ子になったオブジェクトでは、オプショナルチェイニング演算子を何度でも使えます。</p>
+
+<pre class="brush: js notranslate">let customer = {
+ name: "Carl",
+ details: {
+ age: 82,
+ location: "Paradise Falls" // detailed address is unknown
+ }
+};
+let customerCity = customer.details?.address?.city;
+
+// … this also works with optional chaining function call
+let duration = vacations.trip?.getTime?.();
+</pre>
+
+<h3 id="Combining_with_the_nullish_coalescing_operator" name="Combining_with_the_nullish_coalescing_operator">Null 合体演算子と共に使う</h3>
+
+<p>{{JSxRef("Operators/Nullish_Coalescing_Operator", "Null 合体演算子", '', 1)}}はオプショナルチェイニングの後につけることで、存在しない値があった時、既定値をかわりに使うために利用できます。</p>
+
+<pre class="brush: js notranslate">let customer = {
+ name: "Carl",
+ details: { age: 82 }
+};
+const customerCity = customer?.city ?? "Unknown city";
+console.log(customerCity); // Unknown city</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状態</th>
+ <th scope="col">備考</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><a href="https://tc39.es/proposal-optional-chaining/#sec-scope">"オプショナルチェイニング" 演算子の提案</a></td>
+ <td>Stage 4</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.optional_chaining")}}</p>
+</div>
+
+<h3 id="Implementation_Progress" name="Implementation_Progress">実装の進捗</h3>
+
+<p>この機能はまだブラウザー間相互運用の安定性に達していないため、以下の表はこの機能の日々の実装状況を示しています。このデータは、 JavaScript の標準テストスイートである <a href="https://github.com/tc39/test262">Test262</a> で、該当する機能テストを毎晩のビルド、または各ブラウザーの JavaScript エンジンの最新リリースで実行することで生成されます。</p>
+
+<div>{{EmbedTest262ReportResultsTable("optional-chaining")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Operators/Nullish_Coalescing_Operator", "Null 合体演算子", '', 1)}}</li>
+ <li><a href="https://github.com/tc39/proposals">TC39 proposals</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/pipeline_operator/index.html b/files/ja/web/javascript/reference/operators/pipeline_operator/index.html
new file mode 100644
index 0000000000..02cbc7d0ba
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/pipeline_operator/index.html
@@ -0,0 +1,87 @@
+---
+title: パイプライン演算子 (|>)
+slug: Web/JavaScript/Reference/Operators/Pipeline_operator
+tags:
+ - Chaining
+ - Experimental
+ - JavaScript
+ - Language feature
+ - Operator
+ - Pipeline
+ - パイプライン
+ - 実験的
+ - 演算子
+ - 言語機能
+ - 連結
+translation_of: Web/JavaScript/Reference/Operators/Pipeline_operator
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>実験的なパイプライン演算子 <code>|&gt;</code> (現在はステージ 1 です) は、式の値を関数に接続します。これによって、読みやすい方法で一連の関数呼び出しを作成することができます。結果的に、単一の引数を用いた関数呼び出しの糖衣構文となり、次のように書くことができます。</p>
+
+<pre class="brush: js notranslate">let url = "%21" |&gt; decodeURI;</pre>
+
+<p>これと等価な従来の構文は次のようになります。</p>
+
+<pre class="brush: js notranslate">let url = decodeURI("%21");
+</pre>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>expression</var> |&gt; <var>function</var>
+</pre>
+
+<p>指定された <code><var>expression</var></code> の値が <code><var>function</var></code> に、単一の引数として渡されます。</p>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>expression</var></code></dt>
+ <dd>任意の式です。</dd>
+ <dt><code><var>function</var></code></dt>
+ <dd>任意の関数です。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Chaining_function_calls" name="Chaining_function_calls">関数呼び出しの連結</h3>
+
+<p>パイプライン演算子は、複数の関数の連結を読みやすくすることができます。</p>
+
+<pre class="brush: js notranslate">const double = (n) =&gt; n * 2;
+const increment = (n) =&gt; n + 1;
+
+// パイプライン演算子なし
+double(increment(double(double(5)))); // 42
+
+// パイプライン演算子あり
+5 |&gt; double |&gt; double |&gt; increment |&gt; double; // 42
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('Pipeline operator', '#sec-intro', 'Pipeline operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.pipeline")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://github.com/tc39/proposal-pipeline-operator">Github - Proposal-pipeline-operator</a></li>
+ <li><a href="https://github.com/tc39/proposals">TC39 proposals</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/property_accessors/index.html b/files/ja/web/javascript/reference/operators/property_accessors/index.html
new file mode 100644
index 0000000000..6683586246
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/property_accessors/index.html
@@ -0,0 +1,155 @@
+---
+title: プロパティアクセサー
+slug: Web/JavaScript/Reference/Operators/Property_Accessors
+tags:
+ - JavaScript
+ - Operator
+ - Reference
+ - 演算子
+translation_of: Web/JavaScript/Reference/Operators/Property_Accessors
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>プロパティアクセサー</strong>はオブジェクトのプロパティへのアクセスを提供するもので、ドット表記法またはブラケット表記法を使用します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-propertyaccessors.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">object.property
+object['property']
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>オブジェクトは実際には<em>連想配列</em> (別名 <em>map</em>、 <em>dictionary</em>、 <em>hash</em>、 <em>lookup table</em>) とみなすことができます。この配列における<em>キー</em>はオブジェクトのプロパティ名です。一般的に、オブジェクトのプロパティについて説明する際には、プロパティとメソッドを区別します。しかし、プロパティとメソッドの区別は慣習的なものにすぎません。メソッドは単なるプロパティであり、言わば、例えば値として {{jsxref("Function")}} オブジェクトのインスタンスへの参照を持っているものです。</p>
+
+<p>プロパティにアクセスするには、ドット表記法とブラケット表記法の2通りがあります。</p>
+
+<h3 id="Dot_notation" name="Dot_notation">ドット表記法</h3>
+
+<pre class="brush: js">get = object.property;
+object.property = set;
+</pre>
+
+<p><code>property</code> は有効な JavaScript 識別子である必要があります。例えば <code>object.$1</code> は有効ですが、 <code>object.1</code> は有効ではありません。</p>
+
+<pre class="brush: js">document.createElement('pre');
+</pre>
+
+<p>ここでは、 <code>document</code> から "createElement" という名前のメソッドが検索され、呼び出されます。</p>
+
+<p>指数や小数点を持たない数値リテラルにメソッドを使用する場合、メソッド呼び出しをするドットの前に{{glossary("Whitespace", "ホワイトスペース")}}を入れることで、ドットが小数点とみなされることを防ぐことができます。</p>
+
+<pre class="brush: js">77 .toExponential();
+// or
+77
+.toExponential();
+// or
+(77).toExponential();
+// or
+77..toExponential();
+// or
+77.0.toExponential();
+// because 77. === 77.0, no ambiguity</pre>
+
+<h3 id="Bracket_notation" name="Bracket_notation">ブラケット表記法</h3>
+
+<pre class="brush: js">get = object[property_name];
+object[property_name] = set;
+</pre>
+
+<p><code>property_name</code> は文字列または{{glossary("Symbol", "シンボル")}}です。この文字列は有効な識別子である必要はなく、任意の値、例えば "<code>1foo</code>", "<code>!bar!</code>", または "<code> </code>" (空白) であっても構いません。</p>
+
+<pre class="brush: js">document['createElement']('pre');
+</pre>
+
+<p>これは前の例とまったく同じです。</p>
+
+<p>ブラケット表記法の前には空白を入れることができます。</p>
+
+<pre class="brush: js">document ['createElement']('pre');</pre>
+
+<h3 id="Property_names" name="Property_names">プロパティ名</h3>
+
+<p>プロパティ名は文字列または{{glossary("Symbol", "シンボル")}}です。それ以外の値は、数値を含めて、文字列へ強制変換されます。</p>
+
+<pre class="brush: js">var object = {};
+object['1'] = 'value';
+console.log(object[1]);
+</pre>
+
+<p>これは、 <code>1</code> が <code>'1'</code> に強制変換されるので、 "value" を出力します。</p>
+
+<pre class="brush: js">var foo = {unique_prop: 1}, bar = {unique_prop: 2}, object = {};
+object[foo] = 'value';
+console.log(object[bar]);
+</pre>
+
+<p><code>foo</code> と <code>bar</code> は同じ文字列に変換されるので、こちらも "value" を出力します。 <a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> JavaScript エンジンでは、この文字列は "<code>[object Object]</code>" となるでしょう。</p>
+
+<h3 id="Method_binding" name="Method_binding">メソッドのバインド</h3>
+
+<p>メソッドはそのメソッドが所属するオブジェクトにバインドされているわけではありません。特に、 <code>this</code> はメソッド内で固定されていません。つまり、 <code>this</code> は必ずしもそのメソッドを含んでいるオブジェクトを参照しているとは限りません。 <code>this</code> は関数呼び出し時に「渡される」ものです。<a href="/ja/docs/JavaScript/Reference/Operators/this#Method_binding">メソッドのバインド</a>を参照してください。</p>
+
+<h3 id="Note_on_eval" name="Note_on_eval"><code>eval</code> におけるメモ</h3>
+
+<p>JavaScript 初心者はしばしば、代わりにブラケット表記法を使えるところで {{jsxref("eval", "eval()")}} を使用してしまう間違いを犯します。例えば、以下のような構文がたくさんのスクリプトで見られます。</p>
+
+<pre class="brush: js">x = eval('document.forms.form_name.elements.' + strFormControl + '.value');
+</pre>
+
+<p><code>eval()</code> は低速であり、可能な限り避けるべきです。また、 <code>strFormControl</code> は ID を必要としますが、フォームコントロールの名前と ID は必須ではありません。代わりにブラケット表記法を使った方が良いでしょう。</p>
+
+<pre class="brush: js">x = document.forms['form_name'].elements[strFormControl].value;
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ <th scope="col">状態</th>
+ <th scope="col">備考</th>
+ </tr>
+ </tbody>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-property-accessors', 'Property Accessors')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-property-accessors', 'Property Accessors')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-11.2.1', 'Property Accessors')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1', '#sec-11.2.1', 'Property Accessors')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>初回定義。JavaScript 1.0 で実装。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.property_accessors")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Object")}}</li>
+ <li>{{jsxref("Object.defineProperty()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Optional_chaining">Optional chaining</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/remainder/index.html b/files/ja/web/javascript/reference/operators/remainder/index.html
new file mode 100644
index 0000000000..7bc17ee93d
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/remainder/index.html
@@ -0,0 +1,78 @@
+---
+title: 剰余 (%)
+slug: Web/JavaScript/Reference/Operators/Remainder
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Remainder
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>剰余演算子 (<code>%</code>) は、1つ目のオペランドが2つ目のオペランドで除算されたときに残った剰余を返します。 これは常に配当のサインを取ります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-remainder.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> <var>var1</var> % <var>var2</var>
+</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="正の値の剰余">正の値の剰余</h3>
+
+<pre class="brush: js notranslate"> 12 % 5 // 2
+ 1 % -2 // 1
+ 1 % 2 // 1
+ 2 % 3 // 2
+5.5 % 2 // 1.5
+</pre>
+
+<h3 id="負の値の剰余">負の値の剰余</h3>
+
+<pre class="brush: js notranslate">-12 % 5 // -2
+-1 % 2 // -1
+-4 % 2 // -0</pre>
+
+<h3 id="NaNの剰余">NaNの剰余</h3>
+
+<pre class="brush: js notranslate">NaN % 2 // NaN</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-multiplicative-operators', 'Remainder operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.remainder")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Addition">加算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Subtraction">減算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Multiplication">乗算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Division">除算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Exponentiation">べき乗演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Increment">インクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Decrement">デクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_negation">単項マイナス演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_plus">単項プラス演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/remainder_assignment/index.html b/files/ja/web/javascript/reference/operators/remainder_assignment/index.html
new file mode 100644
index 0000000000..ab7d348b8b
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/remainder_assignment/index.html
@@ -0,0 +1,62 @@
+---
+title: 剰余代入 (%=)
+slug: Web/JavaScript/Reference/Operators/Remainder_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Remainder_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>剰余代入演算子 (<code>%=</code>) は、変数を右辺のオペランドの値で除算し、剰余を変数に代入します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-remainder-assignment.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> x %= y
+<strong>Meaning:</strong> x = x % y</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="剰余代入の使用">剰余代入の使用</h3>
+
+<pre class="brush: js notranslate">// 以下の変数を想定
+// bar = 5
+
+bar %= 2 // 1
+bar %= 'foo' // NaN
+bar %= 0 // NaN</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.remainder_assignment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment">代入演算子</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Remainder">剰余演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/right_shift/index.html b/files/ja/web/javascript/reference/operators/right_shift/index.html
new file mode 100644
index 0000000000..3cd729c321
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/right_shift/index.html
@@ -0,0 +1,79 @@
+---
+title: 右シフト (>>)
+slug: Web/JavaScript/Reference/Operators/Right_shift
+tags:
+ - Bitwise operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Right_shift
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>右シフト演算子 (<code>&gt;&gt;</code>)</strong> (ゼロ埋め右シフト) は、1つ目のオペランドを指定されたビット数だけ右にずらします。右にずらしてあふれたビットは廃棄されます。最も左のビットをコピーしながらずれて入ります。最も左のビットが以前の最も左のビットと同じになるため、符号ビット (最も左のビット) は変化しません。よって「符号維持」という名前です。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-right-shift.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>a</var> &gt;&gt; <var>b</var></code>
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>この演算子は、1つ目のオペランドを指定されたビット数だけ右にずらします。右にずらしてあふれたビットは廃棄されます。最も左のビットをコピーしながらずれて入ります。最も左のビットが以前の最も左のビットと同じになるため、符号ビット (最も左のビット) は変化しません。よって「符号維持」という名前です。</p>
+
+<p>例えば、 <code>9 &gt;&gt;&gt; 2</code> は 2 となります。</p>
+
+<pre class="brush: js notranslate">. 9 (10進数): 00000000000000000000000000001001 (2進数)
+ --------------------------------
+9 &gt;&gt;&gt; 2 (10進数): 00000000000000000000000000000010 (2進数) = 2 (10進数)
+</pre>
+
+<p>同様に、 <code>-9 &gt;&gt; 2</code> は符号が保存されるため、 <code>-3</code> になります。</p>
+
+<pre class="brush: js notranslate">. -9 (10進数): 11111111111111111111111111110111 (2進数)
+ --------------------------------
+-9 &gt;&gt; 2 (10進数): 11111111111111111111111111111101 (2進数) = -3 (10進数)
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_right_shift" name="Using_right_shift">右シフトの使用</h3>
+
+<pre class="brush: js notranslate"> 9 &gt;&gt; 2; // 2
+-9 &gt;&gt; 2; // -3
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-bitwise-shift-operators', 'Bitwise Shift Operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.right_shift")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise">JavaScript ガイドのビット毎演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Right_shift_assignment">右シフト代入演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/right_shift_assignment/index.html b/files/ja/web/javascript/reference/operators/right_shift_assignment/index.html
new file mode 100644
index 0000000000..6ff0bb1cba
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/right_shift_assignment/index.html
@@ -0,0 +1,61 @@
+---
+title: 右シフト代入 (>>=)
+slug: Web/JavaScript/Reference/Operators/Right_shift_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Right_shift_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>右シフト代入演算子 (<code>&gt;&gt;=</code>) は、指定された量のビットを右に移動し、結果を変数に代入します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-right-shift-assignment.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> x &gt;&gt;= y
+<strong>Meaning:</strong> x = x &gt;&gt; y</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="右シフト代入の使用">右シフト代入の使用</h3>
+
+<pre class="brush: js notranslate">let a = 5; // (00000000000000000000000000000101)
+a &gt;&gt;= 2; // 1 (00000000000000000000000000000001)
+
+let b = -5; // (-00000000000000000000000000000101)
+b &gt;&gt;= 2; // -2 (-00000000000000000000000000000010)</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.right_shift_assignment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment">代入演算子</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Right_shift">右シフト演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/special/index.html b/files/ja/web/javascript/reference/operators/special/index.html
new file mode 100644
index 0000000000..cb220a008d
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/special/index.html
@@ -0,0 +1,5 @@
+---
+title: Special
+slug: Web/JavaScript/Reference/Operators/Special
+---
+This page was auto-generated because a user created a sub-page to this page.
diff --git a/files/ja/web/javascript/reference/operators/special_operators/index.html b/files/ja/web/javascript/reference/operators/special_operators/index.html
new file mode 100644
index 0000000000..febf3ac3d6
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/special_operators/index.html
@@ -0,0 +1,5 @@
+---
+title: Special Operators
+slug: Web/JavaScript/Reference/Operators/Special_Operators
+---
+This page was auto-generated because a user created a sub-page to this page.
diff --git a/files/ja/web/javascript/reference/operators/spread_syntax/index.html b/files/ja/web/javascript/reference/operators/spread_syntax/index.html
new file mode 100644
index 0000000000..d433ed2b34
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/spread_syntax/index.html
@@ -0,0 +1,258 @@
+---
+title: スプレッド構文
+slug: Web/JavaScript/Reference/Operators/Spread_syntax
+tags:
+ - ECMAScript 2015
+ - Iterator
+ - JavaScript
+ - Language feature
+ - Reference
+ - イテレーター
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Spread_syntax
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>スプレッド構文</strong> (<code>...</code>) を使うと、配列式や文字列などの反復可能オブジェクトを、0 個以上の引数 (関数呼び出しの場合) や要素 (配列リテラルの場合) を期待された場所で展開したり、オブジェクト式を、0 個以上のキーと値のペア (オブジェクトリテラルの場合) を期待された場所で展開したりすることができます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-spreadsyntax.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p>関数呼び出しの場合:</p>
+
+<pre class="syntaxbox notranslate"><var>myFunction</var>(...<var>iterableObj</var>);
+</pre>
+
+<p>配列リテラルや文字列の場合:</p>
+
+<pre class="syntaxbox notranslate">[...<var>iterableObj</var>, '4', 'five', 6];</pre>
+
+<p>オブジェクトリテラルの場合 (ECMAScript 2018 の新機能)</p>
+
+<pre class="syntaxbox notranslate">let <var>objClone</var> = { ...<var>obj</var> };</pre>
+
+<h2 id="Rest_syntax_parameters" name="Rest_syntax_parameters">残余構文 (引数)</h2>
+
+<p>残余構文はスプレッド構文と外見がよく似ていますが、配列やオブジェクトの<em>分割代入</em>に使われます。</p>
+
+<p>こちらはスプレッド構文とは逆の働きといえます。スプレッド構文が要素を展開するのに対して、残余構文は複数の要素を集約して 1 つのオブジェクトに「濃縮」します。{{jsxref("Functions/rest_parameters", "残余引数", "", 1)}}を参照してください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Spread_in_function_calls" name="Spread_in_function_calls">関数呼び出しでの展開</h3>
+
+<h4 id="Replace_apply" name="Replace_apply">apply() を置き換える</h4>
+
+<p>配列の要素を引数にして関数を呼び出すには {{jsxref("Function.prototype.apply()")}} を使うのが一般的です。</p>
+
+<pre class="brush: js notranslate">function myFunction(x, y, z) { }
+let args = [0, 1, 2];
+myFunction.apply(null, args);</pre>
+
+<p>スプレッド構文を使うと、上のコードは次のように書くことができます。</p>
+
+<pre class="brush: js notranslate">function myFunction(x, y, z) { }
+let args = [0, 1, 2];
+myFunction(...args);</pre>
+
+<p>スプレッド構文は、引数の何番目でも使えます。また、複数回使えます。</p>
+
+<pre class="brush: js notranslate">function myFunction(v, w, x, y, z) { }
+let args = [0, 1];
+myFunction(-1, ...args, 2, ...[3]);</pre>
+
+<h4 id="Apply_for_new" name="Apply_for_new">new 演算子の適用</h4>
+
+<p>{{jsxref("Operators/new", "new")}} によってコンストラクターを呼び出すとき、配列と <code>apply()</code> を<strong>直接</strong>使用することはできません (<code>apply()</code> は <code>[[Call]]</code> を実行するのであり <code>[[Construct]]</code> ではない)。ただし、配列はスプレッド構文のおかげで簡単に <code>new</code> を使用することができます。</p>
+
+<pre class="brush: js notranslate">let dateFields = [1970, 0, 1]; // 1 Jan 1970
+let d = new Date(...dateFields);
+</pre>
+
+<p>スプレッド構文を使わずに同じ結果を得るには、専用の関数を使う<strong>間接的</strong>な手段を取らざるをえません。</p>
+
+<pre class="brush: js notranslate">function applyAndNew(constructor, args) {
+ function partial () {
+ return constructor.apply(this, args);
+ };
+ if (typeof constructor.prototype === "object") {
+ partial.prototype = Object.create(constructor.prototype);
+ }
+ return partial;
+}
+
+
+function myConstructor () {
+ console.log("arguments.length: " + arguments.length);
+ console.log(arguments);
+ this.prop1="val1";
+ this.prop2="val2";
+};
+
+let myArguments = ["hi", "how", "are", "you", "mr", null];
+let myConstructorWithArguments = applyAndNew(myConstructor, myArguments);
+
+console.log(new myConstructorWithArguments);
+// (internal log of myConstructor): arguments.length: 6
+// (internal log of myConstructor): ["hi", "how", "are", "you", "mr", null]
+// (log of "new myConstructorWithArguments"): {prop1: "val1", prop2: "val2"}</pre>
+
+<h3 id="Spread_in_array_literals" name="Spread_in_array_literals">配列リテラルでのスプレッド構文</h3>
+
+<h4 id="A_more_powerful_array_literal" name="A_more_powerful_array_literal">より強力な配列リテラル</h4>
+
+<p>スプレッド構文を使用しない場合、既存の配列を一部として使用して新しい配列を作成するには、配列リテラル構文は十分ではなく、{{jsxref("Array.prototype.push", "push()")}}, {{jsxref("Array.prototype.splice", "splice()")}}, {{jsxref("Array.prototype.concat", "concat()")}} などを組み合わせて使う高圧的なコードを使用しなければなりません。</p>
+
+<pre class="brush: js notranslate">let parts = ['shoulders', 'knees'];
+let lyrics = ['head', ...parts, 'and', 'toes'];
+// ["head", "shoulders", "knees", "and", "toes"]
+</pre>
+
+<p>関数の引数と同様に、<code>...</code> は配列リテラルのどこでも、何回でも使えます。</p>
+
+<h4 id="Copy_an_array" name="Copy_an_array">配列を複製する</h4>
+
+<pre class="brush: js notranslate">let arr = [1, 2, 3];
+let arr2 = [...arr]; // arr.slice() のような動きです
+
+arr2.push(4);
+// arr2 は [1, 2, 3, 4] になります
+// arr は変更されません
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>メモ:</strong> コピーは 1 段階の深さで行われます。そのため、次の例のような多次元配列のようなオブジェクトをコピーする場合には適さないでしょう。({{jsxref("Object.assign()")}} についても同じことが言えます。)</p>
+
+<pre class="brush: js example-bad notranslate">let a = [[1], [2], [3]];
+let b = [...a];
+
+b.shift().shift();
+// 1
+
+// あらら、配列 'a' も影響を受けちゃった。
+a
+// [[], [2], [3]]
+</pre>
+</div>
+
+<h4 id="A_better_way_to_concatenate_arrays" name="A_better_way_to_concatenate_arrays">配列を連結するより良い方法</h4>
+
+<p>ある配列を既存の配列の末尾に連結するには、{{jsxref("Array.prototype.concat()")}} がよく使われます。スプレッド構文を使用しないと、これは次のように行われます。</p>
+
+<pre class="brush: js notranslate">let arr1 = [0, 1, 2];
+let arr2 = [3, 4, 5];
+
+// arr2 のすべての要素を arr1 に追加する
+arr1 = arr1.concat(arr2);</pre>
+
+<p>スプレッド構文を使うと、次のように書けます。</p>
+
+<pre class="brush: js notranslate">let arr1 = [0, 1, 2];
+let arr2 = [3, 4, 5];
+
+arr1 = [...arr1, ...arr2];
+// arr1 は [0, 1, 2, 3, 4, 5] となる
+// 注: これ以外に const を使用すると、TypeError (invalid assignment) が発生します
+</pre>
+
+<p>{{jsxref("Array.prototype.unshift()")}} は、値の配列を既存の配列の先頭に挿入するためによく使われます。スプレッド構文を使用しないと、これは次のように行われます。</p>
+
+<pre class="brush: js notranslate">let arr1 = [0, 1, 2];
+let arr2 = [3, 4, 5];
+
+// arr2 のすべての要素を arr1 へ移植します
+Array.prototype.unshift.apply(arr1, arr2)
+
+// arr1 is now [3, 4, 5, 0, 1, 2]</pre>
+
+<p>スプレッド構文を使うと、次のようになります。</p>
+
+<pre class="brush: js notranslate">let arr1 = [0, 1, 2];
+let arr2 = [3, 4, 5];
+
+arr1 = [...arr2, ...arr1];
+// arr1 is now [3, 4, 5, 0, 1, 2]
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>メモ:</strong> <code>unshift()</code> とは異なり、これは新しい <code>arr1</code> を生成しており、その場では元の <code>arr1</code> を変更しません</p>
+</div>
+
+<h3 id="Spread_in_object_literals" name="Spread_in_object_literals">Object リテラルで使う</h3>
+
+<p><a href="https://github.com/tc39/proposal-object-rest-spread">Rest/Spread Properties for ECMAScript</a> proposal (ES2018) では、{{jsxref("Operators/Object_initializer", "オブジェクトリテラル", 1)}}でのスプレッド構文が追加されています。スプレッド構文の対象となるオブジェクトの列挙可能なプロパティを、新しいオブジェクトにコピーします。</p>
+
+<p>浅いコピー (プロトタイプを除く) の作成や、マージしたオブジェクトの作成が {{jsxref("Object.assign()")}} を使うよりも短いコードで書けます。</p>
+
+<pre class="brush: js notranslate">let obj1 = { foo: 'bar', x: 42 };
+let obj2 = { foo: 'baz', y: 13 };
+
+let clonedObj = { ...obj1 };
+// Object { foo: "bar", x: 42 }
+
+let mergedObj = { ...obj1, ...obj2 };
+// Object { foo: "baz", x: 42, y: 13 }</pre>
+
+<p>{{jsxref("Object.assign()")}} は{{jsxref("Functions/set", "セッター")}}を起動しますが、スプレッド構文は起動しないことに注意してください。</p>
+
+<p>スプレッド構文は {{jsxref("Object.assign()")}} 関数を置き換えたり模倣することはできないことに注意してください。</p>
+
+<pre class="brush: js notranslate">let obj1 = { foo: 'bar', x: 42 };
+let obj2 = { foo: 'baz', y: 13 };
+const merge = ( ...objects ) =&gt; ( { ...objects } );
+
+let mergedObj1 = merge (obj1, obj2);
+// Object { 0: { foo: 'bar', x: 42 }, 1: { foo: 'baz', y: 13 } }
+
+let mergedObj2 = merge ({}, obj1, obj2);
+// Object { 0: {}, 1: { foo: 'bar', x: 42 }, 2: { foo: 'baz', y: 13 } }</pre>
+
+<p>上記の例では、スプレッド構文は期待通りに動作しません。残りの引数があるため、引数の<em>配列</em>がオブジェクトリテラルにとして展開されます。</p>
+
+<h3 id="Only_for_iterables" name="Only_for_iterables">反復可能オブジェクトにのみ利用可能</h3>
+
+<p>オブジェクト自体は反復可能ではありませんが、配列の中で使用したり、<code>map()</code>, <code>reduce()</code>, <code>assign()</code> などの反復関数と共に使用したりすることで反復可能になります。2 つのオブジェクトをスプレッド演算子で結合する場合は、結合時に別の反復処理関数を使用することを前提としています。</p>
+
+<p>スプレッド構文 (スプレッドプロパティの場合を除く) は、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator">反復可能</a>オブジェクトにのみ適用できます。</p>
+
+<pre class="brush: js notranslate">let obj = {'key1': 'value1'};
+let array = [...obj]; // TypeError: obj is not iterable
+</pre>
+
+<h3 id="Spread_with_many_values" name="Spread_with_many_values">大量の値を展開する場合</h3>
+
+<p>JavaScript エンジンには、引数の個数に上限があります。関数呼び出しでのスプレッド構文では、引数の個数がその上限を超えてしまう可能性に留意してください。詳細は {{jsxref("Function.prototype.apply", "apply()")}} のページを参照してください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array-initializer', 'Array initializer')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object-initializer', 'Object initializer')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.spread")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Functions/rest_parameters", "残余引数", "", 1)}} (also ‘<code>...</code>’)</li>
+ <li>{{jsxref("Function.prototype.apply()")}} (also ‘<code>...</code>’)</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/strict_equality/index.html b/files/ja/web/javascript/reference/operators/strict_equality/index.html
new file mode 100644
index 0000000000..a3bc1e89d7
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/strict_equality/index.html
@@ -0,0 +1,108 @@
+---
+title: 厳密等価 (===)
+slug: Web/JavaScript/Reference/Operators/Strict_equality
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Strict_equality
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>厳密等価演算子 (<code>===</code>) は、二つのオペランドが等しいことを検査し、論理値で結果を返します <a href="/ja/docs/Web/JavaScript/Reference/Operators/Equality">等価</a>演算子とは異なり、厳密等価演算子はオペランドの型が異なる場合、常に異なるものと判断します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-strict-equality.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">x === y</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>厳密等価演算子 (<code>===</code> および <code>!==</code>) は、<a class="external external-icon" href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6" rel="noopener">厳密等価比較アルゴリズム</a>を使用して二つのオペランドを比較します。</p>
+
+<ul>
+ <li>オペランドの型が異なる場合は、 <code>false</code> を返します。</li>
+ <li>両方のオペランドがオブジェクトである場合、同じオブジェクトを指している場合に限り <code>true</code> を返します。</li>
+ <li>両方のオペランドが <code>null</code> または両方のオペランドが <code>undefined</code> であった場合は <code>true</code> を返します。</li>
+ <li>どちらかのオペランドが <code>NaN</code> であった場合は <code>false</code> を返します。</li>
+ <li>それ以外の場合は、二つのオペランドの値を比較します。
+ <ul>
+ <li>数値型は同じ値の数値である必要があります。 <code>+0</code> と <code>-0</code> は同じ値と見なされます。</li>
+ <li>文字列型は同じ文字が同じ順序で並んでいる必要があります。</li>
+ <li>論理型は両方が <code>true</code> であるか両方が <code>false</code> である必要があります。</li>
+ </ul>
+ </li>
+</ul>
+
+<p>この演算子と<a href="/ja/docs/Web/JavaScript/Reference/Operators/Equality">等価</a> (<code>==</code>) 演算子の最も顕著な違いは、オペランドの型が異なる場合、 <code>==</code> 演算子は比較前に同じ型に変換しようとすることです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Comparing_operands_of_the_same_type" name="Comparing_operands_of_the_same_type">オペランドが同じ型である場合の比較</h3>
+
+<pre class="brush: js notranslate">console.log("hello" === "hello"); // true
+console.log("hello" === "hola"); // false
+
+console.log(3 === 3); // true
+console.log(3 === 4); // false
+
+console.log(true === true); // true
+console.log(true === false); // false
+
+console.log(null === null); // true</pre>
+
+<h3 id="Comparing_operands_of_different_types" name="Comparing_operands_of_different_types">オペランドが異なる方である場合の比較</h3>
+
+<pre class="brush: js notranslate">console.log("3" === 3); // false
+
+console.log(true === 1); // false
+
+console.log(null === undefined); // false</pre>
+
+<h3 id="オブジェクトの比較">オブジェクトの比較</h3>
+
+<pre class="brush: js notranslate">const object1 = {
+ name: "hello"
+}
+
+const object2 = {
+ name: "hello"
+}
+
+console.log(object1 === object2); // false
+console.log(object1 === object1); // true</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-equality-operators', 'Equality operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.strict_inequality")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Equality">等価演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Inequality">不等価演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Strict_equality">厳密等価演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/strict_inequality/index.html b/files/ja/web/javascript/reference/operators/strict_inequality/index.html
new file mode 100644
index 0000000000..189e872104
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/strict_inequality/index.html
@@ -0,0 +1,102 @@
+---
+title: 厳密不等価 (!==)
+slug: Web/JavaScript/Reference/Operators/Strict_inequality
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Strict_inequality
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>厳密不等価演算子 (<code>!==</code>) は、二つのオペランドが等しくないことを検査し、論理値で結果を返します <a href="/ja/docs/Web/JavaScript/Reference/Operators/Inequality">不等価</a>演算子とは異なり、厳密不等価演算子はオペランドの型が異なる場合、常に異なると判断します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-strict-equality.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">x !== y</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>厳密不等価演算子は、オペランドが等しくないことを検査します。これは<a href="/ja/docs/Web/JavaScript/Reference/Operators/Strict_equality">厳密等価</a>演算子の逆に当たるので、以下の2行は常に同じ結果を生み出します。</p>
+
+<pre class="brush: js notranslate">x !== y
+
+!(x === y)</pre>
+
+<p>比較アルゴリズムの詳細については、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Strict_equality">厳密等価</a>演算子のページをご覧ください。</p>
+
+<p>厳密等価演算子とと同様に、厳密不等価演算子はオペランドの型が異なると、常に異なるものと見なします。</p>
+
+<pre class="brush: js notranslate">3 !== "3"; // true</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Comparing_operands_of_the_same_type" name="Comparing_operands_of_the_same_type">オペランドが同じ型である場合の比較</h3>
+
+<pre class="brush: js notranslate">console.log("hello" !== "hello"); // false
+console.log("hello" !== "hola"); // true
+
+console.log(3 !== 3); // false
+console.log(3 !== 4); // true
+
+console.log(true !== true); // false
+console.log(true !== false); // true
+
+console.log(null !== null); // false</pre>
+
+<h3 id="Comparing_operands_of_different_types" name="Comparing_operands_of_different_types">オペランドが異なる方である場合の比較</h3>
+
+<pre class="brush: js notranslate">console.log("3" !== 3); // true
+
+console.log(true !== 1); // true
+
+console.log(null !== undefined); // true</pre>
+
+<h3 id="オブジェクトの比較">オブジェクトの比較</h3>
+
+<pre class="brush: js notranslate">const object1 = {
+ name: "hello"
+}
+
+const object2 = {
+ name: "hello"
+}
+
+console.log(object1 !== object2); // true
+console.log(object1 !== object1); // false</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-equality-operators', 'Equality operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.strict_inequality")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Equality">等価演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Inequality">不等価演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Strict_equality">厳密等価演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/subtraction/index.html b/files/ja/web/javascript/reference/operators/subtraction/index.html
new file mode 100644
index 0000000000..499b95bd50
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/subtraction/index.html
@@ -0,0 +1,68 @@
+---
+title: 減算 (-)
+slug: Web/JavaScript/Reference/Operators/Subtraction
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Subtraction
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>減算演算子 (<code>-</code>) は2つのオペランドを減算し、それらの差を生成します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-subtraction.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> <var>x</var> - <var>y</var>
+</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="数値による減算">数値による減算</h3>
+
+<pre class="brush: js notranslate">5 - 3 // 2
+3 - 5 // -2</pre>
+
+<h3 id="非数による減算">非数による減算</h3>
+
+<pre class="brush: js notranslate">'foo' - 3 // NaN</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-subtraction-operator-minus', 'Subtraction operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.subtraction")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Addition">加算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Multiplication">乗算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Division">除算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Remainder">剰余演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Exponentiation">べき乗演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Increment">インクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Decrement">デクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_negation">単項マイナス演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_plus">単項プラス演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/subtraction_assignment/index.html b/files/ja/web/javascript/reference/operators/subtraction_assignment/index.html
new file mode 100644
index 0000000000..67fecfed23
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/subtraction_assignment/index.html
@@ -0,0 +1,61 @@
+---
+title: 減算代入 (-=)
+slug: Web/JavaScript/Reference/Operators/Subtraction_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Subtraction_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>減算代入演算子 (<code>-=</code>) は、変数から右辺のオペランドの値を減算し、結果を変数に代入します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-subtraction-assignment.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> x -= y
+<strong>Meaning:</strong> x = x - y</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="減算代入の使用">減算代入の使用</h3>
+
+<pre class="brush: js notranslate">// 次の変数を想定
+// bar = 5
+
+bar -= 2 // 3
+bar -= 'foo' // NaN</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.subtraction_assignment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment">代入演算子</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Subtraction">減算演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/super/index.html b/files/ja/web/javascript/reference/operators/super/index.html
new file mode 100644
index 0000000000..f4787e8d5f
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/super/index.html
@@ -0,0 +1,176 @@
+---
+title: super
+slug: Web/JavaScript/Reference/Operators/super
+tags:
+ - Classes
+ - ECMAScript 2015
+ - JavaScript
+ - Language feature
+ - Left-hand-side expressions
+ - Operator
+translation_of: Web/JavaScript/Reference/Operators/super
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>super</strong> キーワードは、オブジェクトの親の関数を呼び出すために使用できます。</p>
+
+<p><code>super.prop</code> および <code>super[expr]</code> 式は、<a href="/ja/docs/Web/JavaScript/Reference/Classes">class</a> と <a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">オブジェクトリテラル</a> の両方におけるあらゆる<a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義</a>で有効です。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">super([arguments]); // 親コンストラクターを呼び出します。
+super.functionOnParent([arguments]);
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>コンストラクターで使用する場合、<code>super</code> キーワードを単独で置き、<code>this</code> キーワードが使われる前に使用する必要があります。<code>super</code> キーワードは、親オブジェクトの関数を呼び出すためにも使用できます。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<h3 id="Using_super_in_classes" name="Using_super_in_classes">クラス内での <code>super</code> の使用</h3>
+
+<p>このコードスニペットは、<a href="https://github.com/GoogleChrome/samples/blob/gh-pages/classes-es6/index.html">classes sample</a> (<a href="https://googlechrome.github.io/samples/classes-es6/index.html">実際のデモ</a>) からとっています。<code>super()</code> を利用することで、<code>Rectangle</code> と <code>Square</code> のコンストラクターに共通する処理を重複して記述しないようにしています。</p>
+
+<pre class="brush: js notranslate">class Rectangle {
+ constructor(height, width) {
+ this.name = 'Rectangle';
+ this.height = height;
+ this.width = width;
+ }
+ sayName() {
+ console.log('Hi, I am a ', this.name + '.');
+ }
+ get area() {
+ return this.height * this.width;
+ }
+ set area(value) {
+ this.height = this.width = Math.sqrt(value);
+ }
+}
+
+class Square extends Rectangle {
+ constructor(length) {
+ this.height; // ReferenceError になります。super を先に呼び出さなければなりません!
+
+ // length の値で親クラスの constructor を呼びます。
+ // Rectangle の width と height になります。
+ super(length, length);
+
+ // Note: 'this' を使う前に super() をコールしなければなりません。
+ // でないと reference error になります。
+ this.name = 'Square';
+ }
+}</pre>
+
+<h3 id="Super-calling_static_methods" name="Super-calling_static_methods">静的メソッドでの super の呼び出し</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Classes/static">static</a> メソッドでも super を呼び出すことができます。</p>
+
+<pre class="brush: js notranslate">class Rectangle {
+ constructor() {}
+ static logNbSides() {
+ return 'I have 4 sides';
+ }
+}
+
+class Square extends Rectangle {
+ constructor() {}
+ static logDescription() {
+ return super.logNbSides() + ' which are all equal';
+ }
+}
+Square.logDescription(); // 'I have 4 sides which are all equal'
+</pre>
+
+<h3 id="Deleting_super_properties_will_throw_an_error" name="Deleting_super_properties_will_throw_an_error">super プロパティの削除でエラーが発生</h3>
+
+<p>親クラスのプロパティを削除するために、<a href="/ja/docs/Web/JavaScript/Reference/Operators/delete">delete 演算子</a> や <code>super.prop</code>、<code>super[expr]</code> を使うことはできません。{{jsxref("ReferenceError")}} がスローされます。</p>
+
+<pre class="brush: js notranslate">class Base {
+ constructor() {}
+ foo() {}
+}
+class Derived extends Base {
+ constructor() {}
+ delete() {
+ delete super.foo; // this is bad
+ }
+}
+
+new Derived().delete(); // ReferenceError: invalid delete involving 'super'. </pre>
+
+<h3 id="super.prop_cannot_overwrite_non-writable_properties" name="super.prop_cannot_overwrite_non-writable_properties"><code>super.prop</code> は書き込み不可能なプロパティを上書きできない</h3>
+
+<p>{{jsxref("Object.defineProperty")}} などで書き込み不可プロパティを定義した場合、<code>super</code> はプロパティの値を上書きできません。</p>
+
+<pre class="brush: js notranslate">class X {
+ constructor() {
+ Object.defineProperty(this, 'prop', {
+ configurable: true,
+ writable: false,
+ value: 1
+ });
+ }
+}
+
+class Y extends X {
+ constructor() {
+ super();
+ }
+ foo() {
+ super.prop = 2; // 値を上書きできない
+ }
+}
+
+var y = new Y();
+y.foo(); // TypeError: "prop" は読み取り専用
+console.log(y.prop); // 1
+</pre>
+
+<h3 id="Using_super.prop_in_object_literals" name="Using_super.prop_in_object_literals">オブジェクトリテラル内での <code>super.prop</code> の使用</h3>
+
+<p>super は <a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer">object initializer / literal</a> 記法内でも使用できます。この例では、二つのオブジェクトがメソッドを定義しています。二つ目のオブジェクトの中で、<code>super</code> が最初のオブジェクトのメソッドを呼び出しています。これは {{jsxref("Object.setPrototypeOf()")}} の助けで動作し、これは <code>obj2</code> のプロトタイプを <code>obj1</code> に設定するので、<code>super</code> は <code>method1</code> を <code>obj1</code> 上で見つけることができます。</p>
+
+<pre class="brush: js notranslate">var obj1 = {
+ method1() {
+ console.log('method 1');
+ }
+}
+
+var obj2 = {
+ method2() {
+ super.method1();
+ }
+}
+
+Object.setPrototypeOf(obj2, obj1);
+obj2.method2(); // logs "method 1"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-super-keyword', 'super')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.super")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Classes">クラス</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/this/index.html b/files/ja/web/javascript/reference/operators/this/index.html
new file mode 100644
index 0000000000..25f4f68a40
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/this/index.html
@@ -0,0 +1,488 @@
+---
+title: this
+slug: Web/JavaScript/Reference/Operators/this
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Primary Expressions
+ - Reference
+ - this
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/this
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>関数の <code>this</code> キーワード</strong> は、JavaScript ではほかの言語と少々異なる動作をします。また、<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a>と非厳格モードでも違いがあります。</p>
+
+<p>ほとんどの場合、<code>this</code> の値はどのように関数が呼ばれたかによって決定されます(実行時結合)。これは実行時に割り当てできず、関数が呼び出されるたびに異なる可能性があります。ES5 では、関数が{{jsxref('Operators/this', "どのように呼ばれたかに関係なく <code>this</code> の値を設定する", 'The_bind_method', 1)}} {{jsxref("Function.prototype.bind()", "bind()")}} メソッドが導入され、ES2015 では、独自の <code>this</code> バインディングを行わない<a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a>が導入されました(これは包含するレキシカルコンテキストの <code>this</code> の値を保持します)。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-this.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">this</pre>
+
+<h3 id="Value" name="Value">値</h3>
+
+<p>非厳格モードでは、実行コンテキスト (グローバル、関数、eval) のプロパティで、常にオブジェクトへの参照です。厳格モードではどのような値でも取り得ます。</p>
+
+<h2 id="解説">解説</h2>
+
+<h3 id="Global_context" name="Global_context">グローバルコンテキスト</h3>
+
+<p>グローバル実行コンテキスト (すべての関数の外側) では、厳格モードであるかどうかにかかわらず、<code>this</code> はグローバルオブジェクトを参照します。</p>
+
+<pre class="brush:js notranslate">// ウェブブラウザーでは window オブジェクトもグローバルオブジェクトです。
+console.log(this === window); // true
+
+a = 37;
+console.log(window.a); // 37
+
+this.b = "MDN";
+console.log(window.b) // "MDN"
+console.log(b) // "MDN"
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>メモ:</strong> コードが実行されている現在のコンテキストに関係なく、グローバルの {{jsxref("globalThis")}} プロパティを使用していつでも簡単にグローバルオブジェクトを取得できます。</p>
+</div>
+
+<h3 id="Function_context" name="Function_context">関数コンテキスト</h3>
+
+<p>関数内での <code>this</code> の値は、関数の呼び出され方によって異なります。</p>
+
+<p>下記のコードは<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a>ではないため、また呼び出し時に <code>this</code> の値が設定されないため、<code>this</code> は既定でグローバルオブジェクトとなり、これはブラウザーでは {{domxref("Window", "window")}} です。</p>
+
+<pre class="brush:js notranslate">function f1() {
+ return this;
+}
+
+// ブラウザー上で
+f1() === window; // true
+
+// Node 上で
+f1() === global; // true</pre>
+
+<p>ただし厳格モードでは、実行コンテキストに入るときに <code>this</code> 値が設定されていないと、以下の例のように <code>undefined</code> のままになります。</p>
+
+<pre class="brush:js notranslate">function f2() {
+ 'use strict'; // 厳格モードにする
+ return this;
+}
+
+f2() === undefined; // true
+</pre>
+
+<div class="note">二番目の例において、<code>this</code> が {{jsxref("undefined")}} となるのは <code>f2</code> が直接呼び出されており、オブジェクトのメソッドやプロパティ (例えば <code>window.f2()</code>) ではないためです。この機能は初めて<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a>への対応が始まったとき、一部のブラウザーが実装していませんでした。その結果、これらのブラウザーは不正確に <code>window</code> オブジェクトを返していました。</div>
+
+<p>関数の呼び出し時に <code>this</code> の値を特定の値に設定するには、以下の例のように {{jsxref("Function.prototype.call()", "call()")}} または {{jsxref("Function.prototype.apply()", "apply()")}} を使用します。</p>
+
+<h3 id="クラスコンテキスト">クラスコンテキスト</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Classes">クラス</a>は関数の機能であるため、クラスと関数の <code>this</code> の動作は似ています。ただし、いくつかの違いと注意点があります。</p>
+
+<p>クラスのコンストラクター内では、<code>this</code> は通常のオブジェクトです。クラス内のすべての非静的メソッドは <code>this</code> のプロトタイプに追加されます。</p>
+
+<pre class="brush: js notranslate">class Example {
+ constructor() {
+ const proto = Object.getPrototypeOf(this);
+ console.log(Object.getOwnPropertyNames(proto));
+ }
+ first(){}
+ second(){}
+ static third(){}
+}
+
+new Example(); // ['constructor', 'first', 'second']
+</pre>
+
+<div class="blockIndicator note">
+<p><strong>メモ:</strong> 静的メソッドは <code>this</code> のプロパティではありません。それらはクラス自体のプロパティです。</p>
+</div>
+
+<h3 id="派生クラス">派生クラス</h3>
+
+<p>基本クラスのコンストラクターとは異なり、派生コンストラクターには初期の <code>this</code> バインディングがありません。{{jsxref("Operators/super", "super()")}} を呼び出すとコンストラクター内に <code>this</code> バインディングが作成され、基本的に以下のコードを評価する効果があります。ここで、Base は継承されたクラスです。</p>
+
+<pre class="brush: js notranslate">this = new Base();</pre>
+
+<div class="blockIndicator warning">
+<p><strong>警告:</strong> super() を呼び出す前に <code>this</code> を参照するとエラーが発生します。</p>
+</div>
+
+<p>派生クラスは、<code>オブジェクト</code>を return するか、コンストラクターを持たない場合を除き、<code>super()</code> を呼び出す前に return することはできません。</p>
+
+<pre class="brush: js notranslate">class Base {}
+class Good extends Base {}
+class AlsoGood extends Base {
+ constructor() {
+ return {a: 5};
+ }
+}
+class Bad extends Base {
+ constructor() {}
+}
+
+new Good();
+new AlsoGood();
+new Bad(); // 参照エラー</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="関数コンテキスト内の_this">関数コンテキスト内の this</h3>
+
+<pre class="brush:js notranslate" dir="rtl">// オブジェクトを call や apply の最初の引数として渡すと、this がそれに結び付けられます
+var obj = {a: 'Custom'};
+
+// このプロパティはグローバルオブジェクトに設定されます
+var a = 'Global';
+
+function whatsThis() {
+ return this.a; // this の値は関数の呼び出し方によって変わります
+function is called
+}
+
+whatsThis(); // 関数内の this として 'Global' は設定されていないので、デフォルトではグローバル/ウィンドウオブジェクトになります。
+whatsThis.call(obj); // 関数内の this として 'Custom' が obj に設定されています
+whatsThis.apply(obj); // 関数内の this として 'Custom' が obj に設定されています
+</pre>
+
+<h3 id="this_とオブジェクト変換">this とオブジェクト変換</h3>
+
+<pre class="brush:js notranslate">function add(c, d) {
+ return this.a + this.b + c + d;
+}
+
+var o = {a: 1, b: 3};
+
+// 最初の引数は 'this' として使用する
+// オブジェクトで、続く引数は関数呼び出しの
+// 引数として使用されます。
+add.call(o, 5, 7); // 16
+
+// 最初の引数は 'this' として使用する
+// オブジェクトで、二番目の引数は関数呼び出しの
+// 引数として使用される配列です。
+add.apply(o, [10, 20]); // 34
+</pre>
+
+<p>なお、非厳格モードにおいて、<code>call</code> と <code>apply</code> は、<code>this</code> として渡された値がオブジェクトではない場合、内部の <code>ToObject</code> 操作を利用してオブジェクトに変換しようします。<code>7</code> や <code>'foo'</code> のようなプリミティブが渡された場合、関連するコンストラクターを使用してオブジェクトに変換されます。たとえば、プリミティブの数値である <code>7</code> は <code>new Number(7)</code> であるかのようにオブジェクトに変換され、文字列の <code>'foo'</code> は <code>new String('foo')</code> であるかのようにオブジェクトに変換されます。</p>
+
+<pre class="brush:js notranslate">function bar() {
+ console.log(Object.prototype.toString.call(this));
+}
+
+bar.call(7); // [object Number]
+bar.call('foo'); // [object String]
+bar.call(undefined); // [object global]
+</pre>
+
+<h3 id="The_bind_method" name="The_bind_method"><code>bind</code> メソッド</h3>
+
+<p>ECMAScript 5 で {{jsxref("Function.prototype.bind")}} が導入されました。<code>f.bind(someObject)</code> の呼び出しは、<code>f</code> と同じ内部とスコープを持つ新しい関数を生成し、ここが <code>this</code> が発生するオリジナルの関数ですが、関数がどのように使われるかにかかわらず、新しい関数では <code>bind</code> の最初の引数に永続的にバインドされます。</p>
+
+<pre class="brush:js notranslate">function f() {
+ return this.a;
+}
+
+var g = f.bind({a: 'azerty'});
+console.log(g()); // azerty
+
+var h = g.bind({a: 'yoo'}); // bind は一度しか機能しない
+console.log(h()); // azerty
+
+var o = {a: 37, f: f, g: g, h: h};
+console.log(o.a, o.f(), o.g(), o.h()); // 37,37, azerty, azerty
+</pre>
+
+<h3 id="Arrow_functions" name="Arrow_functions">アロー関数</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a>では、<code>this</code> はそれを囲むレキシカルコンテキストの <code>this</code> の値が設定されます。グローバルコードでは、グローバルオブジェクトが設定されます。</p>
+
+<pre class="brush: js notranslate">var globalObject = this;
+var foo = (() =&gt; this);
+console.log(foo() === globalObject); // true</pre>
+
+<div class="note">
+<p>メモ: アロー関数の呼び出し時に <code>this</code> 引数が <code>call</code>, <code>bind</code>, <code>apply</code> に渡されても無視されます。呼び出しに引数を加えることはできますが、最初の引数 (<code>thisArg</code>) は <code>null</code> を設定してください</p>
+</div>
+
+<pre class="brush: js notranslate">// オブジェクトのメソッドとして呼び出す。
+var obj = {func: foo};
+console.log(obj.func() === globalObject); // true
+
+// call を使用して this の設定を試みる
+console.log(foo.call(obj) === globalObject); // true
+
+// bind を使用して this の設定を試みる
+foo = foo.bind(obj);
+console.log(foo() === globalObject); // true</pre>
+
+<p>何があっても、<code>foo</code> の <code>this</code> は生成されたときの値が設定されています (上記の例ではグローバルオブジェクトです)。同様のことが、ほかの関数内で生成したアロー関数にも適用されます。それらの <code>this</code> には、それを包含するレキシカルコンテキストのものになります。</p>
+
+<pre class="brush:js notranslate">// this を返す関数を返す bar メソッドを持つ
+// obj を生成します。返された関数はアロー関数
+// として生成されているため、その this は
+// それを包含する関数の this に永続的に拘束
+// されます。bar の値は呼び出し時に設定でき、
+// 返値の関数の値に順に設定します。
+var obj = {
+ bar: function() {
+ var x = (() =&gt; this);
+ return x;
+ }
+};
+
+// bar を obj のメソッドとして呼び出す際、その this を obj に設定します
+// 返値の関数への参照を fn に割り当てます。
+var fn = obj.bar();
+
+// 厳格モードでは、this を設定せずに fn を呼び出すと
+// 通常はグローバルオブジェクトか undefined が既定値となります。
+console.log(fn() === obj); // true
+
+// しかし obj のメソッドを call することなく参照するのは要注意です。
+var fn2 = obj.bar;
+// するとアロー関数の呼び出しで this は bar の
+// this に従うため window と同じになります。
+console.log(fn2()() == window); // true
+</pre>
+
+<p>上記では、関数 (この無名関数を A と呼びます) に <code>obj.bar</code> が返すアロー関数として生成されたほかの関数 (この無名関数を B と呼びます) を割り当てています。結果として、呼び出されたときに関数 B の <code>this</code> は、永続的に <code>obj.bar</code> (関数 A) の <code>this</code> が設定されます。返された関数 (関数 B) が呼びされるとき、その <code>this</code> は常に最初に設定されたものになります。上記のコード例では、関数 B の <code>this</code> は <code>obj</code> である関数 A の <code>this</code> が設定されているため、通常はその <code>this</code> に <code>undefined</code> かグローバルオブジェクト (または、以前の例のグローバルコンテキストのように、いずれかのメソッド) が設定されますが、<code>obj</code> の設定が残ります。</p>
+
+<h3 id="As_an_object_method" name="As_an_object_method">オブジェクトのメソッドとして</h3>
+
+<p>関数がオブジェクトのメソッドとして呼び出されるとき、その <code>this</code> にはメソッドが呼び出されたオブジェクトが設定されます。</p>
+
+<p>次の例では、<code>o.f()</code> が起動したとき、関数内の <code>this</code> には、<code>o</code> オブジェクトが関連付けられます。</p>
+
+<pre class="brush:js notranslate">var o = {
+ prop: 37,
+ f: function() {
+ return this.prop;
+ }
+};
+
+console.log(o.f()); // 37
+</pre>
+
+<p>この振る舞いは、関数定義の方法や場所に全く影響を受けないことに注意してください。前述の例では、<code>o</code> の定義中に <code>f</code> メンバーとして関数をインラインに定義しています。しかし、関数を最初に定義して、後から <code>o.f</code> に付け足すことができます。その結果は同じ振る舞いになります。</p>
+
+<pre class="brush:js notranslate">var o = {prop: 37};
+
+function independent() {
+ return this.prop;
+}
+
+o.f = independent;
+
+console.log(o.f()); // 37
+</pre>
+
+<p>これは、関数が <code>o</code> の <code>f</code> のメンバーとして呼び出されることだけが重要なことを示しています。</p>
+
+<p>同様に、<code>this</code> の関連付けは、最も直近のメンバー参照にのみ影響を受けます。次の例では、関数が呼び出すとき、オブジェクト <code>o.b</code> の <code>g</code> メソッドとして呼び出しています。実行時に、関数内の <code>this</code> は <code>o.b</code> を参照します。オブジェクト自体が <code>o</code> のメンバーであるという事実は何の意味もありません。最も直近の参照のみが重要なのです。</p>
+
+<pre class="brush:js notranslate">o.b = {g: independent, prop: 42};
+console.log(o.b.g()); // 42
+</pre>
+
+<h4 id="this_on_the_objects_prototype_chain" name="this_on_the_objects_prototype_chain">オブジェクトのプロトタイプチェーン上の <code>this</code></h4>
+
+<p>同じ概念が、オブジェクトのプロトタイプチェーンのどこかに定義されたメソッドにも当てはまります。メソッドがオブジェクトのプロトタイプチェーン上にあった場合、メソッドがオブジェクト上にあるかのように、<code>this</code> はメソッドを呼び出したオブジェクトを参照します。</p>
+
+<pre class="brush:js notranslate">var o = {f: function() { return this.a + this.b; }};
+var p = Object.create(o);
+p.a = 1;
+p.b = 4;
+
+console.log(p.f()); // 5
+</pre>
+
+<p>この例では、変数 <code>p</code> に割り当てられたオブジェクト自身は <code>f</code> プロパティを持たず、プロトタイプから継承しています。しかし、<code>f</code> に対する検索が、最終的に <code>o</code> でその名前を持つメンバーを見つけることは重要ではありません。検索は <code>p.f</code> への参照から開始されるため、関数内の <code>this</code> は <code>p</code> として参照されるオブジェクトの値を取ります。<code>f</code> は <code>p</code> のメソッドとして呼ばれたため、その <code>this</code> は <code>p</code> を参照します。これは、JavaScript のプロトタイプ継承の興味深い機能です。</p>
+
+<h4 id="this_with_a_getter_or_setter" name="this_with_a_getter_or_setter">ゲッター/セッターと <code>this</code></h4>
+
+<p>再度、同じ概念が、ゲッターやセッターから呼ばれる関数にも当てはまります。ゲッターやセッターとして使用される関数は、このプロパティを設定するか、または得られている元のオブジェクトに関連付けられている <code>this</code> を持ちます。</p>
+
+<pre class="brush:js notranslate">function sum() {
+ return this.a + this.b + this.c;
+}
+
+var o = {
+ a: 1,
+ b: 2,
+ c: 3,
+ get average() {
+ return (this.a + this.b + this.c) / 3;
+ }
+};
+
+Object.defineProperty(o, 'sum', {
+ get: sum, enumerable: true, configurable: true});
+
+console.log(o.average, o.sum); // 2, 6
+</pre>
+
+<h3 id="As_a_constructor" name="As_a_constructor">コンストラクターとして</h3>
+
+<p>関数がコンストラクターとして ({{jsxref("Operators/new", "new")}} キーワードとともに) 使用されたとき、その <code>this</code> は生成された新しいオブジェクトに関連付けられます。</p>
+
+<div class="note">
+<p>コンストラクターの既定では、<code>this</code> で参照されるオブジェクトを返しますが、代わりにほかのオブジェクトを返すことができます (返値がオブジェクトではない場合、<code>this</code> オブジェクトが返されます)。</p>
+</div>
+
+<pre class="brush:js notranslate">/*
+ * Constructors work like this:
+ *
+ * function MyConstructor(){
+ * // Actual function body code goes here.
+ * // Create properties on |this| as
+ * // desired by assigning to them. E.g.,
+ * this.fum = "nom";
+ * // et cetera...
+ *
+ * // If the function has a return statement that
+ * // returns an object, that object will be the
+ * // result of the |new| expression. Otherwise,
+ * // the result of the expression is the object
+ * // currently bound to |this|
+ * // (i.e., the common case most usually seen).
+ * }
+ */
+
+function C() {
+ this.a = 37;
+}
+
+var o = new C();
+console.log(o.a); // 37
+
+
+function C2() {
+ this.a = 37;
+ return {a: 38};
+}
+
+o = new C2();
+console.log(o.a); // 38
+</pre>
+
+<p>最後の例 (<code>C2</code>) では、構築中にオブジェクトを返しているので、<code>this</code> が結び付けられている新しいオブジェクトは単に破棄されています。(これは根本的に "<code>this.a = 37;</code>" ステートメントを死んだコードにしてしまっています。これは実行されるので、正確には死んだコードではありませんが、外部への影響がありません。)</p>
+
+<h3 id="As_a_DOM_event_handler" name="As_a_DOM_event_handler">DOM イベントハンドラーとして</h3>
+
+<p>関数がイベントハンドラとして使用された場合、その <code>this</code> はリスナーが配置されている要素に設定されます ({{domxref("EventTarget/addEventListener", "addEventListener()")}} 以外のメソッドで動的に追加されたリスナーについては、この規約に従わないブラウザー-もあります)。</p>
+
+<pre class="brush:js notranslate">// リスナーとして呼び出された場合は、関連づけられた要素を青にする
+function bluify(e) {
+ // 常に true
+ console.log(this === e.currentTarget);
+ // currentTarget と target が同じオブジェクトであれば true
+ console.log(this === e.target);
+ this.style.backgroundColor = '#A5D9F3';
+}
+
+// 文書内の各要素の一覧を取得
+var elements = document.getElementsByTagName('*');
+
+// クリックリスナーとして bluify を追加することで、
+// 要素をクリックすると青くなるようになる
+for(var i = 0 ; i &lt; elements.length; i++){
+ elements[i].addEventListener('click', bluify, false);
+}</pre>
+
+<h3 id="In_an_inline_event_handler" name="In_an_inline_event_handler">インラインイベントハンドラー内</h3>
+
+<p>コードがインラインの <a href="/ja/docs/Web/Guide/Events/Event_handlers">on-イベントハンドラー</a>から呼び出されたとき、その <code>this</code> にはリスナーが配置されている DOM 要素が設定されます。</p>
+
+<pre class="brush:js notranslate">&lt;button onclick="alert(this.tagName.toLowerCase());"&gt;
+ Show this
+&lt;/button&gt;
+</pre>
+
+<p>上記のアラートは <code>button</code> と表示します。ただし、外側のコードがこのように設定された <code>this</code> を持っているだけだということに注意してください。</p>
+
+<pre class="brush:js notranslate">&lt;button onclick="alert((function() { return this; })());"&gt;
+ Show inner this
+&lt;/button&gt;
+</pre>
+
+<p>この場合、内側の関数の <code>this</code> は設定されていないので、グローバルの window オブジェクトを返します (つまり、<code>this</code> が呼び出しによって設定されていないので、非厳格モードの既定オブジェクトです)。</p>
+
+<h3 id="クラスの中の_this">クラスの中の this</h3>
+
+<div class="blockIndicator note"></div>
+
+<p>通常の関数と同様に、メソッド内の <code>this</code> の値は、どのように呼び出されるかによって異なります。クラス内の <code>this</code> が常にクラスのインスタンスを参照するように、この動作をオーバーライドしておくと便利な場合もあります。これを実現するには、コンストラクターでクラスのメソッドをバインドします。</p>
+
+<pre class="brush: js notranslate">class Car {
+ constructor() {
+ // 違いを示すために sayHi ではなく sayBye をバインドする
+ this.sayBye = this.sayBye.bind(this);
+ }
+ sayHi() {
+ console.log(`Hello from ${this.name}`);
+ }
+ sayBye() {
+ console.log(`Bye from ${this.name}`);
+ }
+ get name() {
+ return 'Ferrari';
+ }
+}
+
+class Bird {
+ get name() {
+ return 'Tweety';
+ }
+}
+
+const car = new Car();
+const bird = new Bird();
+
+// メソッドの 'this' の値は呼び出し元に依存します
+car.sayHi(); // Hello from Ferrari
+bird.sayHi = car.sayHi;
+bird.sayHi(); // Hello from Tweety
+
+// バインドされたメソッドの場合、'this' は呼び出し元に依存しません
+bird.sayBye = car.sayBye;
+bird.sayBye(); // Bye from Ferrari</pre>
+
+<div class="blockIndicator note">
+<p><strong>メモ:</strong> クラスは常に厳格モードのコードです。これを定義せずに <code>this</code> でメソッドを呼び出すとエラーが発生します。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-this-keyword', 'The this keyword')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.this")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a></li>
+ <li><a href="https://dmitripavlutin.com/gentle-explanation-of-this-in-javascript/">Gentle explanation of 'this' keyword in JavaScript</a></li>
+ <li>Getting the global context: {{jsxref("globalThis")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/typeof/index.html b/files/ja/web/javascript/reference/operators/typeof/index.html
new file mode 100644
index 0000000000..8f190dd7d3
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/typeof/index.html
@@ -0,0 +1,288 @@
+---
+title: typeof
+slug: Web/JavaScript/Reference/Operators/typeof
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - Unary
+translation_of: Web/JavaScript/Reference/Operators/typeof
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong><code>typeof</code></strong> 演算子は、未評価のオペランドの型を示す文字列を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-typeof.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p><code>typeof</code> 演算子の後に、オペランドを続けて書きます。</p>
+
+<pre class="syntaxbox notranslate">typeof <var>operand</var>
+typeof(<var>operand</var>)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p><code><var>operand</var></code> は、オブジェクトまたは<a href="/ja/docs/Glossary/Primitive">プリミティブ</a>型を表す式を返します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>以下は <code>typeof</code> が返す事が出来る値 (文字列) の一覧表です。型とプリミティブの詳細については、<a href="/ja/docs/Web/JavaScript/Data_structures">JavaScript のデータ構造</a>のページも参照してください。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">型</th>
+ <th scope="col">返値</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><a href="/ja/docs/Glossary/Undefined">Undefined</a></td>
+ <td><code>"undefined"</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Glossary/Null">Null</a></td>
+ <td><code>"object"</code> (<a href="#typeof_null">下記参照</a>)</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Glossary/Boolean">真偽値</a></td>
+ <td><code>"boolean"</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Glossary/Number">数値</a></td>
+ <td><code>"number"</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Glossary/BigInt">BigInt</a> (ECMAScript 2020 の新機能)</td>
+ <td><code>"bigint"</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Glossary/String">文字列</a></td>
+ <td><code>"string"</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Glossary/Symbol">シンボル</a> (ECMAScript 2015 の新機能)</td>
+ <td><code>"symbol"</code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Glossary/Function">Function</a> オブジェクト (implements [[Call]] in ECMA-262 terms)</td>
+ <td><code>"function"</code></td>
+ </tr>
+ <tr>
+ <td>その他のオブジェクト</td>
+ <td><code>"object"</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<div class="blockIndicator note">
+<p><strong>メモ:</strong> ECMAScript 2019 およびそれ以前の実装では、呼び出し可能な非標準のオブジェクトに対して、<code>typeof</code> が任意の実装定義の文字列値を返すことを許可していました。</p>
+
+<p>実際にこれを利用したブラウザーとして知られているのは、古い Internet Explorer だけです。(<a href="#IE-specific_notes">下記参照</a>)</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_usage" name="Basic_usage">基本的な使い方</h3>
+
+<pre class="brush: js notranslate">// 数値
+typeof 37 === 'number';
+typeof 3.14 === 'number';
+typeof(42) === 'number';
+typeof Math.LN2 === 'number';
+typeof Infinity === 'number';
+typeof NaN === 'number'; // "Not-A-Number" であるにもかかわらず。
+typeof Number('1') === 'number'; // Number は数値に型強制できない値を含めて、
+typeof Number('shoe') === 'number'; // あらゆるものを数字に解析します。
+
+typeof 42n === 'bigint';
+
+
+// 文字列
+typeof '' === 'string';
+typeof 'bla' === 'string';
+typeof `template literal` === 'string';
+typeof '1' === 'string'; // 文字列内の数値は文字列型のままです。
+typeof (typeof 1) === 'string'; // typeof は常に文字列を返します。
+typeof String(1) === 'string'; // String は何でも文字列に変換するので、toString よりも安全です。
+
+
+// 真偽値
+typeof true === 'boolean';
+typeof false === 'boolean';
+typeof Boolean(1) === 'boolean'; // Boolean は、値が truthy か falsy かに基づいて変換します。
+
+typeof !!(1) === 'boolean'; // ! (論理 NOT) 演算子 2 つの呼び出しは、Boolean() と同等です。
+
+
+// シンボル
+typeof Symbol() === 'symbol'
+typeof Symbol('foo') === 'symbol'
+typeof Symbol.iterator === 'symbol'
+
+
+// Undefined
+typeof undefined === 'undefined';
+typeof declaredButUndefinedVariable === 'undefined';
+typeof undeclaredVariable === 'undefined';
+
+
+// オブジェクト
+typeof {a: 1} === 'object';
+
+// <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray">Array.isArray</a> または Object.prototype.toString.call を使用て、
+// 通常のオブジェクトと配列を区別します。
+typeof [1, 2, 4] === 'object';
+
+typeof new Date() === 'object';
+typeof /regex/ === 'object'; // 過去の実装は<a href="#typeof_null">正規表現</a>を参照してください。
+
+
+// 以下のようなものは、紛らわしく、危険で、無駄なものです。それらの使用を避けてください。
+typeof new Boolean(true) === 'object';
+typeof new Number(1) === 'object';
+typeof new String('abc') === 'object';
+
+
+// 関数
+typeof function() {} === 'function';
+typeof class C {} === 'function';
+typeof Math.sin === 'function';</pre>
+
+<h3 id="typeof_null" name="typeof_null"><code>null 型</code></h3>
+
+<pre class="brush: js; no-line-numbers notranslate">// JavaScript の初期からの実装に基づく
+typeof null === 'object';
+</pre>
+
+<p>JavaScript の最初の実装では、JavaScript の値は型タグと値で表現されていました。オブジェクトの型タグは <code>0</code> で、<code>null</code> は NULL ポインター (ほとんどのプラットフォームで <code>0x00</code>) として表されていました。その結果、<code>null</code> はタグの型として <code>0</code> を持っていたため、<code>typeof</code> の戻り値は <code>"object"</code> です。(<a href="http://www.2ality.com/2013/10/typeof-null.html">リファレンス</a>)</p>
+
+<p>ECMAScript の修正案が (オプトインを使用して) 提案されましたが、<a href="https://web.archive.org/web/20160331031419/http://wiki.ecmascript.org:80/doku.php?id=harmony:typeof_null">却下されました</a>。それは <code>typeof null === 'null'</code> という結果になるものでした。</p>
+
+<h3 id="Using_new_operator" name="Using_new_operator"><code>new</code> 演算子の使用</h3>
+
+<pre class="brush: js; notranslate">// Function コンストラクターを除くすべてのコンストラクター関数は、
+// 常に typeof 'object' です
+let str = new String('String');
+let num = new Number(100);
+
+typeof str; // 'object' を返す
+typeof num; // 'object' を返す
+
+let func = new Function();
+
+typeof func; // 'function' を返す
+</pre>
+
+<h3 id="Need_for_parentheses_in_Syntax" name="Need_for_parentheses_in_Syntax">構文で括弧が必要な場合</h3>
+
+<pre class="brush:js notranslate">// 式のデータ型を特定するために、かっこを使用することができます。
+let iData = 99;
+
+typeof iData + ' Wisen'; // 'number Wisen'
+typeof (iData + ' Wisen'); // 'string'
+</pre>
+
+<h3 id="Regular_expressions" name="Regular_expressions">正規表現</h3>
+
+<p>呼び出し可能な正規表現は、一部のブラウザーでは非標準的な追加機能でした。</p>
+
+<pre class="brush:js; no-line-numbers notranslate">typeof /s/ === 'function'; // Chrome 1-12 ECMAScript5.1 に非準拠
+typeof /s/ === 'object'; // Firefox 5+ ECMAScript 5.1 に準拠
+</pre>
+
+<h3 id="Errors" name="Errors">エラー</h3>
+
+<p>ECMAScript 2015 より前では、<code>typeof</code> は常にそれが供給されたオペランドの文字列を返すことが保証されていました。宣言されていない識別子があっても、<code>typeof</code> は <code>'undefined'</code> を返します。<code>typeof</code> を使用すると、エラーは発生しません。</p>
+
+<p>しかしながら、ブロックスコープの <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code> と <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/const">const</a></code> が追加されたことで、変数が宣言される前のブロック内で <code>let</code> と <code>const</code> に <code>typeof</code> を使用すると(またはクラスに <code>typeof</code> を使用すると)、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError">ReferenceError</a></code> が投げられます。ブロックスコープ内の変数は、ブロックの開始から初期化が処理されるまで「<a href="/ja/docs/Web/JavaScript/Reference/Statements/let#The_temporal_dead_zone_and_typeof">一時的なデッドゾーン</a>」にあり、その間にアクセスされるとエラーを投げます。</p>
+
+<pre class="brush: js; no-line-numbers notranslate">typeof undeclaredVariable === 'undefined';
+
+typeof newLetVariable; // ReferenceError
+typeof newConstVariable; // ReferenceError
+typeof newClass; // ReferenceError
+
+let newLetVariable;
+const newConstVariable = 'hello';
+class newClass{};</pre>
+
+<h3 id="Exceptions" name="Exceptions">例外</h3>
+
+<p>現在のブラウザーではすべて、標準外のホストオブジェクト {{domxref("document.all")}} は <code>undefined</code> 型になります。</p>
+
+<pre class="brush: js; no-line-numbers notranslate">typeof document.all === 'undefined';</pre>
+
+<p>仕様では、非標準のオブジェクトののためのカスタム型タグを許可していますが、それらの型タグは定義済みのものとは異なるものであることを要求しています。<code>document.all</code> が <code>'undefined'</code> という型を持っている場合、ウェブ標準ではオリジナルの ECMA JavaScript 標準の "故意の違反" として分類されています。</p>
+
+<h3 id="Real-world_usage" name="Real-world_usage">実際の使い方</h3>
+
+<p><code>typeof</code> は非常に便利ですが、汎用性はそれほど高くありません。たとえば、<code>typeof([])</code> は <code>typeof(new Date())</code> や <code>typeof(/abc/)</code> などと同様に <code>'object'</code> です。</p>
+
+<p>型のチェックをより具体的にするために、プロダクションレベルのコードで使用するための <code>typeof</code> ラッパーは以下のようになります。(<code>obj</code> が存在する場合)</p>
+
+<pre class="brush: js notranslate"> function type(obj, fullClass) {
+
+ // obj の toPrototypeString() を取得します。(すべての型を処理します)
+ // 初期の JS 環境では null の場合 '[object Object]' を返すので、直接確認するのがベストです。
+ if (fullClass) {
+  return (obj === null) ? '[object Null]' : Object.prototype.toString.call(obj);
+  }
+ if (obj == null) { return (obj + '').toLowerCase(); } // 暗黙の toString() 変換
+
+ var deepType = Object.prototype.toString.call(obj).slice(8,-1).toLowerCase();
+  if (deepType === 'generatorfunction') { return 'function' }
+
+ // 過剰な特異性を防いでください。(例えば、[object HTMLDivElement] など)
+ // 機能的な正規表現 (Android &lt;=2.3)、機能的な &lt;object&gt; 要素 (Chrome &lt;=57, Firefox &lt;=52) などを考慮します。
+ // String.prototype.match は普遍的にサポートされています。
+
+ return deepType.match(/^(array|bigint|date|error|function|generator|regexp|symbol)$/) ? deepType :
+     (typeof obj === 'object' || typeof obj === 'function') ? 'object' : typeof obj;
+ }</pre>
+
+<p>存在しない変数をチェックすると、{{JSxRef("ReferenceError")}} が投げられるため、<code>typeof nonExistentVar === 'undefined'</code> を使用します。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-typeof-operator', 'The typeof Operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.operators.typeof")}}</p>
+
+<h3 id="IE-specific_notes" name="IE-specific_notes">IE 特有のメモ</h3>
+
+<p>IE 6、7、8 では、以下のように多くのホストオブジェクトがオブジェクト型であり、関数ではありません。</p>
+
+<pre class="brush: js; no-line-numbers notranslate">typeof alert === 'object'</pre>
+
+<p>一部の非標準 IE プロパティは他の値を返します。(<a href="https://github.com/tc39/ecma262/issues/1440#issuecomment-461963872">tc39/ecma262#1440 (comment)</a>)</p>
+
+<pre class="brush: js; no-line-numbers notranslate">typeof window.external.AddSearchProvider === "unknown";
+typeof window.external.IsSearchProviderInstalled === "unknown";</pre>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Operators/instanceof", "instanceof")}}</li>
+ <li><a href="https://github.com/tc39/ecma262/issues/668"><code>document.all</code> willful violation of the standard</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/unary_negation/index.html b/files/ja/web/javascript/reference/operators/unary_negation/index.html
new file mode 100644
index 0000000000..69d2ea40c3
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/unary_negation/index.html
@@ -0,0 +1,80 @@
+---
+title: 単項マイナス (-)
+slug: Web/JavaScript/Reference/Operators/Unary_negation
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Unary_negation
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>単項マイナス演算子 (<code>-</code>) はオペランドの前に置かれ、符号を反転します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-unary-negation.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>演算子:</strong> -<var>x</var>
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Negating_numbers" name="Negating_numbers">数値の符号を反転</h3>
+
+<pre class="brush: js notranslate">const x = 3;
+const y = -x;
+
+// y = -3
+// x = 3
+</pre>
+
+<h3 id="Negating_non-numbers" name="Negating_non-numbers">数値以外の符号を反転</h3>
+
+<p>単項マイナス演算子は、数値でないものを数値に変換することができます。</p>
+
+<pre class="brush: js notranslate">const x = "4";
+const y = -x;
+
+// y = -4
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-unary-minus-operator', 'Unary negation operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.unary_negation")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Addition">加算演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Subtraction">減算演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Division">除算演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Multiplication">乗算演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Remainder">剰余演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Exponentiation">べき乗演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Increment">インクリメント演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Decrement">デクリメント演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Unary_plus">単項プラス演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/unary_plus/index.html b/files/ja/web/javascript/reference/operators/unary_plus/index.html
new file mode 100644
index 0000000000..6cd8b30087
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/unary_plus/index.html
@@ -0,0 +1,80 @@
+---
+title: 単項プラス (+)
+slug: Web/JavaScript/Reference/Operators/Unary_plus
+tags:
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Unary_plus
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>単項プラス演算子 (<code>+</code>) は、オペランドの前に置かれ、そのオペランドを評価し、それが数値以外の場合は数値に変換します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-unary-plus.html", "taller")}}</div>
+
+
+
+<h2 id="例">例</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> +<var>x</var>
+</pre>
+
+<h2 id="説明">説明</h2>
+
+<p>単項マイナス (<code>-</code>) も非数値を数値に変換できますが、単項プラスは数値に対して他の演算を行わないため、非数値を数値に変換する最も高速で好ましい方法です。これは、整数や浮動小数点の文字列表現や、非文字列値である <code>true</code>、<code>false</code>、<code>null</code> を変換することができます。10進数と16進数(接頭辞 0x)の両形式の整数と負の数(16進数の負の数はサポートされていません)がサポートされています。BigInt 値に対してこの演算子を使用すると TypeError がスローされます。特定の値を解析できない場合は、{{jsxref("NaN")}} と評価されます。</p>
+
+<h2 id="例_2">例</h2>
+
+<h3 id="数値での使い方">数値での使い方</h3>
+
+<pre class="brush: js notranslate">const x = 1;
+const y = -1;
+
+console.log(+x);
+// 1
+console.log(+y);
+// -1</pre>
+
+<h3 id="数値以外での使い方">数値以外での使い方</h3>
+
+<pre class="brush: js notranslate">+true // 1
++false // 0
++null // 0
++function(val){ return val } // NaN
++1n //  BigInt 値は数値に変換できないためエラーになります
+</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-unary-plus-operator', 'Unary plus operator')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザの互換性">ブラウザの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.unary_plus")}}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Addition">加算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Subtraction">減算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Division">除算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Multiplication">乗算演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Remainder">剰余演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Exponentiation">べき乗演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Increment">インクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Decrement">デクリメント演算子</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Unary_negation">単項マイナス演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/unsigned_right_shift/index.html b/files/ja/web/javascript/reference/operators/unsigned_right_shift/index.html
new file mode 100644
index 0000000000..bca04162e0
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/unsigned_right_shift/index.html
@@ -0,0 +1,79 @@
+---
+title: 符号なし右シフト (>>>)
+slug: Web/JavaScript/Reference/Operators/Unsigned_right_shift
+tags:
+ - Bitwise operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/Unsigned_right_shift
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong>符号なし右シフト演算子 (<code>&gt;&gt;&gt;</code>)</strong> (ゼロ埋め右シフト) は、1つ目のオペランドを指定されたビット数だけ右にずらします。右にずらしてあふれたビットは廃棄されます。0のビットが左からずれて入ります。符号ビットは <code>0</code> になりますので、結果は負の数にはなりません。他のビット毎演算子とは異なり、ゼロ埋め右シフトは符号なし32ビット整数を返します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-unsigned-right-shift.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><code><var>a</var> &gt;&gt;&gt; <var>b</var></code>
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>この演算子は、1つ目のオペランドを指定されたビット数だけ右にずらします。右にずらしてあふれたビットは廃棄されます。0のビットが左からずれて入ります。符号ビットは <code>0</code> になりますので、結果は負の数にはなりません。他のビット毎演算子とは異なり、ゼロ埋め右シフトは符号なし32ビット整数を返します。</p>
+
+<p>負の数ではない場合、ゼロ埋め右シフトと符号保存右シフトは同じ結果をになります。例えば、 <code>9 &gt;&gt;&gt; 2</code> は 2 となり、 <code>9 &gt;&gt; 2</code> と同じになります。</p>
+
+<pre class="brush: js notranslate">. 9 (10進数): 00000000000000000000000000001001 (2進数)
+ --------------------------------
+9 &gt;&gt;&gt; 2 (10進数): 00000000000000000000000000000010 (2進数) = 2 (10進数)
+</pre>
+
+<p>しかし、これは負の数の場合は当てはまりません。例えば、 <code>-9 &gt;&gt;&gt; 2</code> は 1073741821 になり、 <code>-9 &gt;&gt; 2</code> (<code>-3</code> になる) とは異なります。</p>
+
+<pre class="brush: js notranslate">. -9 (10進数): 11111111111111111111111111110111 (2進数)
+ --------------------------------
+-9 &gt;&gt;&gt; 2 (10進数): 00111111111111111111111111111101 (2進数) = 1073741821 (10進数)
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_unsigned_right_shift" name="Using_unsigned_right_shift">符号なし右シフトの使用</h3>
+
+<pre class="brush: js notranslate"> 9 &gt;&gt;&gt; 2; // 2
+-9 &gt;&gt;&gt; 2; // 1073741821
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-bitwise-shift-operators', 'Bitwise Shift Operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.unsigned_right_shift")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise">代入演算子</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Unsigned_right_shift_assignment">符号なし右シフト代入演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/unsigned_right_shift_assignment/index.html b/files/ja/web/javascript/reference/operators/unsigned_right_shift_assignment/index.html
new file mode 100644
index 0000000000..eb756b8c49
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/unsigned_right_shift_assignment/index.html
@@ -0,0 +1,61 @@
+---
+title: 符号なし右シフト代入 (>>>=)
+slug: Web/JavaScript/Reference/Operators/Unsigned_right_shift_assignment
+tags:
+ - Assignment operator
+ - JavaScript
+ - Language feature
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/Unsigned_right_shift_assignment
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>符号なし右シフト代入演算子 (<em><code>&gt;&gt;&gt;=</code></em>) は、指定された量のビットを右に移動し、結果を変数に割り当てます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-unsigned-right-shift-assignment.html")}}</div>
+
+<div></div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox notranslate"><strong>Operator:</strong> x &gt;&gt;&gt;= y
+<strong>Meaning:</strong> x = x &gt;&gt;&gt; y</pre>
+
+<h2 id="例">例</h2>
+
+<h3 id="符号なし右シフト代入の使用">符号なし右シフト代入の使用</h3>
+
+<pre class="brush: js notranslate">let a = 5; // (00000000000000000000000000000101)
+a &gt;&gt;&gt;= 2; // 1 (00000000000000000000000000000001)
+
+let b = -5; // (-00000000000000000000000000000101)
+b &gt;&gt;&gt;= 2; // 1073741822 (00111111111111111111111111111110)</pre>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザーの互換性">ブラウザーの互換性</h2>
+
+
+
+<p>{{Compat("javascript.operators.unsigned_right_shift_assignment")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment">代入演算子</a></li>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Unsigned_right_shift">符号なし右シフト演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/void/index.html b/files/ja/web/javascript/reference/operators/void/index.html
new file mode 100644
index 0000000000..eab7076612
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/void/index.html
@@ -0,0 +1,150 @@
+---
+title: void 演算子
+slug: Web/JavaScript/Reference/Operators/void
+tags:
+ - JavaScript
+ - Operator
+ - URIs
+ - Unary
+translation_of: Web/JavaScript/Reference/Operators/void
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong><code>void</code> 演算子</strong>は与えられた式 (<em>expression</em>) を評価し、{{jsxref("Global_Objects/undefined", "undefined")}} を返します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"><code>void <em>expression</em></code></pre>
+
+<h2 id="Uses" name="Uses">説明</h2>
+
+<p>この演算子は、<strong>「戻り値が <code>undefined</code> であってほしい場所に、それ以外の戻り値を持つ式を挿入したい場合」</strong>に有用です。</p>
+
+<p><code>void</code> 演算子は単にプリミティブ値 undefined を得る目的でしばしば使われ、一般的に "<code>void(0)</code>" と書かれます(これは "<code>void 0</code>" と等価です)。この目的であれば、代わりに値が {{jsxref("Global_Objects/undefined", "undefined")}} の変数、未定義のグローバル変数などを使用する事もできます。</p>
+
+<p><a href="/ja/docs/Glossary/IIFE">即時実行関数式</a>を使用するとき、 <code>void</code> は、<code>function</code> キーワードを宣言の代わりに式として扱うように強制するために使用できます。</p>
+
+<pre class="brush: js">void function iife() {
+ var bar = function () {};
+ var baz = function () {};
+ var foo = function () {
+ bar();
+ baz();
+ };
+ var biz = function () {};
+
+ foo();
+ biz();
+}();
+</pre>
+
+<h2 id="JavaScript_URIs" name="JavaScript_URIs">JavaScript URI</h2>
+
+<p><code>javascript:</code> から始まる URI をサポートしたブラウザに於いて、それは、URI 内のコードを評価し、戻り値が {{jsxref("Global_Objects/undefined", "undefined")}} でなければ、返された値にページコンテンツを置き換えます。<code>void</code> 演算子は、{{jsxref("Global_Objects/undefined", "undefined")}} を返すために使用できます。たとえば:</p>
+
+<pre class="brush: html">&lt;a href="javascript:void(0);"&gt;
+ Click here to do nothing
+&lt;/a&gt;
+
+&lt;a href="javascript:void(document.body.style.backgroundColor='green');"&gt;
+ Click here for green background
+&lt;/a&gt;
+</pre>
+
+<p>但し、<code>javascript:</code> 疑似プロトコルはあくまで控えめなイベントハンドラなどの代替であり、積極的に使用するべきではないでしょう。<br>
+ しかしながらこれは、戻り値を必要としないブックマークレットの作成の際などに役立つ場合があります。</p>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">ステータス</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-void-operator', 'The void Operator')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-void-operator', 'The void Operator')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-11.4.2', 'The void Operator')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES3', '#sec-11.4.2', 'The void Operator')}}</td>
+ <td>{{Spec2('ES3')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1', '#sec-11.4.2', 'The void Operator')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>初期定義。JavaScript 1.1 で実装。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{CompatibilityTable}}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Android</th>
+ <th>Chrome for Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/undefined">undefined</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/yield/index.html b/files/ja/web/javascript/reference/operators/yield/index.html
new file mode 100644
index 0000000000..2cadddab3b
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/yield/index.html
@@ -0,0 +1,106 @@
+---
+title: yield
+slug: Web/JavaScript/Reference/Operators/yield
+tags:
+ - ECMAScript 2015
+ - Generators
+ - Iterator
+ - JavaScript
+ - Language feature
+ - Operator
+ - ジェネレーター
+ - 反復処理
+ - 演算子
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Operators/yield
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><code>yield</code> キーワードは、ジェネレーター関数 ({{jsxref("Statements/function*", "function*")}} または<a href="/ja/docs/Web/JavaScript/Reference/Statements/Legacy_generator_function">古いジェネレーター関数</a>) のを一時停止したり再開したりするために使用します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-yield.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">[<var>rv</var>] = <strong>yield</strong> [<var>expression</var>]</pre>
+
+<dl>
+ <dt><code><var>expression</var></code> {{optional_inline}}</dt>
+ <dd><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#iterator">iterator プロトコル</a>経由でジェネレーター関数が返す値を定義します。省略した場合、代わりに <code>undefined</code> が返されます。</dd>
+ <dt><code><var>rv</var></code> {{optional_inline}}</dt>
+ <dd>
+ <p>ジェネレーターの実行を再開する <code>next()</code> メソッドに渡したオプションの値を受け取ります。</p>
+ </dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>yield</code> キーワードは、ジェネレーター関数の実行を一時停止し、ジェネレーターの呼び出し元に <code>yield</code> キーワードに続く値を戻します。これは、 <code>return</code> キーワードのジェネレーター版と考えることができます。</p>
+
+<p><code>yield</code> はそれを含むジェネレーター関数の中で直接しか呼び出すことしかできません。呼び出し先の関数やコールバックから呼び出すことはできません。</p>
+
+<p><code>yield</code> キーワードはジェネレーターの <code>next()</code> メソッドを呼び出させ、 <code>value</code> と <code>done</code> の2つのプロパティを持つ <code>IteratorResult</code> オブジェクトを返します。 <code>value</code> プロパティは <code>yield</code> 式の評価結果であり、 <code>done</code> は <code>false</code>、すなわちジェネレーター関数が完全には完了していないことを示します。</p>
+
+<p><code>yield</code> 式によって実行が停止されると、ジェネレーターの <code>next()</code> メソッドが呼び出されるまで、ジェネレーターのコード実行は一時停止します。ジェネレーターの <code>next()</code> メソッドが呼ばれるたびに、ジェネレーターの実行が再開され、次のうちのいずれかに達するまで実行されます。</p>
+
+<ul>
+ <li>ジェネレーターを再び停止して、ジェネレーターの新しい値を返す <code>yield</code>。再度 <code>next()</code> が呼ばれると <code>yield</code> の直後から実行が再開されます。</li>
+ <li>ジェネレーターから例外を発生させるために使用される {{jsxref("Statements/throw", "throw")}}。完全にジェネレーターの実行を停止し、 (通常の例外が発生した場合のように) 呼び出し元で実行が再開されます。</li>
+ <li>ジェネレーター関数の末尾。この場合、ジェネレーターの実行は終了し、 <code>IteratorResult</code> オブジェクトの <code>value</code> に {{jsxref("undefined")}} が、 <code>done</code> に <code>true</code> が代入されて呼び出し元に返されます。</li>
+ <li>{{jsxref("Statements/return", "return")}} ステートメント。この場合はジェネレーターの実行は終了し、 <code>IteratorResult</code> オブジェクトの <code>value</code> に <code>return</code> ステートメントで指定した値が、 <code>done</code> に <code>true</code> が代入されて呼び出し元に返されます。</li>
+</ul>
+
+<p>ジェネレーターの <code>next()</code> メソッドにオプションの値が渡された場合、その値はジェネレーターの現在の <code>yield</code> 操作の返値となります。</p>
+
+<p>ジェネレーターのコードパス、 <code>yield</code> 演算子、新しい開始値を {{jsxref("Generator.prototype.next()")}} に渡すことで指定することができる機能により、ジェネレーターは大きな力と制御を提供します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>次のコードはジェネレーター関数の定義例です。</p>
+
+<pre class="brush: js">function* countAppleSales () {
+ let saleList = [3, 7, 5]
+ for (let i = 0; i &lt; saleList.length; i++) {
+ yield saleList[i]
+ }
+}</pre>
+
+<p>ジェネレーター関数が定義されると、ご覧のようにイテレーターを構築するために使用されます。</p>
+
+<pre class="brush: js">let appleStore = countAppleSales() // Generator { }
+console.log(appleStore.next()) // { value: 3, done: false }
+console.log(appleStore.next()) // { value: 7, done: false }
+console.log(appleStore.next()) // { value: 5, done: false }
+console.log(appleStore.next()) // { value: undefined, done: true }</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#prod-YieldExpression', 'Yield')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.yield")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/The_Iterator_protocol">Iterator プロトコル</a></li>
+ <li>{{jsxref("Statements/function*", "function*")}}</li>
+ <li>{{jsxref("Operators/function*", "function* expression")}}</li>
+ <li>{{jsxref("Operators/yield*", "yield*")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/operators/yield_star_/index.html b/files/ja/web/javascript/reference/operators/yield_star_/index.html
new file mode 100644
index 0000000000..e1aedb2d58
--- /dev/null
+++ b/files/ja/web/javascript/reference/operators/yield_star_/index.html
@@ -0,0 +1,140 @@
+---
+title: yield*
+slug: Web/JavaScript/Reference/Operators/yield*
+tags:
+ - ECMAScript 2015
+ - Generators
+ - Iterable
+ - Iterator
+ - JavaScript
+ - Operator
+ - Reference
+ - yield*
+ - ジェネレーター
+ - 演算子
+translation_of: Web/JavaScript/Reference/Operators/yield*
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><span class="seoSummary"><strong><code>yield*</code> 式</strong>は別の {{jsxref("Statements/function*", "ジェネレーター", "", 1)}} や反復可能なオブジェクトに委任するために使用されます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-yieldasterisk.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox"> yield* <var>expression</var>;</pre>
+
+<dl>
+ <dt><code><var>expression</var></code></dt>
+ <dd>反復可能なオブジェクトを返す式。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>yield*</code> 式はオペランドを反復し、それによって返されたそれぞれの値をもたらします。</p>
+
+<p><code>yield*</code> 式自体の値は、イテレーターが閉じたとき (つまり <code>done</code> が <code>true</code> のとき) に返される値です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Delegating_to_another_generator" name="Delegating_to_another_generator">別のジェネレータに委任する</h3>
+
+<p>次のコードでは、 <code>g1()</code> によってもたらされる値は、 <code>g2()</code> で得られているものと同じように <code>next()</code> の呼び出しから返されます。</p>
+
+<pre class="brush: js">function* g1() {
+ yield 2;
+ yield 3;
+ yield 4;
+}
+
+function* g2() {
+ yield 1;
+ yield* g1();
+ yield 5;
+}
+
+const iterator = g2();
+
+console.log(iterator.next()); // {value: 1, done: false}
+console.log(iterator.next()); // {value: 2, done: false}
+console.log(iterator.next()); // {value: 3, done: false}
+console.log(iterator.next()); // {value: 4, done: false}
+console.log(iterator.next()); // {value: 5, done: false}
+console.log(iterator.next()); // {value: undefined, done: true}
+</pre>
+
+<h3 id="Other_Iterable_objects" name="Other_Iterable_objects">他の反復可能なオブジェクト</h3>
+
+<p>ジェネレータオブジェクトのほかに、 <code>yield*</code> は他の種類の反復 (例えば、配列、文字列、 {{jsxref("Functions/arguments", "arguments")}} オブジェクト) を <code>yield</code> することができます。</p>
+
+<pre class="brush: js">function* g3() {
+ yield* [1, 2];
+ yield* '34';
+ yield* Array.from(arguments);
+}
+
+const iterator = g3(5, 6);
+
+console.log(iterator.next()); // {value: 1, done: false}
+console.log(iterator.next()); // {value: 2, done: false}
+console.log(iterator.next()); // {value: "3", done: false}
+console.log(iterator.next()); // {value: "4", done: false}
+console.log(iterator.next()); // {value: 5, done: false}
+console.log(iterator.next()); // {value: 6, done: false}
+console.log(iterator.next()); // {value: undefined, done: true}
+</pre>
+
+<h3 id="The_value_of_yield*_expression_itself" name="The_value_of_yield*_expression_itself"><code>yield*</code> 式自体の値</h3>
+
+<p><code>yield*</code> は式であり、文ではありません。そのため、値に評価されます。</p>
+
+<pre class="brush: js">function* g4() {
+ yield* [1, 2, 3];
+ return 'foo';
+}
+
+function* g5() {
+ const g4ReturnValue = yield* g4();
+ console.log(g4ReturnValue) // 'foo'
+ return g4ReturnValue;
+}
+
+const iterator = g5();
+
+console.log(iterator.next()); // {value: 1, done: false}
+console.log(iterator.next()); // {value: 2, done: false}
+console.log(iterator.next()); // {value: 3, done: false} done is false because g5 generator isn't finished, only g4
+console.log(iterator.next()); // {value: 'foo', done: true}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-generator-function-definitions-runtime-semantics-evaluation', 'Yield')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.operators.yield_star")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/The_Iterator_protocol">Iterator プロトコル</a></li>
+ <li>{{jsxref("Statements/function*", "function*")}}</li>
+ <li>{{jsxref("Operators/function*", "function* expression")}}</li>
+ <li>{{jsxref("Operators/yield", "yield")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/reserved_words/index.html b/files/ja/web/javascript/reference/reserved_words/index.html
new file mode 100644
index 0000000000..16a2a45a16
--- /dev/null
+++ b/files/ja/web/javascript/reference/reserved_words/index.html
@@ -0,0 +1,88 @@
+---
+title: 予約語
+slug: Web/JavaScript/Reference/Reserved_Words
+tags:
+ - JavaScript
+translation_of: Web/JavaScript/Reference/Lexical_grammar#Keywords
+---
+<p>以下は予約語であり、変数、関数、メソッド、あるいはオブジェクトの識別子として用いることはできません。以下は <a href="/ja/docs/ECMAScript">ECMAScript</a> の仕様で既存のキーワードとして予約されているものです。</p>
+
+<div class="threecolumns">
+<ul>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/break" title="JavaScript/Reference/Statements/break">break</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/switch" title="JavaScript/Reference/Statements/switch">case</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/try...catch" title="JavaScript/Reference/Statements/try...catch">catch</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/continue" title="JavaScript/Reference/Statements/continue">continue</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/debugger" title="JavaScript/Reference/Statements/debugger">debugger</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/switch" title="JavaScript/Reference/Statements/switch">default</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Operators/delete" title="JavaScript/Reference/Operators/delete">delete</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/do...while" title="JavaScript/Reference/Statements/do...while">do</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/if...else" title="JavaScript/Reference/Statements/if...else">else</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/try...catch" title="JavaScript/Reference/Statements/try...catch">finally</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/for" title="JavaScript/Reference/Statements/for">for</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/function" title="JavaScript/Reference/Statements/function">function</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/if...else" title="JavaScript/Reference/Statements/if...else">if</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/for...in" title="JavaScript/Reference/Statements/for...in">in</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Operators/instanceof" title="JavaScript/Reference/Operators/instanceof">instanceof</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Operators/new" title="JavaScript/Reference/Operators/new">new</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/return" title="JavaScript/Reference/Statements/return">return</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/switch" title="JavaScript/Reference/Statements/switch">switch</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Operators/this" title="JavaScript/Reference/Operators/this">this</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/throw" title="JavaScript/Reference/Statements/throw">throw</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/try...catch" title="JavaScript/Reference/Statements/try...catch">try</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Operators/typeof" title="JavaScript/Reference/Operators/typeof">typeof</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/var" title="JavaScript/Reference/Statements/var">var</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Operators/void" title="JavaScript/Reference/Operators/void">void</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/while" title="JavaScript/Reference/Statements/while">while</a></code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/with" title="JavaScript/Reference/Statements/with">with</a></code></li>
+</ul>
+</div>
+
+<h2 id="Words_reserved_for_possible_future_use" name="Words_reserved_for_possible_future_use">将来の使用を見越した予約語</h2>
+
+<p>以下は ECMAScript の仕様で将来のキーワードとして予約されているものです。現在は特別な機能を持っていませんが、将来機能を持つときのために、識別子として使用できません。このキーワードは、厳格モード、非厳格モードの両方で使用できません。</p>
+
+<div class="note"><strong>注記:</strong> Firefox 5 (JavaScript 1.8.6) より以前では、これらのキーワードは厳格モードでないときには使用できました。この ECMAScript 違反は Firefox 5 で修正されました。</div>
+
+<div class="threecolumns">
+<ul>
+ <li><code>class</code></li>
+ <li><code>enum</code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/export" title="JavaScript/Reference/Statements/export">export</a></code></li>
+ <li><code>extends</code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/import" title="JavaScript/Reference/Statements/import">import</a></code></li>
+ <li><code>super</code></li>
+</ul>
+</div>
+
+<p>以下は <a href="/ja/docs/JavaScript/Reference/Functions_and_function_scope/Strict_mode" title="JavaScript/Strict mode">厳格モードのコード</a> として実行されたときに 、ECMAScript の仕様で将来のキーワードとして 予約されているものです。ただし、JavaScript 1.7 以上では <code>let</code> と <code>yield</code> は伝統的な Mozilla 特有の機能を持っています。</p>
+
+<div class="threecolumns">
+<ul>
+ <li><code>implements</code></li>
+ <li><code>interface</code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/let" title="JavaScript/Reference/Statements/let">let</a></code></li>
+ <li><code>package</code></li>
+ <li><code>private</code></li>
+ <li><code>protected</code></li>
+ <li><code>public</code></li>
+ <li><code>static</code></li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/yield" title="JavaScript/Reference/Statements/yield">yield</a></code></li>
+</ul>
+</div>
+
+<p><code><a href="/ja/docs/JavaScript/Reference/Statements/const" title="JavaScript/Reference/Statements/const">const</a></code> は ECMAScript の仕様によって将来のキーワードとして予約されていますが、Mozilla やほとんどの他のブラウザが非標準の拡張として実装していることに注意してください。さらに、 <a href="/ja/docs/JavaScript/Reference/Statements/export" title="JavaScript/Reference/Statements/export">export</a> と <a href="/ja/docs/JavaScript/Reference/Statements/import" title="JavaScript/Reference/Statements/import">import</a> はかつて Mozilla で実装されていましたが、現在では予約語となっています。</p>
+
+<p>加えて、 <code>null</code> 、 <code>true</code> 、 <code>false</code> リテラルは ECMAScript の仕様で予約されています。</p>
+
+<h2 id="Reserved_word_usage" name="Reserved_word_usage">予約語の利用</h2>
+
+<p>実際に、予約語は識別子のみに適用されます。<span class="comment-copy"><a href="http://es5.github.com/#A.1" rel="nofollow">es5.github.com/#A.1</a> の記述にあるように、これらは全て予約語を排除しない識別名です。</span></p>
+
+<p><span class="comment-copy"><code>a.import</code></span><br>
+ <span class="comment-copy"><code>a["import"]</code></span><br>
+ <span class="comment-copy"><code>a = { import: "test" }</code>.</span></p>
+
+<p><span class="comment-copy">反対に、以下は識別子であるので違反です。識別子は関数宣言や関数式に使用されます。</span></p>
+
+<p><span class="comment-copy"><code>function import() {}</code></span></p>
diff --git a/files/ja/web/javascript/reference/statements/async_function/index.html b/files/ja/web/javascript/reference/statements/async_function/index.html
new file mode 100644
index 0000000000..4c4032c50d
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/async_function/index.html
@@ -0,0 +1,261 @@
+---
+title: 非同期関数
+slug: Web/JavaScript/Reference/Statements/async_function
+tags:
+ - Example
+ - Function
+ - JavaScript
+ - Language feature
+ - Statement
+ - 文
+ - 言語機能
+ - 関数
+translation_of: Web/JavaScript/Reference/Statements/async_function
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><span class="seoSummary"><code><strong>async function</strong></code> 宣言は、 <strong>非同期関数</strong> — {{jsxref("Global_Objects/AsyncFunction","AsyncFunction")}} オブジェクトである関数を定義します。非同期関数は<a href="/ja/docs/Web/JavaScript/EventLoop">イベントループ</a>を介して他のコードとは別に実行され、結果として暗黙の {{jsxref("Promise")}} を返します。ただし、非同期関数を使用したコードの構文および構造は、通常の同期関数と似たものになります。</span></p>
+
+<div class="noinclude">
+<p>{{jsxref("Operators/async_function", "async function 式", "", 1)}} を使用して非同期関数を定義することもできます。</p>
+</div>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-async.html", "taller")}}</div>
+
+<div class="hidden">このインタラクティブデモのソースは GitHub のリポジトリに格納されています。インタラクティブデモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送ってください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">async function <var>name</var>([<var>param</var>[, <var>param</var>[, ...<var>param</var>]]]) {
+ <var>statements</var>
+}
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>name</var></code></dt>
+ <dd>関数名。</dd>
+ <dt><code><var>param</var></code></dt>
+ <dd>関数に渡す引数名。</dd>
+ <dt><code><var>statements</var></code></dt>
+ <dd>関数の本体を構成する文。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>{{jsxref("Promise")}} で、非同期関数から返される値で解決するか、または非同期関数内の捕捉されなかった例外で拒否します。</p>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>非同期関数は、 {{jsxref("Operators/await", "await")}} 式を含むことができます。これは非同期関数の実行を一時停止し、 <code>Promise</code> の解決を待ちます。そして非同期関数の実行を再開し、解決された値を返します。</p>
+
+<p><strong>キーワード <code>await</code> は、非同期関数の中でのみ有効です。</strong>非同期関数の外で使用した場合は {{jsxref("SyntaxError")}} となります。</p>
+
+<p>非同期関数が一時停止している間、呼び出し側の関数は実行が続きます (非同期関数から返される暗黙の Promise を受け取ります)。</p>
+
+<div class="note">
+<p><code>async</code>/<code>await</code> の目的は、 Promise を同期的に使用する動作を簡素化し、 <code>Promise</code> のグループに対して何らかの動作を実行することです。 <code>Promise</code> が構造化コールバックに似ているのと同様に、 <code>async</code>/<code>await</code> はジェネレーターと Promise を組み合わせたものに似ています。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Simple_example" name="Simple_example">シンプルな例</h3>
+
+<pre class="brush: js notranslate">function resolveAfter2Seconds() {
+ console.log("starting slow promise")
+ return new Promise(resolve =&gt; {
+ setTimeout(function() {
+ resolve("slow")
+ console.log("slow promise is done")
+ }, 2000)
+ })
+}
+
+function resolveAfter1Second() {
+ console.log("starting fast promise")
+ return new Promise(resolve =&gt; {
+ setTimeout(function() {
+ resolve("fast")
+ console.log("fast promise is done")
+ }, 1000)
+ })
+}
+
+async function sequentialStart() {
+ console.log('==SEQUENTIAL START==')
+
+ // 1. ここは即時実行される
+ const slow = await resolveAfter2Seconds()
+ console.log(slow) // 2. ここは 1. の2秒後に実行される
+
+ const fast = await resolveAfter1Second()
+ console.log(fast) // 3. ここは 1. の3秒後に実行される
+}
+
+async function concurrentStart() {
+ console.log('==CONCURRENT START with await==');
+ const slow = resolveAfter2Seconds() // 即時実行
+ const fast = resolveAfter1Second() // 即時実行
+
+ // 1. ここは即時実行される
+ console.log(await slow) // 2. ここは 1. の2秒後に実行される
+ console.log(await fast) // 3. ここは 1. の2秒後(2.の直後)に実行される
+}
+
+function concurrentPromise() {
+ console.log('==CONCURRENT START with Promise.all==')
+ return Promise.all([resolveAfter2Seconds(), resolveAfter1Second()]).then((messages) =&gt; {
+ console.log(messages[0]) // slow
+ console.log(messages[1]) // fast
+ })
+}
+
+async function parallel() {
+ console.log('==PARALLEL with await Promise.all==')
+
+ // 2つの jobs を並列に実行し両方が完了するのを待つ
+ await Promise.all([
+ (async()=&gt;console.log(await resolveAfter2Seconds()))(),
+ (async()=&gt;console.log(await resolveAfter1Second()))()
+ ])
+}
+
+// この関数はエラーハンドリングをしていません。後述の注意書きを参照してください。
+function parallelPromise() {
+ console.log('==PARALLEL with Promise.then==')
+ resolveAfter2Seconds().then((message)=&gt;console.log(message))
+ resolveAfter1Second().then((message)=&gt;console.log(message))
+}
+
+sequentialStart() // 2秒後に "slow" をログ出力し、その1秒後に "fast" をログ出力する
+
+// 見やすくするため setTimeout で直前の処理が終わるのを待つ
+setTimeout(concurrentStart, 4000) // 2秒後に "slow" と "fast" をログ出力する
+
+// 直前の処理を待つ
+setTimeout(concurrentPromise, 7000) // concurrentStart と同様
+
+// 直前の処理を待つ
+setTimeout(parallel, 10000) // 本当に並列処理となるため1秒後に "fast" とログ出力し、その1秒後に "slow" とログ出力する
+
+// 直前の処理を待つ
+setTimeout(parallelPromise, 13000) // parallel と同様
+</pre>
+
+<h4 id="await_and_parallelism" name="await_and_parallelism">await と並列性</h4>
+
+<p><code>sequentialStart</code> では、最初の <code>await</code> のために実行が 2 秒間待機し、 2 つ目の <code>await</code> のためにさらに 1 秒間待機します。 2 つ目のタイマーは最初のタイマーが起動している間は作成されません。コードは 3 秒後に終了します。</p>
+
+<p><code>concurrentStart</code> では、両方のタイマーが作成され、両方とも <code>await</code> される、すなわち待機させられます。タイマーは同時に実行されているため、 3 秒後ではなく 2 秒後に、すなわち最も遅いタイマーにあわせて終了します。<br>
+ しかし、 <code>await</code> の呼び出しは依然として逐次処理であり、これは 2 つ目の <code>await</code> が 1 つ目の終了まで待つことを意味します。このケースでは、最も速いタイマーが最も遅いタイマーのあとに処理されることになります。</p>
+
+<p>もし複数の処理を完全に並列に実行したい場合は、上記コード中の <code>parallel</code> のように <code>await Promise.all([job1(), job2()])</code> を使わなければなりません。</p>
+
+<div class="warning">
+<h4 id="asyncawait_vs_Promise.then_and_error_handling" name="asyncawait_vs_Promise.then_and_error_handling">async/await と Promise.then およびエラー処理</h4>
+
+<p>多くの非同期関数は Promise を用いて通常の関数として書くことができます。しかし <code>async</code> 関数はエラー処理において少し簡単です。</p>
+
+<p><code>concurrentStart</code>と<code>concurrentPromise</code>のどちらも関数としては同値です。</p>
+
+<ul>
+ <li><code>concurrentStart</code> では、 <code>await</code> されたいずれかの関数呼び出しが失敗すれば、例外は自動的にキャッチされ、非同期関数の実行が中断され、暗黙的に返される Promise を経由してエラーが呼び出し元へ伝えられます。</li>
+ <li>同じことが Promise の場合にも起こり、関数は、関数の完了をとらえて戻ってくる <code>Promise</code> の面倒を見なければなりません。これは <code>concurrentPromise</code> では <code>Promise.all([]).then()</code> が返す Promise を <code>return</code> することを意味します。実は、この例の前のバージョンはこれをやり忘れていました!</li>
+</ul>
+
+<p>しかしながら非同期関数も誤ってエラーを飲み込んでしまうことがあります。</p>
+
+<p>上記の <code>parallel</code> という非同期関数を例にしてみましょう。もしこれが <code>Promise.all([])</code> 呼び出しの結果を <code>await</code> (もしくは <code>return</code>) しなければ、任意のエラーは伝わりません。</p>
+
+<p><code>parallelPromise</code> の例は簡潔に見えるものの、エラーをまったくハンドルしていません!同じことをするには、やはり <code>return Promise.all[()]</code> が必要になります。</p>
+</div>
+
+<h3 id="Rewriting_a_promise_chain_with_an_async_function" name="Rewriting_a_promise_chain_with_an_async_function">promise チェーンをasync function で 書き換える</h3>
+
+<p>Promise を返す API は Promise チェーンで解決され、関数を複数の部品に分割できます。次のコードを想定してください。</p>
+
+<pre class="brush: js notranslate">function getProcessedData(url) {
+ return downloadData(url) // returns a promise
+ .catch(e =&gt; {
+ return downloadFallbackData(url) // returns a promise
+ })
+ .then(v =&gt; {
+ return processDataInWorker(v) // returns a promise
+ })
+}
+</pre>
+
+<p>次のように 1 つの <code>async</code> 関数に書き直すことができます。</p>
+
+<pre class="brush: js notranslate">async function getProcessedData(url) {
+ let v
+ try {
+ v = await downloadData(url)
+ } catch(e) {
+ v = await downloadFallbackData(url)
+ }
+ return processDataInWorker(v)
+}
+</pre>
+
+<p>上記の例では、 <code>return</code> ステートメント上に <code>await</code> ステートメントがないことに注目してください。なぜなら、<code>async function</code> の返値は暗黙的に {{jsxref("Promise.resolve")}} でラップされているからです。</p>
+
+<div class="blockIndicator note">
+<h4 id="return_await_promiseValue_vs._return_promiseValue" name="return_await_promiseValue_vs._return_promiseValue">return await promiseValue と return promiseValue</h4>
+
+<p>返値が {{jsxref("Promise.resolve")}} で暗黙にラッピングされるとはいえ、 <code>return await promiseValue</code> が <code>return promiseValue</code> と機能的に等価である訳ではありません。</p>
+
+<p>上記のコードを以下のように書き直したと想像してください。これは <code>processDataInWorker</code> がエラーで拒否した場合に <code>null</code> を返します。</p>
+
+<pre class="brush: js notranslate">async function getProcessedData(url) {
+ let v
+ try {
+ v = await downloadData(url)
+ } catch(e) {
+ v = await downloadFallbackData(url)
+ }
+ try {
+ return await processDataInWorker(v) // Note the `return await` vs. just `return`
+ } catch (e) {
+ return null
+ }
+}
+</pre>
+
+<p><code>return processDataInWorker(v)</code> と記述すると、 <code>processDataInWorker(v)</code> が拒否した場合に <code>null</code> に解決されるのではなく、関数が返した {{jsxref("Promise")}} が拒否されてしまいます。</p>
+
+<p>これは、 <code>return foo;</code> と <code>return await foo;</code> の微妙な違いを強調しています。 - <code>return foo</code> はすぐに <code>foo</code> を返し、 <code>foo</code> が拒否する Promise であっても例外を発生させません。 <code>return await foo</code> は、それが Promise であれば <code>foo</code> が解決するか拒否するかを待ち、拒否した場合は<strong>返す前</strong>に例外を発生させます。</p>
+</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-async-function-definitions', 'async function')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.async_function")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Operators/async_function", "async function expression")}}</li>
+ <li>{{jsxref("AsyncFunction")}} オブジェクト</li>
+ <li>{{jsxref("Operators/await", "await")}}</li>
+ <li><a href="http://innolitics.com/10x/javascript-decorators-for-promise-returning-functions/">"innolitics.com" の "Decorating Async Javascript Functions"</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/block/index.html b/files/ja/web/javascript/reference/statements/block/index.html
new file mode 100644
index 0000000000..ea2b87acb2
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/block/index.html
@@ -0,0 +1,118 @@
+---
+title: ブロック
+slug: Web/JavaScript/Reference/Statements/block
+tags:
+ - JavaScript
+ - Language feature
+ - Reference
+ - Statement
+ - 文
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Statements/block
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong>ブロック文</strong> (他の言語では <strong>複合文</strong> とも呼ばれる) は 0 個以上の文をグループ化するのに使われます。ブロックは中括弧 (「波括弧」) の組で区切られ、場合によっては{{jsxref("Statements/label", "ラベル", "", 1)}}が付くことがあります。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-block.html", "taller")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<h3 id="Block_Statement" name="Block_Statement">ブロック文</h3>
+
+<pre class="syntaxbox notranslate">{
+ <em>StatementList</em>
+}
+</pre>
+
+<h3 id="Labelled_Block_Statement" name="Labelled_Block_Statement">ラベル付きブロック文</h3>
+
+<pre class="syntaxbox notranslate"><em>LabelIdentifier</em>: {
+ <em>StatementList</em>
+}
+</pre>
+
+<dl>
+ <dt><code>StatementList</code></dt>
+ <dd>ブロック文の中でグループ化される文。</dd>
+ <dt><code>LabelIdentifier</code></dt>
+ <dd>省略可能な{{jsxref("Statements/label", "ラベル", "", 1)}}で、視覚的な識別のため、または {{jsxref("Statements/break", "break")}} のターゲットとして使われます。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>ブロック文は、他の言語ではよく<strong>複合文</strong>と呼ばれます。これは複数の文を JavaScript からみて1つの文にまとめるために使用します。ブロック内に複数の文をまとめることは、JavaScript ではよく行われることです。反対の動作は<a href="/en-US/docs/Web/JavaScript/Reference/Statements/Empty">空文</a>を使用することで実現でき、これは1つの文が必要な場所に文を置かずにおくことができます。</p>
+
+<p>ブロックは、{{jsxref("Statements/if...else", "if...else")}} や {{jsxref("Statements/for", "for")}} 文との組み合わせでよく使用されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Block_scoping_rules_with_var_or_function_declaration_in_non-strict_mode" name="Block_scoping_rules_with_var_or_function_declaration_in_non-strict_mode">非厳格モード時の var または関数定義のブロックスコープの規則</h3>
+
+<p>非厳格モードでは、<code>var</code> の宣言や、<a href="/ja/docs/Web/JavaScript/Reference/Statements/function">関数宣言</a>で作成された変数は、ブロックスコープを<strong>持ちません</strong>。ブロック内で導入された変数は、それを含んでいる関数またはスクリプトがスコープとなり、変数を設定した効果は、そのブロック自体を超えて持続します。言い換えれば、ブロック文はスコープをもたらしません。例えば、</p>
+
+<pre class="brush: js example-bad notranslate">var x = 1;
+{
+ var x = 2;
+}
+console.log(x); // 2 が出力されます
+</pre>
+
+<p>これが 2 を出力するのは、ブロックの中の <code>var x</code> 文がブロックより前と同じスコープを持つからです。</p>
+
+<p>非厳格モードでは、ブロック内の関数定義は奇妙な動きをします。使用しないでください。</p>
+
+<h3 id="Block_scoping_rules_with_let_const_or_function_declaration_in_strict_mode" name="Block_scoping_rules_with_let_const_or_function_declaration_in_strict_mode">厳格モード時の let、const、関数宣言のブロックスコープの規則</h3>
+
+<p>対照的に、{{jsxref("Statements/let", "let")}} と {{jsxref("Statements/const", "const")}} で宣言された識別子は、ブロックスコープを<strong>持ち</strong>ます。</p>
+
+<pre class="brush: js notranslate">let x = 1;
+{
+ let x = 2;
+}
+console.log(x); // 1 が出力されます</pre>
+
+<p>この <code>x = 2</code> は、それが定義されたブロックのスコープに制限されています。</p>
+
+<p>同じことが <code>const</code> にも言えます。</p>
+
+<pre class="brush: js notranslate">const c = 1;
+{
+ const c = 2;
+}
+console.log(c); // 1 が出力され、SyntaxError は発生しない...</pre>
+
+<p>ブロックスコープを持つ <code>const c = 2</code> は、ブロック内で固有に宣言することができるため、<code>SyntaxError: Identifier 'c' has already been declared</code> を発生させ<em>ない</em>ことに注意してください。</p>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a>は ES2015 に導入され、ブロック内の関数がそのブロックのスコープを持ちます。ES2015 より前では、ブロックレベルの関数は厳格モードで禁止されていました。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-block', 'Block statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.block")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/while", "while")}}</li>
+ <li>{{jsxref("Statements/if...else", "if...else")}}</li>
+ <li>{{jsxref("Statements/let", "let")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/break/index.html b/files/ja/web/javascript/reference/statements/break/index.html
new file mode 100644
index 0000000000..4ee541b435
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/break/index.html
@@ -0,0 +1,157 @@
+---
+title: break
+slug: Web/JavaScript/Reference/Statements/break
+tags:
+ - JavaScript
+ - Language feature
+ - Reference
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/break
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>break</code> 文</strong>は現在のループや {{jsxref("Statements/switch", "switch")}} 文や{{jsxref("Statements/label", "ラベル", "", 1)}}文を中断し、中断した文の次の文にプログラムの制御を移します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-break.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">break [<var>label</var>];</pre>
+
+<dl>
+ <dt><code><var>label</var></code> {{optional_inline}}</dt>
+ <dd>中断する文のラベルに関連付けられた識別子。中断する文がループでも {{jsxref("Statements/switch", "switch")}} でもない場合、ラベルは必須です。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>break</code> 文は、オプションでラベルを指定して、ラベル付き文の外にプログラムを脱出させることができます。 <code>break</code> 文は参照されるラベルの内側にある必要があります。ラベルはあらゆる{{jsxref("Statements/block", "ブロック", "", 1)}}文に付けることができます。ループ文の前である必要はありません。</p>
+
+<p><code>break</code> 文は、その後にラベルがあるかどうかに関わらず、 <code>break</code> 文で脱出しようとする現在のループや switch やラベル付き文の中に含まれる関数の本体の中で使用することはできません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="break_in_while_loop" name="break_in_while_loop">while ループにおける break</h3>
+
+<p>次の関数には <code>i</code> が <code>3</code> の時に {{jsxref("Statements/while", "while")}} 文を中断する <code>break</code> 文があるので、<code>3 * x</code> の値を返します。</p>
+
+<pre class="brush:js;highlight:[6]; notranslate">function testBreak(x) {
+ var i = 0;
+
+ while (i &lt; 6) {
+ if (i == 3) {
+ break;
+ }
+ i += 1;
+ }
+
+ return i * x;
+}</pre>
+
+<h3 id="break_in_switch_statements" name="break_in_switch_statements">switch 文における break</h3>
+
+<p>次のコードには、一致する case と対応するコードが実行された後で {{jsxref("Statements/switch", "switch")}} 文を終了するための <code>break</code> があります。</p>
+
+<pre class="brush:js;highlight:[6]; notranslate">const food = "sushi";
+
+switch (food) {
+ case "sushi":
+ console.log("Sushi is originally from Japan.");
+ break;
+ case "pizza":
+ console.log("Pizza is originally from Italy.");
+ break;
+ default:
+ console.log("I have never heard of that dish.");
+ break;
+}
+</pre>
+
+<h3 id="break_in_labeled_blocks" name="break_in_labeled_blocks">ラベル付きブロックにおける break</h3>
+
+<p>次のコードは、ラベル付きブロックで <code>break</code> 文を使っています。 <code>break</code> 文は、それを参照するラベル付き文の内側になければなりません。 <code>inner_block</code> が <code>outer_block</code> の中にあることに注意してください。</p>
+
+<pre class="brush:js;highlight:[1,2,4]; notranslate">outer_block: {
+ inner_block: {
+ console.log('1');
+ break outer_block; // inner_block および outer_block の両方から抜けます
+ console.log(':-('); // スキップされる
+ }
+ console.log('2'); // スキップされる
+}
+</pre>
+
+<h3 id="break_in_labeled_blocks_that_throw" name="break_in_labeled_blocks_that_throw">ラベル付きブロックにおける break でエラーが発生するもの</h3>
+
+<p>次のコードもラベル付きブロックで <code>break</code> 文を使っていますが、 <code>break</code> 文が <code>block_1</code> の内側にあるにもかかわらず <code>block_2</code> を参照しているので、 <code>SyntaxError</code> が発生します。 <code>break</code> は、参照先ラベルの内側になければなりません。</p>
+
+<pre class="brush:js;highlight:[1,3,6]; notranslate">block_1: {
+ console.log('1');
+ break block_2; // SyntaxError: label not found
+}
+
+block_2: {
+ console.log('2');
+}
+</pre>
+
+<h3 id="break_within_functions" name="break_within_functions">関数における break</h3>
+
+<p>以下のコード例でも <code>SyntaxError</code> が発生します。これは <code>break</code> をループの中にある関数や、 <code>break</code> 文で脱出しようとしているラベル付きブロックの中にある関数の中で使用しているためです。</p>
+
+<pre class="brush:js;highlight:[1,3,6]; notranslate">function testBreak(x) {
+ var i = 0;
+
+ while (i &lt; 6) {
+ if (i == 3) {
+ (function() {
+ break;
+ })();
+ }
+ i += 1;
+ }
+
+return i * x;
+}
+
+testBreak(1); // SyntaxError: Illegal break statement
+</pre>
+
+<pre class="brush:js;highlight:[1,3,6]; notranslate">block_1: {
+ console.log('1');
+ ( function() {
+ break block_1; // SyntaxError: Undefined label 'block_1'
+ })();
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-break-statement', 'Break statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.break")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/continue", "continue")}}</li>
+ <li>{{jsxref("Statements/label", "ラベル", "", 1)}}</li>
+ <li>{{jsxref("Statements/switch", "switch")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/class/index.html b/files/ja/web/javascript/reference/statements/class/index.html
new file mode 100644
index 0000000000..fb92abda81
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/class/index.html
@@ -0,0 +1,102 @@
+---
+title: class
+slug: Web/JavaScript/Reference/Statements/class
+tags:
+ - Classes
+ - Declaration
+ - ECMAScript6
+ - JavaScript
+ - Reference
+ - クラス
+ - 宣言
+translation_of: Web/JavaScript/Reference/Statements/class
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong>クラス宣言</strong>は、プロトタイプベースの継承を使って、指定された名前の新しいクラスを作成します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-class.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div class="noinclude">
+<p>{{jsxref("Operators/class", "クラス式", "", 1)}}を使ってクラスを定義することもできます。しかし、クラス式と異なり、クラス宣言は既存のクラスを再宣言することができず、再宣言しようとすると {{jsxref("SyntaxError")}} が発生します。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">class <var>name</var> [extends <var>otherName</var>] {
+ // クラス本体
+}</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>クラス式と同様、クラス宣言の内部は<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a>で実行されます。 <code>constructor</code> メソッドは省略可能です。</p>
+
+<p>クラス宣言は{{Glossary("Hoisting", "巻き上げ")}}が行われません (<a href="/ja/docs/Web/JavaScript/Reference/Statements/function">関数宣言</a>とは異なります)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="A_simple_class_declaration" name="A_simple_class_declaration">単純なクラス宣言</h3>
+
+<p>次の例では、はじめに <code>Polygon</code> という名前のクラスを定義し、次にそれを拡張して <code>Square</code> という名前のクラスを作成します。</p>
+
+<p>なお、コンストラクターで使われている <code>super()</code> は、コンストラクター内でのみ使えること、 <code>this</code> キーワードの使用<em>前</em>に呼び出さなくてはならないことに注意してください。</p>
+
+<pre class="brush: js">class Polygon {
+ constructor(height, width) {
+ this.name = 'Polygon';
+ this.height = height;
+ this.width = width;
+ }
+}
+
+class Square extends Polygon {
+ constructor(length) {
+ super(length, length);
+ this.name = 'Square';
+ }
+}</pre>
+
+<h3 id="Attempting_to_declare_a_class_twice" name="Attempting_to_declare_a_class_twice">クラスを二度宣言する</h3>
+
+<p>クラス宣言を使って再度クラスを宣言すると、 {{jsxref("SyntaxError")}} が発生します。</p>
+
+<pre class="brush: js example-bad">class Foo {};
+class Foo {}; // Uncaught SyntaxError: Identifier 'Foo' has already been declared
+</pre>
+
+<p>クラス式を使って事前にクラスを定義していたときも、同じエラーが発生します。</p>
+
+<pre class="brush: js example-bad">let Foo = class {};
+class Foo {}; // Uncaught SyntaxError: Identifier 'Foo' has already been declared
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.class")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/function"><code>function</code> 宣言</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/class"><code>class</code> 式</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Classes">クラス</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/const/index.html b/files/ja/web/javascript/reference/statements/const/index.html
new file mode 100644
index 0000000000..43adf695ee
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/const/index.html
@@ -0,0 +1,157 @@
+---
+title: const
+slug: Web/JavaScript/Reference/Statements/const
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Language feature
+ - Reference
+ - Statement
+ - constants
+translation_of: Web/JavaScript/Reference/Statements/const
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p>定数 (const) は、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code> キーワードを使って定義する変数と同じ、ブロックスコープを持ちます。定数の値は、再代入による変更はできず、再宣言もできません。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-const.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">const <var>name1</var> = <var>value1</var> [, <var>name2</var> = <var>value2</var> [, ... [, <var>nameN</var> = <var>valueN</var>]]];</pre>
+
+<dl>
+ <dt><code><var>nameN</var></code></dt>
+ <dd>定数名。正当な{{Glossary("identifier", "識別子")}}ならは、どんなものでもかまいません。</dd>
+ <dt><code><var>valueN</var></code></dt>
+ <dd>定数の値。正当な<a href="/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressions">式</a>ならば、どんなものでもかまいません。</dd>
+</dl>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">分割代入</a>構文は、変数の宣言にも使用できます。</p>
+
+<pre class="syntaxbox notranslate">const <var>{ bar }</var> = <em>foo</em>; // where foo = { bar:10, baz:12 };
+/* これは、値が 10 の 'bar' という名前の変数を作成します。*/</pre>
+
+<dl>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>この宣言は、宣言された場所に応じて、グローバルまたはブロック内にローカルなスコープを持った定数を作成します。グローバルな定数は {{jsxref("Statements/var", "var")}} 変数とは異なり、{{domxref("window")}} オブジェクトのプロパティには<strong>なりません</strong>。</p>
+
+<p>定数には初期化子が必要です。その値は、宣言されたのと同じ文の中で指定しなければなりません。(後から変更できないことを考えると、これは理にかなっています)</p>
+
+<p><strong><code>const</code> 宣言</strong>は、値への読み取り専用の参照を作ります。これは、定数に保持されている値は<strong>不変ではなく</strong>、その変数の識別子が再代入できないということです。たとえば、定数の中身がオブジェクトの場合、オブジェクトの内容(プロパティなど)は変更可能です。</p>
+
+<p>「<a href="/ja/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone">一時的なデッドゾーン</a>」に関する考慮事項はすべて、{{jsxref("Statements/let", "let")}} と <code>const</code> の両方に適用されます。</p>
+
+<p>定数は、同じスコープ内の関数や変数と同じ名前にすることはできません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Basic_const_usage" name="Basic_const_usage">基本的な定数の使い方</h3>
+
+<p>定数は大文字または小文字で宣言することができますが、すべて大文字で宣言するのが慣例です。</p>
+
+<pre class="brush: js; notranslate">// MY_FAV を定数として定義して、その値を 7 にします。
+const MY_FAV = 7;
+
+// これはエラーを投げます。
+// Uncaught TypeError: Assignment to constant variable.
+MY_FAV = 20;
+
+// MY_FAV は 7 です。
+console.log('my favorite number is: ' + MY_FAV);
+
+// 定数を再宣言しようとするとエラーを投げます。
+// Uncaught SyntaxError: Identifier 'MY_FAV' has already been declared
+const MY_FAV = 20;
+
+// MY_FAV という名前は上記の定数のために予約されているので、これも失敗します。
+var MY_FAV = 20;
+
+// これもエラーを投げます。
+let MY_FAV = 20;
+
+</pre>
+
+<h3 id="Block_scoping" name="Block_scoping">ブロックスコープ</h3>
+
+<p>ブロックスコープの性質に注意することが重要です。</p>
+
+<pre class="brush: js notranslate">if (MY_FAV === 7) {
+ // これは問題なく、ブロックスコープの MY_FAV 変数を作成します。
+ // (ブロックスコープの変数を宣言する let も問題なく機能します)
+ let MY_FAV = 20;
+
+ // MY_FAV は現在 20 です。
+ console.log('my favorite number is ' + MY_FAV);
+
+ // これはグローバルコンテキストに巻き上げられ、エラーを投げます。
+ var MY_FAV = 20;
+}
+
+// MY_FAV は 7 のままです。
+console.log('my favorite number is ' + MY_FAV);
+</pre>
+
+<h3 id="const_needs_to_be_initialized" name="const_needs_to_be_initialized">定数は初期化が必要です。</h3>
+
+<pre class="brush: js notranslate">// エラーが投げられます。
+// Uncaught SyntaxError: Missing initializer in const declaration
+
+const FOO;
+</pre>
+
+<h3 id="const_in_objects_and_arrays" name="const_in_objects_and_arrays">オブジェクトと配列の定数</h3>
+
+<p>定数はオブジェクトや配列に対しても動作します。</p>
+
+<pre class="brush: js notranslate">const MY_OBJECT = {'key': 'value'};
+
+// オブジェクトの上書きはエラーを投げます。
+// Uncaught TypeError: Assignment to constant variable.
+MY_OBJECT = {'OTHER_KEY': 'value'};
+
+// しかしながら、オブジェクトのキーは保護されていないので、
+// 次の文は問題なく実行されます。
+MY_OBJECT.key = 'otherValue'; // Object.freeze() を使用すればオブジェクトを不変にできます。
+
+// 配列も同じです。
+const MY_ARRAY = [];
+// 配列にアイテムをプッシュすることができます。
+MY_ARRAY.push('A'); // ["A"]
+// しかしながら、新しい配列を変数に代入するとエラーを投げます。
+// Uncaught TypeError: Assignment to constant variable.
+MY_ARRAY = ['B'];</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-let-and-const-declarations', 'Let and Const Declarations')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.const")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/var", "var")}}</li>
+ <li>{{jsxref("Statements/let", "let")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Grammar_and_types#Constants">JavaScript ガイド - 『値、変数、リテラル』 - 定数</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/continue/index.html b/files/ja/web/javascript/reference/statements/continue/index.html
new file mode 100644
index 0000000000..76bcc65b8b
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/continue/index.html
@@ -0,0 +1,144 @@
+---
+title: continue
+slug: Web/JavaScript/Reference/Statements/continue
+tags:
+ - JavaScript
+ - Language feature
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/continue
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>continue</code> 文</strong>は、現在のループまたはラベル付きループの現在反復処理中の文の実行を終了して、次の反復処理でループの実行を続けます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-continue.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">continue [<var>label</var>];</pre>
+
+<dl>
+ <dt><code><var>label</var></code></dt>
+ <dd>その文のラベルに関連付けられた識別子。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>{{jsxref("Statements/break", "break")}} 文と対照的に、 <code>continue</code> はループの実行を完全には終了しません。代わりに、</p>
+
+<ul>
+ <li>{{jsxref("Statements/while", "while")}} ループでは、条件式にジャンプします。</li>
+</ul>
+
+<ul>
+ <li>{{jsxref("Statements/for", "for")}} ループでは、更新式までジャンプします。</li>
+</ul>
+
+<p><code>continue</code> 文には任意でラベルを含めることができ、現在のループの代わりにラベル付きループ文の次の反復処理へジャンプすることができます。この場合、<code>continue</code> 文は、ラベル付き文の中にある必要があります。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_continue_with_while" name="Using_continue_with_while">while における continue の使用</h3>
+
+<p>次の例では、 {{jsxref("Statements/while", "while")}} ループで <code>i</code> の値が 3 であるときに実行される <code>continue</code> 文を持つものを示しています。よって、 <code>n</code> は 1、3、7、12 の値をとります。</p>
+
+<pre class="brush: js notranslate">var i = 0;
+var n = 0;
+
+while (i &lt; 5) {
+ i++;
+
+ if (i === 3) {
+ continue;
+ }
+
+ n += i;
+}
+</pre>
+
+<h3 id="Using_continue_with_a_label" name="Using_continue_with_a_label">ラベル付き continue の使用</h3>
+
+<p>次の例では、<code>checkiandj</code> とラベル付けされた文が、<code>checkj</code> とラベル付けされた文を含んでいます。もし <code>continue</code> と遭遇したなら、プログラムは <code>checkj</code> 文の先頭から継続します。<code>continue</code> と遭遇するたびに、<code>checkj</code> の条件が false を返すまで、<code>checkj</code> は再度反復します。false が返されたら、<code>checkiandj</code> 文の残りが完遂されます。</p>
+
+<p>もし <code>continue</code> がラベル <code>checkiandj</code> を持っていたなら、プログラムは <code>checkiandj</code> 文の先頭から継続します。</p>
+
+<p>{{jsxref("Statements/label", "ラベル", "", 1)}}もご覧ください。</p>
+
+<pre class="brush: js notranslate">var i = 0;
+var j = 8;
+
+checkiandj: while (i &lt; 4) {
+ console.log('i: ' + i);
+ i += 1;
+
+ checkj: while (j &gt; 4) {
+ console.log('j: ' + j);
+ j -= 1;
+
+ if ((j % 2) == 0)
+ continue checkj;
+ console.log(j + ' is odd.');
+ }
+ console.log('i = ' + i);
+ console.log('j = ' + j);
+}
+</pre>
+
+<p>結果:</p>
+
+<pre class="brush: js notranslate">i: 0
+
+// start checkj
+j: 8
+7 is odd.
+j: 7
+j: 6
+5 is odd.
+j: 5
+// end checkj
+
+i = 1
+j = 4
+
+i: 1
+i = 2
+j = 4
+
+i: 2
+i = 3
+j = 4
+
+i: 3
+i = 4
+j = 4
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-continue-statement', 'Continue statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.continue")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/break", "break")}}</li>
+ <li>{{jsxref("Statements/label", "ラベル", "", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/debugger/index.html b/files/ja/web/javascript/reference/statements/debugger/index.html
new file mode 100644
index 0000000000..c4add1052b
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/debugger/index.html
@@ -0,0 +1,59 @@
+---
+title: debugger
+slug: Web/JavaScript/Reference/Statements/debugger
+tags:
+ - JavaScript
+ - Language feature
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/debugger
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>debugger</code> 文</strong>は、ブレークポイントの設定のような任意の利用可能なデバッグ機能を呼び出します。デバッグ機能が利用可能ではない場合、この文は効果がありません。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">debugger;</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_the_debugger_statement" name="Using_the_debugger_statement">debugger 文の使用</h3>
+
+<p>次の例は、関数が呼び出されたときに、デバッガーを (存在すれば) 呼び出すように、 <code>debugger</code> 文が挿入されているコードを示します。</p>
+
+<pre class="brush:js notranslate">function potentiallyBuggyCode() {
+ debugger;
+ // do potentially buggy stuff to examine, step through, etc.
+}</pre>
+
+<p>デバッガーが起動していると、実行は <code>debugger</code> 文で停止します。スクリプトのソース内でのブレークポイントと似ています。</p>
+
+<p><a href="https://mdn.mozillademos.org/files/6963/Screen Shot 2014-02-07 at 9.14.35 AM.png"><img alt="Paused at a debugger statement." src="https://mdn.mozillademos.org/files/6963/Screen%20Shot%202014-02-07%20at%209.14.35%20AM.png" style="height: 371px; width: 700px;"></a></p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-debugger-statement', 'Debugger statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.debugger")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Debugging/Debugging_JavaScript">JavaScript のデバッグ</a></li>
+ <li><a href="/ja/docs/Tools/Debugger">Firefox 開発者ツール内のデバッガー</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/do...while/index.html b/files/ja/web/javascript/reference/statements/do...while/index.html
new file mode 100644
index 0000000000..b38381139a
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/do...while/index.html
@@ -0,0 +1,79 @@
+---
+title: do...while
+slug: Web/JavaScript/Reference/Statements/do...while
+tags:
+ - JavaScript
+ - Statement
+ - 文
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Statements/do...while
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>do...while</code> 文</strong>は指定された文を、テスト条件が false に評価されるまで実行するループを作成します。条件は文を実行した後に評価されます。結果として、指定された文は少なくとも 1 回は実行されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-dowhile.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">do
+ <em>statement</em>
+while (<em>condition</em>);
+</pre>
+
+<dl>
+ <dt><code><em>statement</em></code></dt>
+ <dd>少なくとも 1 回は実行され、条件が真に評価されるたびに再度実行される文。ループ内で複数の文を実行するには、それらの文をグループ化するために{{jsxref("Statements/block", "ブロック", "", 1)}}文 (<code>{ ... }</code>) を使ってください。</dd>
+</dl>
+
+<dl>
+ <dt><code><em>condition</em></code></dt>
+ <dd>ループを通過した後ごとに評価される式。もし <code>condition</code> が true に評価されるなら、<code>statement</code> は再度実行されます。<code>condition</code> が false に評価されるときは、制御が <code>do...while</code> に続く文へ渡ります。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_do...while" name="Using_do...while"><code>do...while</code> の使用</h3>
+
+<p>次の例では、 <code>do...while</code> ループを少なくとも1回は実行し、 <code>i</code> が 5 より小さいという条件を満たさなくなるまで反復します。</p>
+
+<pre class="brush: js">var result = '';
+var i = 0;
+do {
+   i += 1;
+   result += i + ' ';
+}
+while (i &gt; 0 &amp;&amp; i &lt; 5);
+// Despite i == 0 this will still loop as it starts off without the test
+
+console.log(result);</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-do-while-statement', 'do-while statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.do_while")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/while", "while")}}</li>
+ <li>{{jsxref("Statements/for", "for")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/empty/index.html b/files/ja/web/javascript/reference/statements/empty/index.html
new file mode 100644
index 0000000000..022e12076b
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/empty/index.html
@@ -0,0 +1,94 @@
+---
+title: 空文
+slug: Web/JavaScript/Reference/Statements/Empty
+tags:
+ - JavaScript
+ - Language feature
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/Empty
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong>空文</strong> は、JavaScript 構文で文が想定されているときに、文を用意しないために使います。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-empty.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">;
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>空文はセミコロン (<code>;</code>) で、JavaScript 構文が文を必要とするときでも文を実行しないことを示します。</p>
+
+<p>逆のふるまいとして、 JavaScript が単一文のみ許可しているのに複数の文にしたい場合には、<a href="/ja/docs/Web/JavaScript/Reference/Statements/block">ブロック文</a>を使ってください。ブロック文は、いくつかの文を単一文に結合します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Empty_loop_body" name="Empty_loop_body">空のループ本体</h3>
+
+<p>空文は、ループ文で使われることがあります。ループ本体が空である以下の例をご覧ください。</p>
+
+<pre class="brush: js notranslate">let arr = [1, 2, 3];
+
+// 配列の値をすべて 0 にする
+for (let i = 0; i &lt; arr.length; arr[i++] = 0) /* 空文 */ ;
+
+console.log(arr);
+// [0, 0, 0]
+</pre>
+
+<h3 id="Unintentional_usage" name="Unintentional_usage">意図的でない使用</h3>
+
+<p>空文を<em>意図的</em>に使っていることをコメントするとよいでしょう。通常のセミコロンと区別するのが難しいからです。</p>
+
+<p>次の例は、おそらく意図的でない使用例です。</p>
+
+<pre class="brush: js example-bad notranslate">if (condition); // 注意: この "if" は何の意味もない!
+ killTheUniverse() // この関数が常に実行される!!!
+</pre>
+
+<p>次の例では、 {{jsxref("Statements/if...else", "if...else")}} 文が中括弧 (<code>{}</code>) なしで使われています。</p>
+
+<p><code>three</code> が <code>true</code> である場合、何も起こらず、 <code>four</code> の値にも関係なく、 <code>else</code> 内の <code>launchRocket()</code> 関数も実行されません。</p>
+
+<pre class="brush: js example-bad notranslate">if (one)
+ doOne();
+else if (two)
+ doTwo();
+else if (three)
+ ; // 何もしない
+else if (four)
+ doFour();
+else
+ launchRocket();</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-empty-statement', 'Empty statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.empty")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/block", "Block statement")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/export/index.html b/files/ja/web/javascript/reference/statements/export/index.html
new file mode 100644
index 0000000000..0f8478f74c
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/export/index.html
@@ -0,0 +1,268 @@
+---
+title: export
+slug: Web/JavaScript/Reference/Statements/export
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Language feature
+ - Modules
+ - Reference
+ - Statement
+ - export
+translation_of: Web/JavaScript/Reference/Statements/export
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>export</code></strong> 文は JavaScript モジュールを作成するときに使用され、モジュールから関数、オブジェクト、またはプリミティブ値へのライブバインディングのエクスポートを行い、{{jsxref("Statements/import", "import")}} 文を使用した他のプログラムが使用できるようにします。インポートされたモジュールは読み取り専用で、エクスポートされたモジュールが変更されるたびに値が更新されます。</p>
+
+<p>エクスポートされたモジュールは、宣言のあるなしにかかわらず {{jsxref("Strict_mode","Strict モード", "", 1)}}で動作します。export 文は、埋め込みスクリプトでは使えません。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p>2種類のエクスポート方法があります。</p>
+
+<ol>
+ <li>名前付きエクスポート (モジュールごとに 0 以上のエクスポート)</li>
+ <li>デフォルトエクスポート (モジュールごとに 1 つのエクスポート)</li>
+</ol>
+
+<pre class="syntaxbox notranslate">// 個々の機能をエクスポート
+export let <var>name1</var>, <var>name2</var>, …, <var>nameN</var>; // var, const も
+export let <var>name1</var> = …, <var>name2</var> = …, …, <var>nameN</var>; // var, const も
+export function functionName(){...}
+export class ClassName {...}
+
+// リストでエクスポート
+export { <var>name1</var>, <var>name2</var>, …, <var>nameN</var> };
+
+// 名前を変更してエクスポート
+export { <var>variable1</var> as <var>name1</var>, <var>variable2</var> as <var>name2</var>, …, <var>nameN</var> };
+
+// 分割代入してエクスポート
+export const { <var>name1</var>, <var>name2: bar</var> } = o;
+
+// デフォルトエクスポート
+export default <em>expression</em>;
+export default function (…) { … } // class, function* も使用可
+export default function name1(…) { … } // class, function* も使用可
+export { <var>name1</var> as default, … };
+
+// モジュールの集約
+export * from …; // デフォルトエクスポートを設定しません
+export * as name1 from …; // ECMAScript® 2O21 の草案
+export { <var>name1</var>, <var>name2</var>, …, <var>nameN</var> } from …;
+export { <var>import1</var> as <var>name1</var>, <var>import2</var> as <var>name2</var>, …, <var>nameN</var> } from …;
+export { default } from …;</pre>
+
+<dl>
+ <dt><code><var>nameN</var></code></dt>
+ <dd>エクスポートする識別子です。(別のスクリプトが {{jsxref("Statements/import", "import")}} を使用してインポート可能になります。) </dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>エクスポート方法は、<strong>名前付き</strong>と<strong>デフォルト</strong>の 2 種類あります。名前付きエクスポートはモジュールごとに複数持てますが、デフォルトエクスポートは 1 つに限ります。それぞれのエクスポート方法は、上記の構文のひとつに対応します。</p>
+
+<p>名前付きエクスポート:</p>
+
+<pre class="brush: js notranslate">// 事前に宣言された機能のエクスポート
+export { myFunction, myVariable };
+
+// 個別の機能のエクスポート
+// (var, let, const, function, class がエクスポート可能)
+export let myVariable = Math.sqrt(2);
+export function myFunction() { ... };
+</pre>
+
+<p>デフォルトエクスポート:</p>
+
+<pre class="brush: js notranslate">// デフォルトとして事前に定義された機能のエクスポート
+export { myFunction as default };
+
+// 個別の機能をデフォルトとしてエクスポート
+export default function () { ... }
+export default class { .. }
+
+// 各エクスポートは前のエクスポートを上書きします
+</pre>
+
+<p>名前付きエクスポートは、さまざまな値をエクスポートするのに役立ちます。インポートするときは、対応するオブジェクトと同じ名前を使用しなければなりません。</p>
+
+<p>一方、デフォルトエクスポートは以下のように任意の名前を使用できます。</p>
+
+<pre class="brush: js notranslate">// ファイル test.js
+let k; export default k = 12;
+</pre>
+
+<pre class="brush: js notranslate">// 他のファイル
+import m from './test'; // k がデフォルトエクスポートなので、インポートする k の代わりに m を使用することができる点に注意してください
+console.log(m); // log 12 になる
+</pre>
+
+<p>名前の競合を防ぐために、名前付きエクスポートの名前を変更することもできます。</p>
+
+<pre class="brush: js notranslate">export { <var>myFunction</var> as <var>function1</var>,<var>
+ myVariable</var> as variable };</pre>
+
+<h3 id="Re-exporting_Aggregating" name="Re-exporting_Aggregating">再エクスポート / 集約</h3>
+
+<p>また、親モジュール内の異なるモジュールから「インポート/エクスポート」して、そのモジュールからインポートできるようにすることも可能です。言い換えれば、様々なモジュールからの様々なエクスポートを集約した 1 つのモジュールを作成することができます。</p>
+
+<p>これは "export from" 構文で実現できます。</p>
+
+<pre class="brush: js notranslate">export { default as function1,
+ function2 } from 'bar.js';
+</pre>
+
+<p>これは、インポートとエクスポートの組み合わせに相当します。</p>
+
+<pre class="brush: js notranslate">import { default as function1,
+ function2 } from 'bar.js';
+export { function1, function2 };
+</pre>
+
+<p>現在のモジュール内で <code>function1</code> と <code>function2</code> が利用できない場合。</p>
+
+<div class="blockIndicator note">
+<p><strong>メモ:</strong> 以下は、インポートに相当するにもかかわらず、構文的に無効です。</p>
+</div>
+
+<pre class="brush: js notranslate">import DefaultExport from 'bar.js'; // 有効
+</pre>
+
+<pre class="brush: js notranslate">export DefaultExport from 'bar.js'; // 無効</pre>
+
+<p>これを行う正しい方法は、エクスポートの名前を変更することです。</p>
+
+<pre class="brush: js notranslate">export { default as DefaultExport } from 'bar.js';
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_named_exports" name="Using_named_exports">名前付きエクスポートの使用</h3>
+
+<p><code>my-module.js</code> モジュールの中で、以下のコードを含めることができます。</p>
+
+<pre class="brush: js notranslate">// "my-module.js" モジュール
+function cube(x) {
+ return x * x * x;
+}
+
+const foo = Math.PI + Math.SQRT2;
+
+var graph = {
+ options: {
+ color:'white',
+ thickness:'2px'
+ },
+ draw: function() {
+ console.log('From graph draw function');
+ }
+}
+
+export { cube, foo, graph };
+</pre>
+
+<p>HTML ページの中に含まれる最上位モジュールの中では、次のようにすることができます。</p>
+
+<pre class="brush: js notranslate">import { cube, foo, graph } from './my-module.js';
+
+graph.options = {
+ color:'blue',
+ thickness:'3px'
+};
+
+graph.draw();
+console.log(cube(3)); // 27
+console.log(foo); // 4.555806215962888</pre>
+
+<p>以下の点に注意することが重要です。</p>
+
+<ul>
+ <li>このスクリプトを HTML の {{htmlelement("script")}} 要素で type="module" を指定したものに入れる必要があり、そうすれば適切にモジュールとして認識され、扱われます。</li>
+ <li><code>file://</code> の URL で JavaScript モジュールを実行することはできません。— <a href="/ja/docs/Web/HTTP/CORS">CORS</a> エラーになります。HTTP サーバーを通して実行する必要があります。</li>
+</ul>
+
+<h3 id="Using_the_default_export" name="Using_the_default_export">デフォルトエクスポートの使用</h3>
+
+<p>値をひとつエクスポートしたい、あるいはモジュールでフォールバック先の値を持ちたい場合は、デフォルトエクスポートを使用するとよいでしょう。</p>
+
+<pre class="brush: js notranslate">// module "my-module.js"
+
+export default function cube(x) {
+ return x * x * x;
+}
+</pre>
+
+<p>別のスクリプトからの、デフォルトエクスポートのインポートは簡単です。</p>
+
+<pre class="brush: js notranslate">import cube from './my-module.js';
+console.log(cube(3)); // 27
+</pre>
+
+<h3 id="Using_export_from" name="Using_export_from">export from の使用</h3>
+
+<p>以下のような階層がある場合を例に考えてみましょう。</p>
+
+<ul>
+ <li><code>childModule1.js</code>: <code>myFunction</code> および <code>myVariable</code> をエクスポート</li>
+ <li><code>childModule2.js</code>: <code>myClass</code> をエクスポート</li>
+ <li><code>parentModule.js</code>: 集約元として動作する (他には何もしない)</li>
+ <li>最上位モジュール: <code>parentModule.js</code> のエクスポートを利用する</li>
+</ul>
+
+<p>コードスニペットを使うとこのような感じになります。</p>
+
+<pre class="brush: js notranslate">// childModule1.js
+let myFunction = ...; // myFunction に役立つものを割り当てる
+let myVariable = ...; // myVariablemy に役立つものを割り当てる
+export {myFunction, myVariable};
+</pre>
+
+<pre class="brush: js notranslate">// childModule2.js
+let myClass = ...; // myClass に役立つものを代入する
+export myClass;
+</pre>
+
+<pre class="brush: js notranslate">// parentModule.js
+// childModule1 と childModule2 からのエクスポートを
+// 集約して再エクスポートする
+export { myFunction, myVariable } from 'childModule1.js';
+export { myClass } from 'childModule2.js';
+</pre>
+
+<pre class="brush: js notranslate">// 最上位モジュール
+// parentModule にモジュールが集約しているので、
+// 単一のモジュールからエクスポートを利用できます。
+import { myFunction, myVariable, myClass } from 'parentModule.js'</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-exports', 'Exports')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.export")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/import", "import")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Modules">JavaScript モジュール</a></li>
+ <li><a href="https://hacks.mozilla.org/2015/08/es6-in-depth-modules/">ES6 in Depth: Modules</a> Jason Orendorff のブログ記事</li>
+ <li><a href="https://hacks.mozilla.org/2018/03/es-modules-a-cartoon-deep-dive/">ES modules: A cartoon deep-dive</a> Lin Clark のブログ記事</li>
+ <li><a href="http://exploringjs.com/es6/ch_modules.html">Axel Rauschmayer's book: "Exploring JS: Modules"</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/for-await...of/index.html b/files/ja/web/javascript/reference/statements/for-await...of/index.html
new file mode 100644
index 0000000000..9d3102375c
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/for-await...of/index.html
@@ -0,0 +1,255 @@
+---
+title: for await...of
+slug: Web/JavaScript/Reference/Statements/for-await...of
+tags:
+ - Iterate
+ - Iteration
+ - JavaScript
+ - Reference
+ - Statement
+ - asynchronous
+ - await
+ - 文
+ - 繰り返し
+ - 非同期
+translation_of: Web/JavaScript/Reference/Statements/for-await...of
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>for await...of</code> 文</strong>は非同期および同期の<a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">反復可能オブジェクト</a>を使用して、反復処理を行うループを作成します。たとえば、組込みの {{jsxref("String")}}, {{jsxref("Array")}}, 配列風オブジェクト (例えば {{jsxref("Functions/arguments", "arguments")}}, {{domxref("NodeList")}} など), {{jsxref("TypedArray")}}, {{jsxref("Map")}}, {{jsxref("Set")}}, さらに、ユーザー定義の非同期・同期の反復可能オブジェクトを使用することができます。これはオブジェクトのそれぞれの識別可能なプロパティの値に対して、実行される文を表す独自の反復フックを呼び出します。 {{jsxref("Operators/await", "await")}} 演算子と同様に、この分は{{jsxref("Statements/async_function", "非同期関数", "", 1)}}の中でのみ使用されます。</p>
+
+<div class="blockIndicator note">
+<p><code>for await...of</code> は非同期の反復可能オブジェクトではない非同期イテレーターでは動作しません。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">for await (<var>variable</var> of <var>iterable</var>) {
+ <var>statement</var>
+}
+</pre>
+
+<dl>
+ <dt><code><var>variable</var></code></dt>
+ <dd>反復処理の各回において、異なるプロパティの値が <code><var>variable</var></code> に割り当てられます。 <code><var>variable</var></code> は <code>const</code>, <code>let</code>, <code>var</code> で宣言することができます。</dd>
+ <dt><code><var>iterable</var></code></dt>
+ <dd>反復処理が行われる反復可能なプロパティを持つオブジェクトです。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Iterating_over_async_iterables" name="Iterating_over_async_iterables">非同期の反復可能オブジェクトでの繰り返し処理</h3>
+
+<p>非同期反復可能プロトコルを明示的に実装しているオブジェクトを反復処理することができます。</p>
+
+<pre class="brush:js notranslate">const asyncIterable = {
+ [Symbol.asyncIterator]() {
+ return {
+ i: 0,
+ next() {
+ if (this.i &lt; 3) {
+ return Promise.resolve({ value: this.i++, done: false });
+ }
+
+ return Promise.resolve({ done: true });
+ }
+ };
+ }
+};
+
+(async function() {
+   for await (let num of asyncIterable) {
+     console.log(num);
+   }
+})();
+
+// 0
+// 1
+// 2
+</pre>
+
+<h3 id="Iterating_over_async_generators" name="Iterating_over_async_generators">非同期のジェネレータの反復処理</h3>
+
+<p>非同期の反復可能プロトコルを実装している非同期ジェネレーターであれば、 <code>for await...of</code> を使用して繰り返し処理を行うことができます。</p>
+
+<pre class="brush: js notranslate">async function* asyncGenerator() {
+ let i = 0;
+ while (i &lt; 3) {
+ yield i++;
+ }
+}
+
+(async function() {
+ for await (let num of asyncGenerator()) {
+ console.log(num);
+ }
+})();
+// 0
+// 1
+// 2</pre>
+
+<p><code>for await...of</code> を使用して非同期ジェネレータを反復処理するより具体的な例として、API からのデータを反復処理することを考えてみましょう。</p>
+
+<p>この例では、まずデータのストリームに対して非同期の反復可能オブジェクトを作成し、それを使用して API からのレスポンスの長さを計算します。</p>
+
+<pre class="brush: js notranslate">async function* streamAsyncIterable(stream) {
+ const reader = stream.getReader();
+ try {
+ while (true) {
+ const { done, value } = await reader.read();
+ if (done) {
+ return;
+ }
+ yield value;
+ }
+ } finally {
+ reader.releaseLock();
+ }
+}
+// URL からデータを取得し、非同期ジェネレータを使用してレスポンスの長さを計算します。
+async function getResponseSize(url) {
+ const response = await fetch(url);
+ // レスポンスの長さをバイト単位で保持する
+ let responseSize = 0;
+ // for-await-of ループ。レスポンスの各部分を非同期に反復処理します。
+ for await (const chunk of streamAsyncIterable(response.body)) {
+ // レスポンスの全長に加算
+ responseSize += chunk.length;
+ }
+
+ console.log(`Response Size: ${responseSize} bytes`);
+ // 期待される出力: "Response Size: 1071472"
+ return responseSize;
+}
+getResponseSize('https://jsonplaceholder.typicode.com/photos');</pre>
+
+<h3 id="Iterating_over_sync_iterables_and_generators" name="Iterating_over_sync_iterables_and_generators">同期の反復可能オブジェクトおよびジェネレーターの反復処理</h3>
+
+<p><code>for await...of</code> ループは同期の反復可能オブジェクトやジェネレーターで使用することもできます。この場合、内部的にはループの制御変数に代入する前に、値が出力されるのを待ちます。</p>
+
+<pre class="brush: js notranslate">function* generator() {
+ yield 0;
+ yield 1;
+ yield Promise.resolve(2);
+ yield Promise.resolve(3);
+ yield 4;
+}
+
+(async function() {
+ for await (let num of generator()) {
+ console.log(num);
+ }
+})();
+// 0
+// 1
+// 2
+// 3
+// 4
+
+// for-of ループとの比較:
+
+for (let numOrPromise of generator()) {
+ console.log(numOrPromise);
+}
+// 0
+// 1
+// Promise { 2 }
+// Promise { 3 }
+// 4
+</pre>
+
+<div></div>
+
+<div class="blockIndicator note">
+<p><strong>注</strong>: 同期のジェネレーターから拒否されたプロミスが生み出される場合があることに注意してください。このような場合、 <code>for await...of</code> は拒否されたプロミスを消費するので、ジェネレーター内の <code>finally</code> ブロックが呼び出されません。これは、確保したリソースを <code>try/finally</code> で解放する必要がある場合は望ましくない動作になる可能性があります。</p>
+</div>
+
+<pre class="brush: js notranslate">function* generatorWithRejectedPromises() {
+ try {
+ yield 0;
+ yield 1;
+ yield Promise.resolve(2);
+ yield Promise.reject(3);
+ yield 4;
+ throw 5;
+ } finally {
+ console.log('called finally')
+ }
+}
+
+(async function() {
+ try {
+ for await (let num of generatorWithRejectedPromises()) {
+ console.log(num);
+ }
+ } catch (e) {
+ console.log('catched', e)
+ }
+})();
+// 0
+// 1
+// 2
+// catched 3
+
+// for-of ループとの比較:
+
+try {
+ for (let numOrPromise of generatorWithRejectedPromises()) {
+ console.log(numOrPromise);
+ }
+} catch (e) {
+ console.log('catched', e)
+}
+// 0
+// 1
+// Promise { 2 }
+// Promise { &lt;rejected&gt; 3 }
+// 4
+// catched 5
+// called finally
+</pre>
+
+<p>同期ジェネレーター関数の <code>finally</code> ブロックが常に呼び出されるようにするには、非同期のジェネレーター関数の場合は <code>for await...of</code> を、同期ジェネレーター関数の場合は <code>for...of</code> を使用し、ループの中で生成されたプロミスを明示的に待つようにしてください。</p>
+
+<pre class="brush: js notranslate">(async function() {
+ try {
+ for (let numOrPromise of generatorWithRejectedPromises()) {
+ console.log(await numOrPromise);
+ }
+ } catch (e) {
+ console.log('catched', e)
+ }
+})()
+// 0
+// 1
+// 2
+// catched 3
+// called finally</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-for-in-and-for-of-statements', 'ECMAScript Language: The for-in, for-of, and for-await-of Statements')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.for_await_of")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Global_Objects/Symbol/asyncIterator", "Symbol.asyncIterator")}}</li>
+ <li>{{jsxref("Statements/for...of", "for...of")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/for...in/index.html b/files/ja/web/javascript/reference/statements/for...in/index.html
new file mode 100644
index 0000000000..91d7dbb6a2
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/for...in/index.html
@@ -0,0 +1,152 @@
+---
+title: for...in
+slug: Web/JavaScript/Reference/Statements/for...in
+tags:
+ - JavaScript
+ - Language feature
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/for...in
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>for...in</code> 文</strong>は、キーが文字列であるオブジェクトの<a href="/ja/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">列挙可能プロパティ</a>すべてに対して、継承された列挙可能プロパティも含めて反復処理を行います (<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol">Symbol</a> がキーになったものは無視します)。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-forin.html")}}</div>
+
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">for (<var>variable</var> in <var>object</var>)
+ 文</pre>
+
+<dl>
+ <dt><code><var>variable</var></code></dt>
+ <dd>反復するごとに、 <code><var>variable</var></code> に異なるプロパティ名が代入されます。</dd>
+ <dt><code><var>object</var></code></dt>
+ <dd>このオブジェクトの列挙可能プロパティに対して反復処理がされます。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>for...in</code> ループは、列挙可能なシンボル以外のプロパティに対してのみ反復処理を行います。 <code>Array</code> や <code>Object</code> のような組込みコンストラクターから生成したオブジェクトは、列挙可能でないプロパティを <code>Objet.prototype</code> や <code>String.prototype</code> から、例えば {{jsxref("String")}} の {{jsxref("String.indexOf", "indexOf()")}} メソッドや {{jsxref("Object")}} の {{jsxref("Object.toString", "toString()")}} メソッドを継承しています。このループは、対象オブジェクト自身とそのオブジェクトがプロトタイプから継承しているすべての列挙可能なプロパティを反復します (プロトタイプチェーンで対象オブジェクトに近いプロパティは、親プロトタイプのプロパティを上書きします)。</p>
+
+<h3 id="Deleted_added_or_modified_properties" name="Deleted_added_or_modified_properties">プロパティの変更や削除</h3>
+
+<p><code>for...in</code> ループは、任意の順序でオブジェクトのプロパティに対して反復します (なぜ繰り返しの見かけの順序に依存できないのかについては、詳細は {{jsxref("Operators/delete", "delete")}} 演算子を見てください)。</p>
+
+<p>もしプロパティがある反復で修正されて、その後に訪問されたなら、ループにより公開される値は後の時点での値となります。訪問される前に削除されたプロパティは、それから後には訪問されません。オブジェクトに対する反復が起きている中でそのオブジェクトに追加されたプロパティは、訪問されるかもしれませんし反復から省略されるかもしれません。</p>
+
+<p>一般的に、現在訪問しているプロパティ以外のものに関しては、反復の間はオブジェクトにプロパティを追加、修正、または削除しないのが一番です。追加したプロパティが訪問されるか、(現在のもの以外の)修正したプロパティが修正される前または後に訪問されるか、または削除したプロパティが削除される前に訪問されるかといったことには、何の保証もありません。</p>
+
+<h3 id="Array_iteration_and_for...in" name="Array_iteration_and_for...in">配列の繰り返しと for...in</h3>
+
+<div class="note">
+<p><strong>注:</strong> <code>for...in</code> はインデックスの順序が重要となる {{jsxref("Array", "配列")}} の繰り返しには使うべきではありません。</p>
+</div>
+
+<p>配列のインデックスは単に整数値の名前で列挙できるプロパティであり、そうでないと一般的なオブジェクトのプロパティとして一意になりません。 <code>for...in</code> は特定の順序で並べられる保証はありません。 <code>for...in</code> ループ文はすべての列挙できるプロパティを返し、その中には非整数型やそれを引き継いだインデックス名があります。</p>
+
+<p>繰り返しの順序が実装依存なため、配列の繰り返しは要素を一貫した順番で参照することになるとは限りません。このため、アクセスの順番が大事となる配列を繰り返す時には、数値のインデックスでの {{jsxref("Statements/for", "for")}} ループ (か {{jsxref("Array.prototype.forEach()")}} か {{jsxref("Statements/for...of", "for...of")}} ループ) を使った方が良いです。</p>
+
+<h3 id="Iterating_over_own_properties_only" name="Iterating_over_own_properties_only">独自のプロパティだけで繰り返す</h3>
+
+<p>オブジェクトに付属するプロパティだけを考えればよい場合、 {{jsxref("Object.getOwnPropertyNames", "getOwnPropertyNames()")}} を使うか、 {{jsxref("Object.prototype.hasOwnProperty", "hasOwnProperty()")}} を実行してチェックします({{jsxref("Object.prototype.propertyIsEnumerable", "propertyIsEnumerable")}} も使用できます)。または、外部のコードインターフェイスをまったく知らない場合は、チェックメソッドを備えた組み込みの prototypes を継承できます。</p>
+
+<h2 id="Why_Use_for...in" name="Why_Use_for...in">for...in を使用する理由</h2>
+
+<p><code>for...in</code> はオブジェクトのプロパティを反復するために作られたものであり、配列での使用は推奨されず、 <code>Array.prototype.forEach()</code> や <code>for...of</code> などの選択肢があるわけですが、それでは <code>for...in</code> を使用する場面は何なのでしょうか?</p>
+
+<p>最も具体的な使い方はデバッグ目的であるかもしれません。これは、オブジェクトのプロパティを (コンソールに出力するなどして) 簡単にチェックする方法になります。データを格納するには配列の方が実用的な場合が多いですが、データを扱うにはキーと値のペアが好まれる状況では (プロパティが "キー" として機能します)、それらのキーが特定の値を保持しているかどうかをチェックしたい場合があるかもしれません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_for...in" name="Using_for...in">for...in の使用</h3>
+
+<p>以下の <code>for...in</code> ループは、オブジェクトの列挙可能なシンボルではないプロパティをすべて反復し、そのプロパティ名と値を文字列で記録します。</p>
+
+<pre class="brush: js notranslate">var obj = {a: 1, b: 2, c: 3};
+
+for (const prop in obj) {
+ console.log(`obj.${prop} = ${obj[prop]}`);
+}
+
+// Output:
+// "obj.a = 1"
+// "obj.b = 2"
+// "obj.c = 3"</pre>
+
+<h3 id="Iterating_own_properties" name="Iterating_own_properties">自身のプロパティの反復処理</h3>
+
+<p>次の関数では {{jsxref("Object.prototype.hasOwnProperty", "hasOwnProperty()")}}: の使い方を例示しています。継承されたプロパティは表示されません。</p>
+
+<pre class="brush: js notranslate">var triangle = {a: 1, b: 2, c: 3};
+
+function ColoredTriangle() {
+ this.color = 'red';
+}
+
+ColoredTriangle.prototype = triangle;
+
+var obj = new ColoredTriangle();
+
+for (const prop in obj) {
+ if (obj.hasOwnProperty(prop)) {
+ console.log(`obj.${prop} = ${obj[prop]}`);
+ }
+}
+
+// Output:
+// "obj.color = red"
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-for-in-and-for-of-statements', 'for...in statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.for_in")}}</p>
+
+<h3 id="Compatibility_Initializer_expressions_in_strict_mode" name="Compatibility_Initializer_expressions_in_strict_mode">厳格モードにおける初期化式の互換性について</h3>
+
+<p>Firefox 40 より前では、<code>for...in</code> ループ内で初期化式 (<code>i=0</code>) が使用可能でした。</p>
+
+<pre class="brush: js example-bad notranslate">var obj = {a: 1, b: 2, c: 3};
+for (var i = 0 in obj) {
+ console.log(obj[i]);
+}
+// 1
+// 2
+// 3
+</pre>
+
+<p>この標準外の動作はバージョン 40 以降では無視され、<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a>での {{jsxref("SyntaxError")}} ("<a href="/ja/docs/Web/JavaScript/Reference/Errors/Invalid_for-in_initializer">for-in loop head declarations may not have initializers</a>") エラーが表示されます (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=748550">bug 748550</a> および <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1164741">bug 1164741</a>)。</p>
+
+<p>v8 (Chrome), Chakra (IE/Edge), JSC (WebKit/Safari) といった他のエンジンも同様に非標準のふるまいを削除するよう開発しています。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/for...of", "for...of")}} - プロパティ値に対して繰り返す同様の文</li>
+ <li>{{jsxref("Statements/for_each...in", "for each...in")}} - <code>for...in</code> に似ていますが、プロパティ名そのものではなく、オブジェクトのプロパティの値に対して反復します。(廃止されました)</li>
+ <li>{{jsxref("Statements/for", "for")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators">ジェネレーター式</a> (<code>or...in</code> を使っている)</li>
+ <li><a href="/ja/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">プロパティの列挙可能性と所有権</a></li>
+ <li>{{jsxref("Object.getOwnPropertyNames()")}}</li>
+ <li>{{jsxref("Object.prototype.hasOwnProperty()")}}</li>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/for...of/index.html b/files/ja/web/javascript/reference/statements/for...of/index.html
new file mode 100644
index 0000000000..cc6e37bc21
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/for...of/index.html
@@ -0,0 +1,315 @@
+---
+title: for...of
+slug: Web/JavaScript/Reference/Statements/for...of
+tags:
+ - ECMAScript 2015
+ - ES6
+ - JavaScript
+ - Language feature
+ - Reference
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/for...of
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>for...of</code> 文</strong>は、<a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">反復可能オブジェクト</a>、たとえば組込みの {{jsxref("String")}}, {{jsxref("Array")}}, 配列状オブジェクト (例えば {{jsxref("Functions/arguments", "arguments")}} や {{domxref("NodeList")}}), {{jsxref("TypedArray")}}, {{jsxref("Map")}}, {{jsxref("Set")}}, およびユーザー定義の反復可能オブジェクトなどに対して、反復的な処理をするループを作成します。これはオブジェクトのそれぞれの識別可能なプロパティの値に対して、実行される文を表す独自の反復フックを呼び出します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-forof.html")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">for (<var>variable</var> of <var>iterable</var>) {
+ <var>statement</var>
+}
+</pre>
+
+<dl>
+ <dt><code><var>variable</var></code></dt>
+ <dd>反復処理の各回において、異なるプロパティの値が <code><var>variable</var></code> に割り当てられます。<code><var>variable</var></code> は <code>const</code>, <code>let</code>, <code>var</code> で宣言することができます。</dd>
+ <dt><code><var>iterable</var></code></dt>
+ <dd>反復処理が行われる反復可能なプロパティを持つオブジェクトです。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Iterating_over_an_jsxrefArray" name="Iterating_over_an_jsxrefArray">{{jsxref("Array")}} での反復処理</h3>
+
+<pre class="brush:js notranslate">const iterable = [10, 20, 30];
+
+for (const value of iterable) {
+ console.log(value);
+}
+// 10
+// 20
+// 30
+</pre>
+
+<p>{{jsxref("let")}} を {{jsxref("const")}} の代わりに使用しても、ブロック内で変数が再割り当てされます。</p>
+
+<pre class="brush:js notranslate">const iterable = [10, 20, 30];
+
+for (let value of iterable) {
+  value += 1;
+ console.log(value);
+}
+// 11
+// 21
+// 31
+</pre>
+
+<h3 id="Iterating_over_a_jsxrefString" name="Iterating_over_a_jsxrefString">{{jsxref("String")}} での反復処理</h3>
+
+<pre class="brush:js notranslate">const iterable = 'boo';
+
+for (const value of iterable) {
+ console.log(value);
+}
+// "b"
+// "o"
+// "o"
+</pre>
+
+<h3 id="Iterating_over_a_jsxrefTypedArray" name="Iterating_over_a_jsxrefTypedArray">{{jsxref("TypedArray")}} での反復処理</h3>
+
+<pre class="brush:js notranslate">const iterable = new Uint8Array([0x00, 0xff]);
+
+for (const value of iterable) {
+ console.log(value);
+}
+// 0
+// 255
+</pre>
+
+<h3 id="Iterating_over_a_jsxrefMap" name="Iterating_over_a_jsxrefMap">{{jsxref("Map")}} での反復処理</h3>
+
+<pre class="brush:js notranslate">const iterable = new Map([['a', 1], ['b', 2], ['c', 3]]);
+
+for (const entry of iterable) {
+ console.log(entry);
+}
+// ['a', 1]
+// ['b', 2]
+// ['c', 3]
+
+for (const [key, value] of iterable) {
+ console.log(value);
+}
+// 1
+// 2
+// 3
+</pre>
+
+<h3 id="Iterating_over_a_jsxrefSet" name="Iterating_over_a_jsxrefSet">{{jsxref("Set")}} での反復処理</h3>
+
+<pre class="brush:js notranslate">const iterable = new Set([1, 1, 2, 2, 3, 3]);
+
+for (const value of iterable) {
+ console.log(value);
+}
+// 1
+// 2
+// 3
+</pre>
+
+<h3 id="Iterating_over_the_jsxrefarguments_object" name="Iterating_over_the_jsxref(arguments)_object">arguments オブジェクトでの反復処理</h3>
+
+<p>{{jsxref("Functions/arguments", "arguments")}} オブジェクトで反復処理をすると、ある JavaScript 関数にすべての引数を渡すことができます。</p>
+
+<pre class="brush: js notranslate">(function() {
+ for (const argument of arguments) {
+ console.log(argument);
+ }
+})(1, 2, 3);
+
+// 1
+// 2
+// 3</pre>
+
+<h3 id="Iterating_over_a_DOM_collection" name="Iterating_over_a_DOM_collection">DOM コレクションでの反復処理</h3>
+
+<p>{{domxref("NodeList")}} のような DOM コレクションでの反復処理です。次の例では、<code>read</code> クラスを <code>article</code> の直下の子である段落に加えます。</p>
+
+<pre class="brush:js notranslate">// 注: これは以下のものに対応しているプラットフォームでのみ動作します。
+// implemented NodeList.prototype[Symbol.iterator]
+const articleParagraphs = document.querySelectorAll('article &gt; p');
+
+for (const paragraph of articleParagraphs) {
+ paragraph.classList.add('read');
+}
+</pre>
+
+<h3 id="Closing_iterators" name="Closing_iterators">反復処理の終了</h3>
+
+<p><code>for...of</code> ループ内では、<code>break</code>, <code>throw</code>, <code>return</code> を発生させることで反復処理を中断させることができます。この場合、反復子は閉じられます。</p>
+
+<pre class="brush: js notranslate">function* foo(){
+ yield 1;
+ yield 2;
+ yield 3;
+};
+
+for (const o of foo()) {
+ console.log(o);
+ break; // 反復処理を閉じ、ループの外の実行が継続されます
+}
+console.log('done');
+</pre>
+
+<h3 id="Iterating_over_generators" name="Iterating_over_generators">ジェネレーターでの反復処理</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Statements/function*">ジェネレーター</a>、すなわち反復可能オブジェクトを生成する関数で反復処理することもできます。</p>
+
+<pre class="brush:js notranslate">function* fibonacci() { // ジェネレーター関数
+ let [prev, curr] = [0, 1];
+ while (true) {
+ [prev, curr] = [curr, prev + curr];
+ yield curr;
+ }
+}
+
+for (const n of fibonacci()) {
+ console.log(n);
+ // 1000 で繰り返しを終了する
+ if (n &gt;= 1000) {
+ break;
+ }
+}
+</pre>
+
+<h4 id="Do_not_reuse_generators" name="Do_not_reuse_generators">ジェネレーターを再利用してはいけない</h4>
+
+<p>ジェネレーターは、<code>for...of</code> ループが {{jsxref("Statements/break", "break")}} キーワードなどで早く終了しても再利用してはいけません。ループを抜けると、ジェネレーターは閉じられ、そこで繰り返してもそれ以上の結果は算出されません。</p>
+
+<pre class="brush: js example-bad notranslate">const gen = (function *(){
+ yield 1;
+ yield 2;
+ yield 3;
+})();
+for (const o of gen) {
+ console.log(o);
+ break; // 反復処理を閉じる
+}
+
+// ジェネレーターを再利用してはいけません。以下の処理は意味がありません。
+for (const o of gen) {
+ console.log(o); // Never called.
+}
+</pre>
+
+<h3 id="Iterating_over_other_iterable_objects" name="Iterating_over_other_iterable_objects">その他の反復可能オブジェクトでの反復処理</h3>
+
+<p>明示的に <a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#iterable">iterable</a> プロトコルを実装しているオブジェクトで反復処理することもできます。</p>
+
+<pre class="brush:js notranslate">const iterable = {
+ [Symbol.iterator]() {
+ return {
+ i: 0,
+ next() {
+ if (this.i &lt; 3) {
+ return { value: this.i++, done: false };
+ }
+ return { value: undefined, done: true };
+ }
+ };
+ }
+};
+
+for (const value of iterable) {
+ console.log(value);
+}
+// 0
+// 1
+// 2
+</pre>
+
+<h3 id="Difference_between_for...of_and_for...in" name="Difference_between_for...of_and_for...in"><code>for...of</code> と <code>for...in</code> との違い</h3>
+
+<p><code>for...in</code> および <code>for...of</code> 文は、両方とも何かに対する繰り返しです。これらの主な違いは何に対する繰り返しなのかというところです。</p>
+
+<p>{{jsxref("Statements/for...in", "for...in")}} 文は、オブジェクトのすべての<a href="/ja/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">列挙可能なプロパティ</a>に対して、順序不定で繰り返し処理を行います。</p>
+
+<p><code>for...of</code> 文は、<a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators#Iterables">反復可能なオブジェクト</a>が定義した順序で値を反復処理します。</p>
+
+<p>次の例では、{{jsxref("Array")}} に対して <code>for...of</code> ループと <code>for...in</code> ループを使用した場合の違いを示しています。</p>
+
+<pre class="brush:js notranslate">Object.prototype.objCustom = function() {};
+Array.prototype.arrCustom = function() {};
+
+const iterable = [3, 5, 7];
+iterable.foo = 'hello';
+
+for (const i in iterable) {
+ console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
+}
+
+for (const i in iterable) {
+  if (iterable.hasOwnProperty(i)) {
+    console.log(i); // logs 0, 1, 2, "foo"
+  }
+}
+
+for (const i of iterable) {
+ console.log(i); // logs 3, 5, 7
+}
+</pre>
+
+<p>上記のコードをステップを追って見ていきましょう。</p>
+
+<pre class="brush: js notranslate">Object.prototype.objCustom = function() {};
+Array.prototype.arrCustom = function() {};
+
+const iterable = [3, 5, 7];
+iterable.foo = 'hello';</pre>
+
+<p>すべてのオブジェクトは <code>objCustom</code> プロパティを継承し、すべての {{jsxref("Array")}} オブジェクトは <code>arrCustom</code> プロパティを継承します。{{jsxref("Object.prototype")}} と {{jsxref("Array.prototype")}} にそれぞれこれらのプロパティを追加されているためです。オブジェクト <code>iterable</code> は <code>objCustom</code> と <code>arrCustom</code> の各プロパティを、<a href="/ja/docs/Web/JavaScript/Inheritance_and_the_prototype_chain">継承とプロトタイプチェーン</a>によって継承しています。</p>
+
+<pre class="brush: js notranslate">for (const i in iterable) {
+ console.log(i); // 0, 1, 2, "foo", "arrCustom", "objCustom" と出力
+}</pre>
+
+<p>このループは <code>iterable</code> オブジェクトの<a href="/ja/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">列挙可能なプロパティ</a>のみを、順序不定で出力します。配列の<strong>要素</strong>である <code>3</code>, <code>5</code>, <code>7</code> や <code>hello</code> は、列挙可能なプロパティ<strong>ではない</strong>ため出力しません。実際、これらはプロパティではなく、値です。配列の<strong>添字</strong>が <code>arrCustom</code> や <code>objCustom</code> と共に出力されます。なぜプロパティが反復処理に出てこないのかが分からない場合は、{{jsxref("Statements/for...in", "array iteration and for...in", "#Array_iteration_and_for...in")}} にもっと詳しい説明があります。</p>
+
+<pre class="brush: js notranslate">for (const i in iterable) {
+ if (iterable.hasOwnProperty(i)) {
+ console.log(i); // 0, 1, 2, "foo" と出力
+  }
+}</pre>
+
+<p>このループは最初のものと似ていますが、{{jsxref("Object.prototype.hasOwnProperty()", "hasOwnProperty()")}} を使用して見つかった列挙可能なプロパティがオブジェクト自身のものであるか、すなわち継承したものでないかどうかをチェックしています。オブジェクト自身のプロパティである場合は、ログ出力します。<code>0</code>, <code>1</code>, <code>2</code>, <code>foo</code> は自身のプロパティである (<strong>継承されたものではない</strong>) ため出力されます。<code>arrCustom</code> と <code>objCustom</code> は<strong>継承されたものである</strong>ために出力されません。</p>
+
+<pre class="brush: js notranslate">for (const i of iterable) {
+ console.log(i); // 3, 5, 7 と出力
+}</pre>
+
+<p>このループは、<code>iterable</code> が<a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators#Iterables">反復可能なオブジェクト</a>として定義している順序で<strong>値</strong>を反復処理し、ログ出力します。オブジェクトの<strong>要素</strong>である <code>3</code>, <code>5</code>, <code>7</code> は表示されますが、オブジェクトの<strong>プロパティ</strong>は表示されません。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-for-in-and-for-of-statements', 'for...of statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.for_of")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Map.prototype.forEach()")}}</li>
+ <li>{{jsxref("Object.entries()")}} – オブジェクトに <strong><code>for...of</code></strong> を使用するときに便利です。</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/for/index.html b/files/ja/web/javascript/reference/statements/for/index.html
new file mode 100644
index 0000000000..7176551fc5
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/for/index.html
@@ -0,0 +1,146 @@
+---
+title: for
+slug: Web/JavaScript/Reference/Statements/for
+tags:
+ - JavaScript
+ - Language feature
+ - Loop
+ - Reference
+ - Statement
+ - for
+translation_of: Web/JavaScript/Reference/Statements/for
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong>for 文</strong>は、括弧で囲みセミコロンで区切った3つの引数と、続いてループ内で実行される文 (ふつうは<a href="/ja/docs/Web/JavaScript/Reference/Statements/block">ブロック文</a>) から成るループを構成します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-for.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">for ([<var>initialization</var>]; [<var>condition</var>]; [<var>final-expression</var>])
+ <var>statement</var></pre>
+
+<dl>
+ <dt><code><var>initialization</var></code></dt>
+ <dd>ループが始まる前に一度だけ評価される (代入式を含む) 式または変数宣言。ふつうはカウンター変数を初期化するために使われます。この式では任意で、 <code>var</code> キーワードを用いて新しい変数を宣言することもできます。 <code>var</code> で宣言された変数はループ内のローカル変数にはなりません。すなわち、 <code>for</code> ループが属するスコープと同じスコープになります。 <code>let</code> で宣言された変数は文内のローカル変数になります。</dd>
+ <dd>この式の結果は捨て去られます。</dd>
+ <dt><code><var>condition</var></code></dt>
+ <dd>ループのそれぞれの反復処理が行われる前に評価される式です。この式が true と評価された場合は、 <code><var>statement</var></code> が実行されます。この条件テストは省略可能です。省略された場合は、条件は常に true に評価されます。もしこの式が false と評価された場合は、実行は <code>for</code> 構造に続く最初の式に飛びます。</dd>
+ <dt><code><var>final-expression</var></code></dt>
+ <dd>ループのそれぞれの反復処理の最後に評価される式です。これは、次の <code><var>condition</var></code> の評価前に行われます。一般的には、カウンター変数を更新または増加するために使われます。</dd>
+ <dt><code><var>statement</var></code></dt>
+ <dd>条件が true と評価された場合に限り実行される文です。ループ内で複数の文を実行するには、{{jsxref("Statements/block", "ブロック", "", 0)}}文 (<code>{ ... }</code>) を使用して文をグループ化してください。ループ内で文を実行しないようにするには、{{jsxref("Statements/empty", "空文", "", 0)}} (<code>;</code>) を使用してください。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_for" name="Using_for">for の使用</h3>
+
+<p>次の <code>for</code> 文は、変数 <code>i</code> を宣言し、それを <code>0</code> に初期化することから始まります。<code>i</code> が 9 より小さいことをチェックし、続く 2 つの文を実行し、ループを通過した後ごとに <code>i</code> を 1 増加します。</p>
+
+<pre class="brush: js notranslate">for (let i = 0; i &lt; 9; i++) {
+ console.log(i);
+ // その他の文
+}
+</pre>
+
+<h3 id="Optional_for_expressions" name="Optional_for_expressions">省略可能な for の式</h3>
+
+<p><code>for</code> ループの先頭にある 3 つの式は、省略可能です。</p>
+
+<p>例えば、 <code><var>initialization</var></code> ブロックで変数を初期化する必要はありません。</p>
+
+<pre class="brush: js notranslate">var i = 0;
+for (; i &lt; 9; i++) {
+ console.log(i);
+ // その他の文
+}
+</pre>
+
+<p><code><var>initialization</var></code> ブロックと同様に、 <code><var>condition</var></code> ブロックも省略可能です。この式を省略した場合は、本体の中でループを脱出できるようにして、無限ループにならないようにしなければなりません。</p>
+
+<pre class="brush: js notranslate">for (let i = 0;; i++) {
+ console.log(i);
+ if (i &gt; 3) break;
+ // その他の文
+}</pre>
+
+<p>3 つのブロックをすべて省略することもできます。繰り返しますが、 {{jsxref("Statements/break", "break")}} 文を使用してループを終了させ、また break 文の条件がある時点で true になるように、変数を変更 (増加) させていることを確認してください。</p>
+
+<pre class="brush: js notranslate">var i = 0;
+
+for (;;) {
+ if (i &gt; 3) break;
+ console.log(i);
+ i++;
+}
+</pre>
+
+<h3 id="Using_for_without_a_statement" name="Using_for_without_a_statement">文を持たない for の使用</h3>
+
+<p>以下の <code>for</code> の繰り返しでは、 <code><var>final-expression</var></code> 句の中でにおけるノードのオフセット位置を検索しています。 <code><var>statement</var></code> 節を使用する必要がない場合は、代わりにセミコロンを使用してください。</p>
+
+<pre class="brush: js notranslate">function showOffsetPos(sId) {
+
+ var nLeft = 0, nTop = 0;
+
+ for (
+
+ var oItNode = document.getElementById(sId); /* initialization */
+
+ oItNode; /* condition */
+
+ nLeft += oItNode.offsetLeft, nTop += oItNode.offsetTop, oItNode = oItNode.offsetParent /* final-expression */
+
+ ); /* semicolon */
+
+ console.log('Offset position of \'' + sId + '\' element:\n left: ' + nLeft + 'px;\n top: ' + nTop + 'px;');
+
+}
+
+/* 呼び出しの例 */
+
+showOffsetPos('content');
+
+// Output:
+// "Offset position of "content" element:
+// left: 0px;
+// top: 153px;"</pre>
+
+<div class="note"><strong>注:</strong> これは、<strong>セミコロンが必須</strong>となる JavaScript の数少ないケースの1つです。セミコロンがないと、繰り返し宣言の次の行が繰り返す文と見なされます。</div>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-for-statement', 'for statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.for")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/empty", "空文", "", 0)}}</li>
+ <li>{{jsxref("Statements/break", "break")}}</li>
+ <li>{{jsxref("Statements/continue", "continue")}}</li>
+ <li>{{jsxref("Statements/while", "while")}}</li>
+ <li>{{jsxref("Statements/do...while", "do...while")}}</li>
+ <li>{{jsxref("Statements/for...in", "for...in")}}</li>
+ <li>{{jsxref("Statements/for...of", "for...of")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/for_each...in/index.html b/files/ja/web/javascript/reference/statements/for_each...in/index.html
new file mode 100644
index 0000000000..72df003bfb
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/for_each...in/index.html
@@ -0,0 +1,81 @@
+---
+title: for each...in
+slug: Web/JavaScript/Reference/Statements/for_each...in
+tags:
+ - Deprecated
+ - E4X
+ - JavaScript
+ - Obsolete
+ - Statement
+translation_of: Archive/Web/JavaScript/for_each...in
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<div class="warning">
+<p><code>for each...in</code> 文は ECMA-357 (<a href="/ja/docs/Archive/Web/E4X" title="E4X">E4X</a>) の一部として廃止されました。E4X のサポートは削除されました。代替として、<a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a> 文が推奨されます。<br>
+ <br>
+ <strong>Firefox は <code>for each...in</code> の使用に対して警告を表示します。また、Firefox 57 以降では動作しません。<br>
+ 移行のためのヘルプとして <a href="/ja/docs/Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated">Warning: JavaScript 1.6's for-each-in loops are deprecated</a> をご覧ください。</strong></p>
+</div>
+
+<p><code><strong>for each...in</strong></code><strong> 文</strong>は指定された変数を、オブジェクトの全プロパティの値に対して反復します。異なるそれぞれのプロパティに対し、指定された文が実行されます。</p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="syntaxbox">for each (<em>variable</em> in <em>object</em>) {
+ <em>statement</em>
+}</pre>
+
+<dl>
+ <dt><code>variable</code></dt>
+ <dd>任意で <code>var</code> キーワードを用いて宣言された、プロパティの値に対して反復する変数。この変数はループにではなく、関数にローカルです。</dd>
+</dl>
+
+<dl>
+ <dt><code>object</code></dt>
+ <dd>プロパティが反復されるオブジェクト。</dd>
+</dl>
+
+<dl>
+ <dt><code>statement</code></dt>
+ <dd>各プロパティに対して実行する文。ループ内で複数の文を実行するには、それらの文をグループ化するために <a href="/ja/docs/Web/JavaScript/Reference/Statements/block">ブロック</a> 文 (<code>{ ... }</code>) を使ってください。</dd>
+</dl>
+
+<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2>
+
+<p>ある組み込みプロパティに対しては反復されません。これらには、たとえば <code>String</code> の <code>indexOf</code> メソッドといった、オブジェクトのすべての組み込みメソッドが含まれます。しかしながら、すべてのユーザー定義プロパパティに対しては反復されます。</p>
+
+<h2 id=".E4.BE.8B" name=".E4.BE.8B">例</h2>
+
+<h3 id=".E4.BE.8B:_for_each...in_.E3.82.92.E4.BD.BF.E3.81.86" name=".E4.BE.8B:_for_each...in_.E3.82.92.E4.BD.BF.E3.81.86">例: <code>for each...in</code> を使う</h3>
+
+<p><strong>警告</strong>: このようなループを決して配列に使わないでください。オブジェクトにだけ使ってください。詳しくは <a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in"><code>for...in</code></a> をご覧ください。</p>
+
+<p>次のスニペットはオブジェクトのプロパティに対して反復し、それらの合計を計算します:</p>
+
+<pre class="brush:js">var sum = 0;
+var obj = {prop1: 5, prop2: 13, prop3: 8};
+
+for each (var item in obj) {
+ sum += item;
+}
+
+console.log(sum); // logs "26", which is 5+13+8</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<p>現行の ECMA-262 仕様には含まれていません。JavaScript 1.6 で実装され、非推奨になりました。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.statements.for_each_in")}}</p>
+
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in" title="JavaScript/Reference/Statements/for...in">for...in</a></code> - プロパティ<em>名</em> に対して反復する似たような文。</li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of" title="JavaScript/Reference/Statements/for...of">for...of</a></code> - プロパティの<em>値</em>に対して反復しますが、一般的なオブジェクトではなく反復可能な型に対してのみ使用できる似たような文。</li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Statements/for" title="JavaScript/Reference/Statements/for">for</a></code></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/function/index.html b/files/ja/web/javascript/reference/statements/function/index.html
new file mode 100644
index 0000000000..8db65175e7
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/function/index.html
@@ -0,0 +1,158 @@
+---
+title: 関数宣言
+slug: Web/JavaScript/Reference/Statements/function
+tags:
+ - Function
+ - JavaScript
+ - Language feature
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/function
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong>関数宣言</strong> (関数文) は、指定された引数を使用して関数を定義します。</p>
+
+<p>また、 {{jsxref("Function")}} のコンストラクターと{{jsxref("Operators/function", "関数式", "", 1)}}を使用して関数を定義することもできます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-function.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">function <var>name</var>([<var>param</var>[, <var>param</var>,[..., <var>param</var>]]]) {
+ [<var>statements</var>]
+}
+</pre>
+
+<dl>
+ <dt><code><var>name</var></code></dt>
+ <dd>関数の名前です。</dd>
+</dl>
+
+<dl>
+ <dt><code><var>param</var></code> {{optional_inline}}</dt>
+ <dd>関数に渡す引数の名前です。引数の最大数はエンジンによって異なります。</dd>
+</dl>
+
+<dl>
+ <dt><code><var>statements</var></code> {{optional_inline}}</dt>
+ <dd>関数の本体を構成する文です。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>関数宣言で作成された関数は <code>Function</code> オブジェクトであり、<code>Function</code> オブジェクトのすべてのプロパティ、メソッド、動作を備えています。関数の詳細については {{jsxref("Function")}} を参照してください。</p>
+
+<p>関数は式を使用して作成することもできます ({{jsxref("Operators/function", "関数式", "", 1)}}を参照)。</p>
+
+<p>既定では、関数は <code>undefined</code> を返します。他の値を返すには、関数に返す値を指定する {{jsxref("Statements/return", "return")}} 文が必要です。</p>
+
+<h3 id="Conditionally_created_functions" name="Conditionally_created_functions">条件付きで作成される関数</h3>
+
+<p>関数は条件付きで宣言できます。つまり、関数文を <code>if</code> 文の中に入れ子にすることができますが、結果は実装によって一貫性がないので、このパターンを本番コードでは使用すべきではありません。条件付きの関数の作成には、代わりに関数式を使用してください。</p>
+
+<pre class="brush: js notranslate">var hoisted = "foo" in this;
+console.log(`'foo' name ${hoisted ? "is" : "is not"} hoisted. typeof foo is ${typeof foo}`);
+if (false) {
+ function foo(){ return 1; }
+}
+
+// In Chrome:
+// 'foo' name is hoisted. typeof foo is undefined
+//
+// In Firefox:
+// 'foo' name is hoisted. typeof foo is undefined
+//
+// In Edge:
+// 'foo' name is not hoisted. typeof foo is undefined
+//
+// In Safari:
+// 'foo' name is hoisted. typeof foo is function
+</pre>
+
+<p>真と評価される条件でも結果はまったく同じです。</p>
+
+<pre class="brush: js notranslate">var hoisted = "foo" in this;
+console.log(`'foo' name ${hoisted ? "is" : "is not"} hoisted. typeof foo is ${typeof foo}`);
+if (true) {
+ function foo(){ return 1; }
+}
+
+// In Chrome:
+// 'foo' name is hoisted. typeof foo is undefined
+//
+// In Firefox:
+// 'foo' name is hoisted. typeof foo is undefined
+//
+// In Edge:
+// 'foo' name is not hoisted. typeof foo is undefined
+//
+// In Safari:
+// 'foo' name is hoisted. typeof foo is function
+</pre>
+
+<h3 id="Function_declaration_hoisting" name="Function_declaration_hoisting">関数宣言の巻き上げ</h3>
+
+<p>JavaScript の関数宣言は、それを囲む関数やグローバルスコープの先頭に巻き上げられ、関数を宣言する前に使うことができます。</p>
+
+<pre class="brush: js notranslate">hoisted(); // logs "foo"
+
+function hoisted() {
+ console.log('foo');
+}
+</pre>
+
+<p>{{jsxref("Operators/function", "関数式", "", 1)}}は巻き上げられないことに注意してください。</p>
+
+<pre class="brush: js notranslate">notHoisted(); // TypeError: notHoisted is not a function
+
+var notHoisted = function() {
+ console.log('bar');
+};
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_function" name="Using_function">function の使用</h3>
+
+<p>以下のコードは、商品 <code>a</code>, <code>b</code>, <code>c</code> の販売個数が与えられた場合に、販売個数の合計を返す関数を宣言しています。</p>
+
+<pre class="brush: js notranslate">function calc_sales(units_a, units_b, units_c) {
+ return units_a * 79 + units_b * 129 + units_c * 699;
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function-definitions', 'Function definitions')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.function")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Function")}}</li>
+ <li>{{jsxref("Operators/function", "関数式", "", 1)}}</li>
+ <li>{{jsxref("Statements/function*", "function* 文", "", 1)}}</li>
+ <li>{{jsxref("Operators/function*", "function* 式", "", 1)}}</li>
+ <li>{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}</li>
+ <li>{{jsxref("GeneratorFunction")}}</li>
+ <li>{{jsxref("Statements/async_function", "非同期関数", "", 1)}}</li>
+ <li>{{jsxref("Operators/async_function", "非同期関数式", "", 1)}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/function_star_/index.html b/files/ja/web/javascript/reference/statements/function_star_/index.html
new file mode 100644
index 0000000000..60daf7a7b9
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/function_star_/index.html
@@ -0,0 +1,258 @@
+---
+title: function* 宣言
+slug: Web/JavaScript/Reference/Statements/function*
+tags:
+ - ECMAScript 2015
+ - Function
+ - Iterator
+ - JavaScript
+ - Language feature
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/function*
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><code><strong>function*</strong></code> 宣言 (<code>function</code> キーワードにアスタリスクが付いたもの) は、 {{jsxref("Global_Objects/Generator","Generator")}} オブジェクトを返すジェネレーター関数を定義します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-functionasterisk.html")}}</div>
+
+
+
+<p>ジェネレーター関数は {{jsxref("GeneratorFunction")}} コンストラクターや、関数式の構文を使用して定義することもできます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">function* <var>name</var>([<var>param</var>[, <var>param</var>[, ... <var>param</var>]]]) {
+ <var>statements</var>
+}
+</pre>
+
+<dl>
+ <dt><code><var>name</var></code></dt>
+ <dd>関数名。</dd>
+ <dt><code><var>param</var></code> {{optional_inline}}</dt>
+ <dd>関数の形式上の引数の名前。</dd>
+ <dt><code><var>statements</var></code></dt>
+ <dd>関数の本体を構成する文。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>ジェネレーターは処理を抜け出したり、後から復帰したりすることができる関数です。ジェネレーターのコンテキスト (変数の値)は復帰しても保存されます。</p>
+
+<p>JavaScript のジェネレータは、特にプロミスと組み合わせることで、非同期プログラミングのための非常に強力なツールとなり、 <a href="http://callbackhell.com/">Callback Hell</a> や <a href="https://frontendmasters.com/courses/rethinking-async-js/callback-problems-inversion-of-control/">Inversion of Control</a> などのようなコールバックの問題を、完全に解決できるわけではないものの、軽減することができます。しかし、これらの問題は{{jsxref("Statements/async_function", "非同期関数", "", 1)}}を使用すると、さらにシンプルに解決することができます。</p>
+
+<p>ジェネレーター関数を呼び出しても関数はすぐには実行されません。代わりに、関数のための<a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#iterator">イテレーター</a>オブジェクトが返されます。イテレーターの <code>next()</code> メソッドが呼び出されると、ジェネレーター関数の処理は、イテレーターから返された値を特定する最初の {{jsxref("Operators/yield", "yield")}} 演算子か、ほかのジェネレーター関数に委任する {{jsxref("Operators/yield*", "yield*")}} に達するまで実行されます。 <code>next()</code> メソッドは産出された値を含む <code>value</code> プロパティと、ジェネレーターが最後の値を持つかを真偽値で示す <code>done</code> プロパティを持つオブジェクトを返します。引数つきで<code>next()</code> を呼び出すと、ジェネレーター関数の実行が再開され、処理が停止していた <code>yield</code> 式を <code>next()</code> の引数で置き換えます。</p>
+
+<p>ジェネレーターで <code>return</code> 文が実行されると、ジェネレーターが終了します (つまり、それによって返されたオブジェクトの <code>done</code> プロパティが <code>true</code> に設定されます)。値が返された場合、それはジェネレーターによって返されたオブジェクトの <code>value</code> プロパティとして設定されます。 <code>return</code> 文とよく似ていますが、ジェネレーターの内部でエラーが発生した場合は、ジェネレーターの本体の中でキャッチしない限り、ジェネレーターは終了します。<br>
+ ジェネレーターが終了すると、それ以降の <code>next()</code> の呼び出しでは、そのジェネレーターのコードは実行されず、 <code>{value: undefined, done: true}</code> の形のオブジェクトが返されるだけです。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Simple_example" name="Simple_example">単純な例</h3>
+
+<pre class="brush: js notranslate">function* idMaker() {
+ var index = 0;
+ while (true)
+ yield index++;
+}
+
+var gen = idMaker();
+
+console.log(gen.next().value); // 0
+console.log(gen.next().value); // 1
+console.log(gen.next().value); // 2
+console.log(gen.next().value); // 3
+// ...</pre>
+
+<h3 id="Example_with_yield*" name="Example_with_yield*">yield* を使用した例</h3>
+
+<pre class="brush: js notranslate">function* anotherGenerator(i) {
+ yield i + 1;
+ yield i + 2;
+ yield i + 3;
+}
+
+function* generator(i) {
+ yield i;
+ yield* anotherGenerator(i);
+ yield i + 10;
+}
+
+var gen = generator(10);
+
+console.log(gen.next().value); // 10
+console.log(gen.next().value); // 11
+console.log(gen.next().value); // 12
+console.log(gen.next().value); // 13
+console.log(gen.next().value); // 20
+</pre>
+
+<h3 id="Passing_arguments_into_Generators" name="Passing_arguments_into_Generators">ジェネレーターに引数を渡す</h3>
+
+<pre class="brush: js notranslate">function* logGenerator() {
+ console.log(0);
+ console.log(1, yield);
+ console.log(2, yield);
+ console.log(3, yield);
+}
+
+var gen = logGenerator();
+
+// 最初の next の呼び出しで、関数の最初から、
+// 最初の yield 文の前まで実行される。
+gen.next(); // 0
+gen.next('pretzel'); // 1 pretzel
+gen.next('california'); // 2 california
+gen.next('mayonnaise'); // 3 mayonnaise
+</pre>
+
+<h3 id="Return_statement_in_a_generator" name="Return_statement_in_a_generator">ジェネレーターにおける return 文</h3>
+
+<pre class="brush: js notranslate">function* yieldAndReturn() {
+ yield "Y";
+ return "R";
+ yield "unreachable";
+}
+
+var gen = yieldAndReturn()
+console.log(gen.next()); // { value: "Y", done: false }
+console.log(gen.next()); // { value: "R", done: true }
+console.log(gen.next()); // { value: undefined, done: true }
+</pre>
+
+<h3 id="Generator_as_an_object_property" name="Generator_as_an_object_property">オブジェクトプロパティとしてのジェネレーター</h3>
+
+<pre class="brush: js notranslate">const someObj = {
+ *generator () {
+ yield 'a';
+ yield 'b';
+ }
+}
+
+const gen = someObj.generator()
+
+console.log(gen.next()); // { value: 'a', done: false }
+console.log(gen.next()); // { value: 'b', done: false }
+console.log(gen.next()); // { value: undefined, done: true }
+</pre>
+
+<h3 id="Generator_as_an_object_method" name="Generator_as_an_object_method">オブジェクトメソッドとしてのジェネレーター</h3>
+
+<pre class="brush: js notranslate">class Foo {
+ *generator () {
+ yield 1;
+ yield 2;
+ yield 3;
+ }
+}
+
+const f = new Foo ();
+const gen = f.generator();
+
+console.log(gen.next()); // { value: 1, done: false }
+console.log(gen.next()); // { value: 2, done: false }
+console.log(gen.next()); // { value: 3, done: false }
+console.log(gen.next()); // { value: undefined, done: true }
+</pre>
+
+<h3 id="Generator_as_a_computed_property" name="Generator_as_a_computed_property">計算プロパティとしてのジェネレーター</h3>
+
+<pre class="brush: js notranslate">class Foo {
+ *[Symbol.iterator] () {
+ yield 1;
+ yield 2;
+ }
+}
+
+const SomeObj = {
+ *[Symbol.iterator] () {
+ yield 'a';
+ yield 'b';
+ }
+}
+
+console.log(Array.from(new Foo)); // [ 1, 2 ]
+console.log(Array.from(SomeObj)); // [ 'a', 'b' ]
+</pre>
+
+<h3 id="Generators_are_not_constructable" name="Generators_are_not_constructable">ジェネレーターはコンストラクターではない</h3>
+
+<pre class="brush: js notranslate">function* f() {}
+var obj = new f; // throws "TypeError: f is not a constructor
+</pre>
+
+<h3 id="Generator_defined_in_an_expression" name="Generator_defined_in_an_expression">式で定義されたジェネレーター</h3>
+
+<pre class="brush: js notranslate">const foo = function* () {
+ yield 10;
+ yield 20;
+};
+
+const bar = foo();
+console.log(bar.next()); // {value: 10, done: false}</pre>
+
+<h3 id="Generator_example" name="Generator_example">ジェネレーターの例</h3>
+
+<pre class="syntaxbox notranslate">function* powers(n){
+ //endless loop to generate
+ for(let current =n;; current *= n){
+ yield current;
+ }
+}
+
+for(let power of powers(2)){
+ //controlling generator
+ if(power &gt; 32) break;
+ console.log(power)
+ //2
+ //4
+ //8
+ //16
+ //32
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-generator-function-definitions', 'function*')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.generator_function")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Operators/function*", "function* 式")}}</li>
+ <li>{{jsxref("GeneratorFunction")}} オブジェクト</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復プロトコル</a></li>
+ <li>{{jsxref("Operators/yield", "yield")}}</li>
+ <li>{{jsxref("Operators/yield*", "yield*")}}</li>
+ <li>{{jsxref("Function")}} オブジェクト</li>
+ <li>{{jsxref("Statements/function", "function")}} 宣言</li>
+ <li>{{jsxref("Operators/function", "function")}} 式</li>
+ <li>{{jsxref("Functions_and_function_scope", "関数と関数スコープ", "", 1)}}</li>
+ <li>その他のウェブリソース:
+ <ul>
+ <li><a href="http://facebook.github.io/regenerator/">Regenerator</a> an ES2015 generator compiler to ES5</li>
+ <li><a href="http://www.youtube.com/watch?v=qbKWsbJ76-s">Forbes Lindesay: Promises and Generators: control flow utopia -- JSConf EU 2013</a></li>
+ <li><a href="https://github.com/mozilla/task.js">Task.js</a></li>
+ <li><a href="https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/async%20%26%20performance/ch4.md#iterating-generators-asynchronously">Iterating generators asynchronously</a></li>
+ </ul>
+ </li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/if...else/index.html b/files/ja/web/javascript/reference/statements/if...else/index.html
new file mode 100644
index 0000000000..ed1acb9d3a
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/if...else/index.html
@@ -0,0 +1,152 @@
+---
+title: if...else
+slug: Web/JavaScript/Reference/Statements/if...else
+tags:
+ - JavaScript
+ - Language feature
+ - Reference
+ - Statement
+ - else
+ - if
+ - 文
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Statements/if...else
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><span class="seoSummary"><strong><code>if</code> 文</strong>は、指定された条件が {{Glossary("truthy")}} ならば文を実行します。条件が {{Glossary("falsy")}} なら、もう一方の文を実行することができます。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-ifelse.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">if (<var>condition</var>)
+ <var>statement1</var>
+[else
+ <var>statement2</var>]
+</pre>
+
+<dl>
+ <dt><code><var>condition</var></code></dt>
+ <dd>{{Glossary("truthy")}} または {{Glossary("falsy")}} と認識される<a href="/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressions">式</a>です。</dd>
+</dl>
+
+<dl>
+ <dt><code><var>statement1</var></code></dt>
+ <dd><var>condition</var> が {{Glossary("truthy")}} なら実行される文です。さらにネストされた <code>if</code> 文を含む、どんな文であってもかまいません。複数の文を実行するためには、それらの文をグループ化するために<a href="/ja/docs/Web/JavaScript/Reference/Statements/block">ブロック</a>文 (<code>{ ... }</code>) を使ってください。実行する文がない場合は、<a href="/ja/docs/Web/JavaScript/Reference/Statements/Empty">空文</a> を使用してください。</dd>
+ <dt><code><var>statement2</var></code></dt>
+ <dd><code><var>condition</var></code> が {{Glossary("falsy")}} で、かつ <code>else</code> 節が存在するなら実行される文です。ブロック文およびさらにネストされた <code>if</code> 文を含む、どんな文であってもかまいません。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>複数の <code>if...else</code> 文をネストすることで、 <code>else if</code> 節を作成することができます。 JavaScript では <code>elseif</code> (1 単語) キーワードがありませんので注意してください。</p>
+
+<pre class="brush: js">if (<var>condition1</var>)
+ <var>statement1</var>
+else if (<var>condition2</var>)
+ <var>statement2</var>
+else if (<var>condition3</var>)
+ <var>statement3</var>
+...
+else
+ <var>statementN</var>
+</pre>
+
+<p>これがどのように動作するか理解するために、ネストが適切にインデントされていたらどのように見えるかを示します。</p>
+
+<pre class="brush: js">if (<var>condition1</var>)
+ <var>statement1</var>
+else
+ if (<var>condition2</var>)
+ <var>statement2</var>
+ else
+ if (<var>condition3</var>)
+...
+</pre>
+
+<p>節の中で複数の文を実行するためには、それらの文をグループ化するためにブロック文 (<code>{ ... }</code>) を使ってください。一般的に、ブロック文を常に使うのはよい習慣です。ネストされた <code>if</code> 文が絡むコードにおいて特にそうです:</p>
+
+<pre class="brush: js">if (<var>condition</var>) {
+ <var>statements1</var>
+} else {
+ <var>statements2</var>
+}
+</pre>
+
+<p>プリミティブな真偽値である <code>true</code> および <code>false</code> を {{jsxref("Global_Objects/Boolean", "Boolean")}} オブジェクトの真偽性と混同しないでください。 <code>false</code>, <code>undefined</code>, <code>null</code>, <code>0</code>, <code>-0</code>, <code>NaN</code>, 空文字列 (<code>""</code>) のいずれでもない値、および任意のオブジェクトは (<code>false</code> の値を持つ Boolean オブジェクトを含め)、条件として使用されたときに {{Glossary("truthy")}} と解釈されます。例えば以下のような場合です。</p>
+
+<pre class="brush: js">var b = new Boolean(false);
+if (b) // この条件式は truthy です
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_if...else" name="Using_if...else">if...else の使用</h3>
+
+<pre class="brush: js">if (cipher_char === from_char) {
+ result = result + to_char;
+ x++;
+} else {
+ result = result + clear_char;
+}
+</pre>
+
+<h3 id="Using_else_if" name="Using_else_if">else if の使用</h3>
+
+<p>JavaScript に <code>elseif</code> 構文はありませんので注意してください。 <code>else</code> と <code>if</code> の間に空白を置いて記述します。</p>
+
+<pre class="brush: js">if (x &gt; 50) {
+ /* 何かを行う */
+} else if (x &gt; 5) {
+ /* 何かを行う */
+} else {
+ /* 何かを行う */
+}</pre>
+
+<h3 id="Assignment_within_the_conditional_expression" name="Assignment_within_the_conditional_expression">条件式の中での代入</h3>
+
+<p>代入はコードを眺めたときに等式と混同される可能性があるので、条件式の中で単純な代入を使わないほうが望ましいです。たとえば、次のコードを使わないでください。</p>
+
+<pre class="brush: js example-bad">if (x = y) {
+ /* 何かを行う */
+}
+</pre>
+
+<p>もし条件式の中で代入を使う必要があるのなら、次の例のように、代入の周りに追加の括弧を書くのが一般的な習慣です。</p>
+
+<pre class="brush: js example-good">if ((x = y)) {
+ /* 何かを行う */
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-if-statement', 'if statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.if_else")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/block", "block")}}</li>
+ <li>{{jsxref("Statements/switch", "switch")}}</li>
+ <li><a href="/ja/docs/JavaScript/Reference/Operators/Conditional_Operator">条件演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/import.meta/index.html b/files/ja/web/javascript/reference/statements/import.meta/index.html
new file mode 100644
index 0000000000..b6d12f830a
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/import.meta/index.html
@@ -0,0 +1,101 @@
+---
+title: import.meta
+slug: Web/JavaScript/Reference/Statements/import.meta
+tags:
+ - JavaScript
+ - Language feature
+ - Modules
+ - Reference
+ - Statement
+ - import
+ - import.meta
+translation_of: Web/JavaScript/Reference/Statements/import.meta
+---
+<div>{{JSSidebar("Statements")}}</div>
+
+<p><strong><code>import.meta</code></strong> オブジェクトはコンテキスト固有のメタデータを JavaScript のモジュールに公開します。これには、モジュールの URL のようなモジュールに関する情報が含まれています。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">import.meta</pre>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>構文は、<code>import</code> キーワードとドット、プロパティ名の <code>meta</code> で構成されています。通常、ドットの左側はプロパティアクセスが実行されるオブジェクトですが、ここでの <code>import</code> はオブジェクトではありません。</p>
+
+<p><code>import.meta</code> オブジェクトは ECMAScript 実装によって生成され、プロトタイプは {{jsxref("null")}} です。オブジェクトは拡張でき、そのプロパティは書き込み、構成、列挙可能です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_import.meta" name="Using_import.meta">import.meta を使用する</h3>
+
+<p><code>my-module.mjs</code> モジュールを指定します。</p>
+
+<pre class="brush: html notranslate">&lt;script type="module" src="my-module.js"&gt;&lt;/script&gt;
+</pre>
+
+<p><code>import.meta</code> オブジェクトを使用してモジュールのメタ情報にアクセスできます。</p>
+
+<pre class="brush: js; notranslate">console.log(import.meta); // { url: "file:///home/user/my-module.js" }</pre>
+
+<p>モジュールのベース URL を示す <code>url</code> プロパティを持つオブジェクトを返します。これは、外部スクリプトの場合はスクリプトを取得した URL、インラインスクリプトの場合はそれを含むドキュメントのベース URL です。</p>
+
+<p>これには、クエリパラメータまたはハッシュ(つまり、<code>?</code> または <code>#</code>)が含まれることに注意してください。</p>
+
+<p>例えば、以下のような HTML で</p>
+
+<pre class="brush: html notranslate">&lt;script type="module"&gt;
+import './index.mjs?someURLInfo=5';
+&lt;/script&gt;</pre>
+
+<p>以下の JavaScript ファイルは、<code>someURLInfo</code> パラメータをログに記録します。</p>
+
+<pre class="brush: js notranslate">// index.mjs
+new URL(import.meta.url).searchParams.get('someURLInfo'); // 5</pre>
+
+<p>ファイルが別のファイルをインポートする場合も同様です。</p>
+
+<pre class="brush: js notranslate">// index.mjs
+import './index2.mjs?someURLInfo=5';
+
+// index2.mjs
+new URL(import.meta.url).searchParams.get('someURLInfo'); // 5</pre>
+
+<p>メモ: 後者の例のように Node.js はクエリパラメータ(またはハッシュ)を渡しますが、Node 14.1.0 以降、クエリパラメータを持つ URL を <code>node --experimental-modules index.mjs?someURLInfo=5</code> という形式で読み込むとエラーになることに注意してください(この文脈では URL ではなくファイルとして扱われます)。</p>
+
+<p>このようなファイル固有の引数の受け渡しは、アプリケーション全体の <code>location.href</code>(HTML ファイルパスの後にクエリ文字列やハッシュを追加したもの [Node.js では <code>process.argv</code> を介して])で使用されているものを補完する場合があります。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td><code><a href="https://tc39.es/proposal-import-meta/#prod-ImportMeta">import.meta</a></code> proposal</td>
+ </tr>
+ <tr>
+ <td>{{SpecName("HTML WHATWG", "webappapis.html#hostgetimportmetaproperties", "import.meta")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.statements.import_meta")}}</p>
+
+<h3 id="Implementation_Progress" name="Implementation_Progress">実装の進捗状況</h3>
+
+<p>この機能はまだブラウザー間の安定性に達していないため、以下の表で、この機能の毎日の実装状況を示しています。このデータは、JavaScript の標準テストスイートである <a href="https://github.com/tc39/test262">Test262</a> で、ナイトリービルド、または各ブラウザーの JavaScript エンジンの最新リリースで、関連する機能テストを実行することで生成されます。</p>
+
+<div>{{EmbedTest262ReportResultsTable("import.meta")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Statements/import", "import")}}</li>
+ <li>{{JSxRef("Statements/export", "export")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/import/index.html b/files/ja/web/javascript/reference/statements/import/index.html
new file mode 100644
index 0000000000..f0854708d8
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/import/index.html
@@ -0,0 +1,253 @@
+---
+title: import
+slug: Web/JavaScript/Reference/Statements/import
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Language feature
+ - Modules
+ - Reference
+ - Statement
+ - dynamic import
+ - import
+translation_of: Web/JavaScript/Reference/Statements/import
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><code><strong>import</strong></code> 文は、他のモジュールによって<a href="/ja/docs/Web/JavaScript/Reference/Statements/export">エクスポート</a>された読み込み専用のライブバインディングをインポートするために使用します。インポートされたモジュールは、宣言するかどうかにかかわらず、{{JSxRef("Strict_mode","Strict モード")}}になります。<code>import</code> 文は、スクリプトに <code>type="module"</code> がない限り、埋め込みスクリプトで使用できません。インポートされたバインディングは、バインディングをエクスポートしたモジュールによって更新されるため、ライブバインディングと呼ばれます。</p>
+
+<p>また、<code>type="module"</code> のスクリプトを必要としない動的 <code><strong>import()</strong></code> という関数のようなものもあります。</p>
+
+<p>{{HTMLElement("script")}} タグの <code>nomodule</code> 属性を使用すると、下位互換性を確保できます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox brush:js notranslate">import <em>defaultExport</em> from "<em>module-name</em>";
+import * as <em>name</em> from "<em>module-name</em>";
+import { <em>export1</em> } from "<em>module-name</em>";
+import { <em>export1</em> as <em>alias1</em> } from "<em>module-name</em>";
+import { <em>export1</em> , <em>export2</em> } from "<em>module-name</em>";
+import { <em>foo</em> , <em>bar</em> } from "<em>module-name/path/to/specific/un-exported/file</em>";
+import { <em>export1</em> , <em>export2</em> as <em>alias2</em> , [...] } from "<em>module-name</em>";
+import <em>defaultExport</em>, { export1 [ , [...] ] } from "<em>module-name</em>";
+import <em>defaultExport</em>, * as <em>name</em> from "<em>module-name</em>";
+import "<em>module-name</em>";
+var promise = import("<em>module-name</em>");
+</pre>
+
+<dl>
+ <dt><code>defaultExport</code></dt>
+ <dd>モジュールからのデフォルトのエクスポートを参照する名前。</dd>
+ <dt><code>module-name</code></dt>
+ <dd>インポートするモジュール。モジュールがある <code>.js</code> ファイルへの相対または絶対パス名です。バンドラーによっては、拡張子を加えることが許され、あるいは求められることがあります。環境を確認してください。シングルクォートとダブルクォートだけが使えます。</dd>
+ <dt><code>name</code></dt>
+ <dd>インポートを参照するとき名前空間のように用いられるモジュールオブジェクトの名前。</dd>
+ <dt><code>exportN</code></dt>
+ <dd>インポートするエクスポートの名前。</dd>
+ <dt><code>aliasN</code></dt>
+ <dd>指定されたインポートを参照する名前。</dd>
+</dl>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>name</code> パラメータは、エクスポートを参照する名前空間のように用いられる「モジュールオブジェクト」の名前です。<code>export</code> パラメータは名前がつけられたエクスポートをそれぞれ指定します。それに対して、<code>import * as name</code> 構文はすべてをインポートします。構文の意味を明らかにするため、下記に例を示します。</p>
+
+<h3 id="Import_an_entire_modules_contents" name="Import_an_entire_module's_contents">モジュールのコンテンツすべてをインポートする</h3>
+
+<p>下記のコードは、<code>myModule</code> を現在のスコープに加え、<code>/modules/my-module.js</code> のファイルのモジュールからのエクスポートすべてを含めます。</p>
+
+<pre class="brush: js notranslate">import * as <em>myModule</em> from '/modules/my-module.js';
+</pre>
+
+<p>エクスポートにアクセスするには、モジュール名(ここでは「myModule」)を名前空間として用いることになります。たとえば、上記でインポートされたモジュールがエクスポートに <code>doAllTheAmazingThings()</code> を含む場合は、下記のように呼び出します。</p>
+
+<pre class="brush: js notranslate">myModule.doAllTheAmazingThings();</pre>
+
+<h3 id="Import_a_single_export_from_a_module" name="Import_a_single_export_from_a_module">モジュールからエクスポートをひとつインポートする</h3>
+
+<p><code>myExport</code> という名前のオブジェクトまたは値が、<code>my-module</code> から暗黙的 (モジュール全体がエクスポートされた場合) あるいは {{jsxref("Statements/export", "export")}} 文を用いて明示的にエクスポートされると、<code>myExport</code> が現在のスコープに加えられます。</p>
+
+<pre class="brush: js notranslate">import {myExport} from '/modules/my-module.js';</pre>
+
+<h3 id="Import_multiple_exports_from_module" name="Import_multiple_exports_from_module">モジュールから複数のエクスポートをインポートする</h3>
+
+<p>下記のコードは、<code>foo</code> と <code>bar</code> を現在のスコープに加えます。</p>
+
+<pre class="brush: js notranslate">import {foo, bar} from '/modules/my-module.js';</pre>
+
+<h3 id="Import_an_export_with_a_more_convenient_alias" name="Import_an_export_with_a_more_convenient_alias">エクスポートを扱いやすいエイリアスにしてインポートする</h3>
+
+<p>インポートするときエクスポートの名前を変えることができます。例えば下記のコードは、エクスポートを <code>shortName</code> として現在のスコープに加えます。</p>
+
+<pre class="brush: js notranslate">import {reallyReallyLongModuleExportName as shortName}
+ from '/modules/my-module.js';</pre>
+
+<h3 id="Rename_multiple_exports_during_import" name="Rename_multiple_exports_during_import">インポートする際に複数のエクスポートの名前を変える</h3>
+
+<p>下記のコードは、複数のエクスポートを扱いやすいエイリアスにしてモジュールからインポートします。</p>
+
+<pre class="brush: js notranslate">import {
+ reallyReallyLongModuleExportName as shortName,
+ anotherLongModuleName as short
+} from '/modules/my-module.js';</pre>
+
+<h3 id="Import_a_module_for_its_side_effects_only" name="Import_a_module_for_its_side_effects_only">副作用のためだけにモジュールをインポートする</h3>
+
+<p>副作用だけのためにモジュール全体をインポートしたときは、何もインポートされません。モジュールのグローバルコードが実行されるだけで、実際の値はインポートされないのです。</p>
+
+<pre class="brush: js notranslate">import '/modules/my-module.js';
+</pre>
+
+<p>これは{{anch("Dynamic Imports", "動的インポート")}}にも対応しています。</p>
+
+<pre class="brush: js notranslate">(async () =&gt; {
+ if (somethingIsTrue) {
+  // 副作用のためのインポートモジュール
+  await import('/modules/my-module.js');
+  }
+})();</pre>
+
+<p>If your project uses packages that export ESM, you can also import them for side effects only. This will run the code in the package entry point file (and any files it imports) only. </p>
+
+
+<h3 id="Importing_defaults" name="Importing_defaults">デフォルトをインポートする</h3>
+
+<p>デフォルトの {{jsxref("Statements/export", "export")}}(オブジェクト、関数、クラスなど)にも対応できます。<code>import</code> 文を用いて、そのようなデフォルトをインポートします。</p>
+
+<p>もっとも単純なやり方は、デフォルトを直接インポートすることです。</p>
+
+<pre class="brush: js notranslate">import myDefault from '/modules/my-module.js';</pre>
+
+<p>また、デフォルトの構文とともに上記のエイリアス(名前空間または名前つきのインポート)を用いることもできます。その場合は下記のように、デフォルトのインポートを先に宣言しなければなりません。</p>
+
+<pre class="brush: js notranslate">import myDefault, * as myModule from '/modules/my-module.js';
+// myModule は名前空間として使う</pre>
+
+<p>あるいは、次のような書き方もできます。</p>
+
+<pre class="brush: js notranslate">import myDefault, {foo, bar} from '/modules/my-module.js';
+// 特定の名前つきのインポート
+</pre>
+
+<p>{{anch("Dynamic Imports", "動的インポート")}}を使用してデフォルトのエクスポートをインポートする場合、動作が少し異なります。返されたオブジェクトから "default" キーを破棄して名前を変更する必要があります。</p>
+
+<pre class="brush: js notranslate">(async () =&gt; {
+ if (somethingIsTrue) {
+  const { default: myDefault, foo, bar } = await import('/modules/my-module.js');
+ }
+})();</pre>
+
+<h3 id="Dynamic_Imports" name="Dynamic_Imports">動的インポート</h3>
+
+<p>標準のインポート構文は静的で、インポートされたモジュールのすべてのコードは、ロード時に常に評価されます。条件付きまたはオンデマンドでモジュールをロードしたい状況では、代わりに動的インポートを使用できます。以下に、動的インポートの使用を検討する必要がある理由をいくつか述べます。</p>
+
+<ul>
+ <li>静的にインポートすると、コードの読み込みが大幅に遅くなり、インポートするコードが必要になる可能性が低くなるか、後で必要になる可能性が低くなります。</li>
+ <li>静的にインポートすると、プログラムのメモリー使用量が大幅に増加し、インポートするコードが必要になる可能性が低くなります。</li>
+ <li>ロード時にインポートするモジュールが存在しない場合。</li>
+ <li>インポート指定子の文字列を動的に作成する必要がある場合。(静的インポートは静的指定子のみをサポートします。)</li>
+ <li>インポートするモジュールに副作用があり、何らかの条件が真でない限り、それらの副作用を望まない場合。(モジュールに副作用がないことを推奨しますが、モジュールの依存関係でこれを制御できない場合があります。)</li>
+</ul>
+
+<p>動的インポートは必要な場合にのみ使用してください。初期の依存関係をロードするには静的な形式が適していて、静的解析ツールや<a href="/ja/docs/Glossary/Tree_shaking">ツリーシェイク</a>の恩恵をよりよく受けることができます。</p>
+
+<p>モジュールを動的にインポートするために、<code>import</code> キーワードを関数として呼び出すことができます。この方法で使用すると、promise が返されます。</p>
+
+<pre class="brush: js notranslate">import('/modules/my-module.js')
+  .then((module) =&gt; {
+  // module を使った何らかの処理
+  });
+</pre>
+
+<p>この方法は <code>await</code> キーワードを使えます。</p>
+
+<pre class="brush: js notranslate">let module = await import('/modules/my-module.js');</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Standard_Import" name="Standard_Import">標準的なインポート</h3>
+
+<p>以下のコードは AJAX JSON リクエストの処理を支援する補助モジュールからインポートする方法を示しています。</p>
+
+<h4 id="The_module_file.js" name="The_module_file.js">モジュール: file.js</h4>
+
+<pre class="brush: js notranslate">function getJSON(url, callback) {
+ let xhr = new XMLHttpRequest();
+ xhr.onload = function () {
+ callback(this.responseText)
+ };
+ xhr.open('GET', url, true);
+ xhr.send();
+}
+
+export function getUsefulContents(url, callback) {
+ getJSON(url, data =&gt; callback(JSON.parse(data)));
+}</pre>
+
+<h4 id="The_main_program_main.js" name="The_main_program_main.js">メインプログラム: main.js</h4>
+
+<pre class="brush: js notranslate">import { getUsefulContents } from '/modules/file.js';
+
+getUsefulContents('http://www.example.com',
+ data =&gt; { doSomethingUseful(data); });</pre>
+
+<h3 id="Dynamic_Import" name="Dynamic_Import">動的インポート</h3>
+
+<p>この例は、ユーザーのアクション(この場合はボタンクリック)に基づいて機能をページにロードし、そのモジュール内で関数を呼び出す方法を示しています。この機能を実装する方法はこれだけではありません。<code>import()</code> 関数は <code>await</code> もサポートしています。</p>
+
+<pre class="brush: js notranslate">const main = document.querySelector("main");
+for (const link of document.querySelectorAll("nav &gt; a")) {
+ link.addEventListener("click", e =&gt; {
+ e.preventDefault();
+
+ import('/modules/my-module.js')
+ .then(module =&gt; {
+ module.loadPageInto(main);
+ })
+ .catch(err =&gt; {
+ main.textContent = err.message;
+ });
+ });
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-imports", "Imports")}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-import-calls", "Import Calls")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.statements.import")}}</p>
+
+<h3 id="Implementation_Progress" name="Implementation_Progress">実装の進捗状況</h3>
+
+<p>この機能はまだブラウザー間の安定性に達していないため、以下の表で、この機能の毎日の実装状況を示しています。このデータは、JavaScript の標準テストスイートである <a href="https://github.com/tc39/test262">Test262</a> で、ナイトリービルド、または各ブラウザーの JavaScript エンジンの最新リリースで、関連する機能テストを実行することで生成されます。</p>
+
+<div>{{EmbedTest262ReportResultsTable("dynamic-import")}}</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{JSxRef("Statements/export", "export")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/import.meta"><code>import.meta</code></a></li>
+ <li>Limin Zhu, Brian Terlson and Microsoft Edge Team: <a href="https://blogs.windows.com/msedgedev/2016/05/17/es6-modules-and-beyond/">Previewing ES6 Modules and more from ES2015, ES2016 and beyond</a></li>
+ <li>Hacks blog post by Jason Orendorff: <a href="https://hacks.mozilla.org/2015/08/es6-in-depth-modules/">ES6 in Depth: Modules</a></li>
+ <li>Hacks blog post by Lin Clark: <a href="https://hacks.mozilla.org/2018/03/es-modules-a-cartoon-deep-dive/">ES modules: A cartoon deep-dive</a></li>
+ <li>Axel Rauschmayer's book: <a class="external" href="http://exploringjs.com/es6/ch_modules.html">"Exploring JS: Modules"</a></li>
+ <li>The Modern JavaScript Tutorial(javascript.info): <a class="external" href="https://javascript.info/import-export">Export and Import</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/index.html b/files/ja/web/javascript/reference/statements/index.html
new file mode 100644
index 0000000000..c7540c45a3
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/index.html
@@ -0,0 +1,130 @@
+---
+title: 文と宣言
+slug: Web/JavaScript/Reference/Statements
+tags:
+ - JavaScript
+ - Landing page
+ - Reference
+ - statements
+translation_of: Web/JavaScript/Reference/Statements
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p>JavaScript アプリケーションは、適切な構文で書かれた文から構成されます。ひとつの文が数行に渡る場合もあります。また複数の文それぞれがセミコロンで区切られていれば 1 行となる場合もあります。そのキーワードはひとつではなく、キーワードのグループとなっています。</p>
+
+<h2 id="Statements_and_declarations_by_category" name="Statements_and_declarations_by_category">文と宣言(カテゴリ別)</h2>
+
+<p>アルファベット順リストは左サイドバーで確認できます。</p>
+
+<h3 id="Control_flow" name="Control_flow">フロー制御</h3>
+
+<dl>
+ <dt>{{jsxref("Statements/block", "ブロック","",1)}}</dt>
+ <dd>ブロック文は 0 個以上の文をグループ化するのに使います。ブロックは 1 組の波括弧で囲みます。</dd>
+ <dt>{{jsxref("Statements/break", "break")}}</dt>
+ <dd>現在実行中のループ、<code>switch</code> による分岐、あるいはラベル文を終了し、その終了した文に続く文へとプログラムの制御を移行します。</dd>
+ <dt>{{jsxref("Statements/continue", "continue")}}</dt>
+ <dd>現在実行中のループ、またはラベル付きループで現在反復している文の実行を終了し、そのループの実行を次の反復から継続します。</dd>
+ <dt>{{jsxref("Statements/Empty", "空文","",1)}}</dt>
+ <dd>空文は、文が必要ないが JavaScript の文法上 1 つの文が必要な場合に使います。 </dd>
+ <dt>{{jsxref("Statements/if...else", "if...else")}}</dt>
+ <dd>与えられた条件が真の場合はある文を実行します。条件が偽の場合はまた別の文を実行できます。</dd>
+ <dt>{{jsxref("Statements/switch", "switch")}}</dt>
+ <dd>ある式を評価し、式の値を case 節と照らし合わせ、 case 節に関連付けられた文を実行します。</dd>
+ <dt>{{jsxref("Statements/throw", "throw")}}</dt>
+ <dd>ユーザー定義の例外を発生させます。</dd>
+ <dt>{{jsxref("Statements/try...catch", "try...catch")}}</dt>
+ <dd>実行を試み、例外が発生した際に行うべき処理を規定する文のブロックを記述します。</dd>
+</dl>
+
+<h3 id="Declarations" name="Declarations">宣言</h3>
+
+<dl>
+ <dt>{{jsxref("Statements/var", "var")}}</dt>
+ <dd>変数を宣言し、その変数をある値に初期化することもできます。</dd>
+ <dt>{{jsxref("Statements/let", "let")}}</dt>
+ <dd>ブロックスコープを持つ局所変数を宣言し、その変数をある値に初期化することもできます。</dd>
+ <dt>{{jsxref("Statements/const", "const")}}</dt>
+ <dd>読み取り専用の名前付き定数を宣言します。</dd>
+</dl>
+
+<h3 id="Functions_and_classes" name="Functions_and_classes">関数とクラス</h3>
+
+<dl>
+ <dt>{{jsxref("Statements/function", "function")}}</dt>
+ <dd>特定の仮引数を持つ関数を宣言します。</dd>
+ <dt>{{jsxref("Statements/function*", "function*")}}</dt>
+ <dd><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">イテレーター</a>をより簡単に書けるジェネレーター関数です。</dd>
+ <dt>{{jsxref("Statements/async_function", "async function")}}</dt>
+ <dd>指定したパラメーターの非同期関数を定義します。</dd>
+ <dt>{{jsxref("Statements/return", "return")}}</dt>
+ <dd>関数によって返される値を指定します。</dd>
+ <dt>{{jsxref("Statements/class", "class")}}</dt>
+ <dd>クラスを宣言します。</dd>
+</dl>
+
+<h3 id="Iterations" name="Iterations">反復処理</h3>
+
+<dl>
+ <dt>{{jsxref("Statements/do...while", "do...while")}}</dt>
+ <dd>テスト条件が偽と評価されるまで指定された文を実行するループを作成します。この条件は文が実行されたあとに評価され、その結果少なくとも 1 回は指定された文が実行されます。</dd>
+ <dt>{{jsxref("Statements/for", "for")}}</dt>
+ <dd>丸括弧で囲まれ、セミコロンで区切られた 3 つの式と、それに続くループ内で実行される文から構成されるループを作成します。</dd>
+ <dt>{{jsxref("Statements/for_each...in", "for each...in")}}</dt>
+ <dd>オブジェクトプロパティのすべての値を、指定した変数を通して反復処理を行います。それぞれ個別のプロパティに対し、指定した文が実行されます。</dd>
+ <dt>{{jsxref("Statements/for...in", "for...in")}}</dt>
+ <dd>オブジェクトの列挙可能なプロパティに対し任意の順番で反復処理を行います。それぞれ個別のプロパティに対し、文を実行できます。</dd>
+ <dt>{{jsxref("Statements/for...of", "for...of")}}</dt>
+ <dd>反復可能オブジェクト ({{jsxref("Global_Objects/Array","配列","","true")}}、配列風オブジェクト、<a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators">イテレーターとジェネレーター</a>を含む) を反復処理し、それぞれ個別のプロパティの値に対する実行文をともなった反復処理フックを呼び出します。</dd>
+ <dt>{{jsxref("Statements/for-await...of", "for await...of")}}</dt>
+ <dd>非同期反復オブジェクト、配列風オブジェクト、<a href="/ja/docs/JavaScript/Guide/Iterators_and_Generators">イテレーターとジェネレーター</a>を反復処理し、各固有のプロパティ値で実行する文を実行しつつ、カスタムイテレーションフックを実行する。</dd>
+ <dt>{{jsxref("Statements/while", "while")}}</dt>
+ <dd>テスト条件が真と評価される間、指定した文を実行するループを作成します。この条件は文が実行される前に評価されます。</dd>
+</dl>
+
+<h3 id="Others" name="Others">その他</h3>
+
+<dl>
+ <dt>{{jsxref("Statements/debugger", "debugger")}}</dt>
+ <dd>利用可能なデバッグ機能を呼び出します。利用可能なデバッグ機能がない場合、この文は無効となります。</dd>
+ <dt>{{jsxref("Statements/export", "export")}}</dt>
+ <dd>外部モジュールや別のスクリプトでインポートできるように、関数をエクスポートするのに使われます。</dd>
+ <dt>{{jsxref("Statements/import", "import")}}</dt>
+ <dd>外部モジュールや別のスクリプトからエクスポートされる関数をインポートするのに使われます。</dd>
+ <dt><a href="/ja/docs/Web/JavaScript/Reference/Statements/import.meta"><code>import.meta</code></a></dt>
+ <dd>JavaScript モジュールのコンテンツ固有なメタデータを公開するオブジェクト。</dd>
+ <dt>{{jsxref("Statements/label", "label", "", 1)}}</dt>
+ <dd><code>break</code> や <code>continue</code> 文を使う際に参照できる識別子を含む文を用意します。</dd>
+</dl>
+
+<dl>
+ <dt>{{jsxref("Statements/with", "with")}} </dt>
+ <dd>文のスコープチェーンを拡張します。</dd>
+</dl>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-ecmascript-language-statements-and-declarations', 'ECMAScript Language: Statements and Declarations')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators">演算子</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/label/index.html b/files/ja/web/javascript/reference/statements/label/index.html
new file mode 100644
index 0000000000..12deae6ffd
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/label/index.html
@@ -0,0 +1,188 @@
+---
+title: label
+slug: Web/JavaScript/Reference/Statements/label
+tags:
+ - JavaScript
+ - Language feature
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/label
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong>ラベル付き文</strong>は、 {{jsxref("Statements/break", "break")}} 文や {{jsxref("Statements/continue", "continue")}} 文と組み合わせて使用することができます。これは文に参照先となる識別子の接頭辞をつけます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-label.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<div class="note">
+<p><strong>注:</strong> ループやブロックに名前を付けることはめったにありません。ふつうは、ジャンプによるループの代わりに関数呼び出しを使用することができます。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><em>ラベル</em> :
+ <em>文</em>
+</pre>
+
+<dl>
+ <dt><code><em>ラベル</em></code></dt>
+ <dd>予約語ではない任意の JavaScript の識別子。</dd>
+ <dt><code><em>文</em></code></dt>
+ <dd>文。 <code>break</code> は任意のラベル付き文で使うことができ、 <code>continue</code> はループのラベル付き文で使うことができます。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>ループを識別するためにラベルを使い、そして、プログラムがループを中断すべきか、またはその実行を継続すべきかを指し示すために、<code>break</code> または <code>continue</code> 文を使うことができます。</p>
+
+<p>JavaScript には <strong><code>goto</code> 文がなく</strong>、ラベルと <code>break</code> または <code>continue</code> のみ使用できます。</p>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a>のコードでは、 "<code>let</code>" をラベル名として使用することができません。この場合、 {{jsxref("SyntaxError")}} が発生します (let は予約語です)。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_a_labeled_continue_with_for_loops" name="Using_a_labeled_continue_with_for_loops">ラベル付き continue を for ループで使用する</h3>
+
+<pre class="brush: js notranslate">var i, j;
+
+loop1:
+for (i = 0; i &lt; 3; i++) { // 1 番目の for 文に "loop1" というラベルをつける
+ loop2:
+ for (j = 0; j &lt; 3; j++) { // 2 番目の for 文に "loop2" というラベルをつける
+ if (i === 1 &amp;&amp; j === 1) {
+ continue loop1;
+ }
+ console.log('i = ' + i + ', j = ' + j);
+ }
+}
+
+// 結果:
+// "i = 0, j = 0"
+// "i = 0, j = 1"
+// "i = 0, j = 2"
+// "i = 1, j = 0"
+// "i = 2, j = 0"
+// "i = 2, j = 1"
+// "i = 2, j = 2"
+// "i = 1, j = 1" と "i = 1, j = 2" をスキップしていることに注目
+</pre>
+
+<h3 id="Using_a_labeled_continue_statement" name="Using_a_labeled_continue_statement">ラベル付き continue 文を使用する</h3>
+
+<p>配列 items と tests について、このサンプルはすべてを tests に渡した items の数を数えます。</p>
+
+<pre class="brush: js notranslate">var itemsPassed = 0;
+var i, j;
+
+top:
+for (i = 0; i &lt; items.length; i++) {
+ for (j = 0; j &lt; tests.length; j++) {
+ if (!tests[j].pass(items[i])) {
+ continue top;
+ }
+ }
+
+ itemsPassed++;
+}</pre>
+
+<h3 id="Using_a_labeled_break_with_for_loops" name="Using_a_labeled_break_with_for_loops">for ループでラベル付き break を使用する</h3>
+
+<pre class="brush: js notranslate">var i, j;
+
+loop1:
+for (i = 0; i &lt; 3; i++) { // 1 番目の for 文に "loop1" というラベルをつける
+ loop2:
+ for (j = 0; j &lt; 3; j++) { // 2 番目の for 文に "loop2" というラベルをつける
+ if (i === 1 &amp;&amp; j === 1) {
+ break loop1;
+ }
+ console.log('i = ' + i + ', j = ' + j);
+ }
+}
+
+// 結果:
+// "i = 0, j = 0"
+// "i = 0, j = 1"
+// "i = 0, j = 2"
+// "i = 1, j = 0"
+// continue の例との違いに注目</pre>
+
+<h3 id="Using_a_labeled_break_statement" name="Using_a_labeled_break_statement">ラベル付き break 文を使用する</h3>
+
+<p>配列 items と tests について、このサンプルは items のすべてを tests に渡したかを判断します。</p>
+
+<pre class="brush: js notranslate">var allPass = true;
+var i, j;
+
+top:
+for (i = 0; i &lt; items.length; i++) {
+ for (j = 0; j &lt; tests.length; j++) {
+ if (!tests[j].pass(items[i])) {
+ allPass = false;
+ break top;
+ }
+ }
+}</pre>
+
+<h3 id="Using_a_labeled_block_with_break" name="Using_a_labeled_block_with_break">break を使用したラベル付きブロックの使用</h3>
+
+<p>ラベルを単純なブロックの中でも使用することができますが、ループ以外のラベルでは break 文のみが意味を持ちます。</p>
+
+<pre class="brush: js notranslate">foo: {
+ console.log('face');
+ break foo;
+ console.log('this will not be executed');
+}
+console.log('swap');
+
+// this will log:
+
+// "face"
+// "swap" </pre>
+
+<h3 id="Labeled_function_declarations" name="Labeled_function_declarations">ラベル付き関数宣言</h3>
+
+<p>ECMAScript 2015 から、ラベル付き関数宣言が <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-labelled-function-declarations">web compatibility annex of the specification</a> において、厳格モード以外のコードで標準化されました。</p>
+
+<pre class="brush: js notranslate">L: function F() {}</pre>
+
+<p>ただし、<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a>のコードでは {{jsxref("SyntaxError")}} が発生します。</p>
+
+<pre class="brush: js notranslate">'use strict';
+L: function F() {}
+// SyntaxError: functions cannot be labelled</pre>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Statements/function*">ジェネレーター関数</a>は、厳格モードであってもなくてもラベル付けすることはできません。</p>
+
+<pre class="brush: js notranslate">L: function* F() {}
+// SyntaxError: generator functions cannot be labelled
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-labelled-statements', 'Labelled statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.label")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/break", "break")}}</li>
+ <li>{{jsxref("Statements/continue", "continue")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/let/index.html b/files/ja/web/javascript/reference/statements/let/index.html
new file mode 100644
index 0000000000..a3d9631dd6
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/let/index.html
@@ -0,0 +1,280 @@
+---
+title: let
+slug: Web/JavaScript/Reference/Statements/let
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Language feature
+ - Statement
+ - Variable declaration
+ - Variables
+ - let
+ - 変数
+ - 変数宣言
+ - 文
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Statements/let
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>let</code></strong> 文はブロックスコープのローカル変数を宣言します。任意で値を代入して初期化できます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-let.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">let <var>var1</var> [= <var>value1</var>] [, <var>var2</var> [= <var>value2</var>]] [, ..., <var>varN</var> [= <var>valueN</var>];</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>var1</var></code>, <code><var>var2</var></code>, …, <code><var>varN</var></code></dt>
+ <dd>宣言する変数または複数の変数の名前です。それぞれは JavaScript の正式な識別子である必要があります。</dd>
+ <dt><code><var>value1</var></code>, <code><var>value2</var></code>, …, <code><var>valueN</var></code> {{optional_inline}}</dt>
+ <dd>宣言される変数ごとに、任意で初期値を JavaScript の正式な式で指定することができます。</dd>
+</dl>
+
+<p><a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">分割代入</a>構文は、変数の宣言にも使用できます。</p>
+
+<pre class="syntaxbox notranslate">let <var>{ bar }</var> = <em>foo</em>; // where foo = { bar:10, baz:12 };
+/* これは、値が 10 の 'bar' という名前の変数を作成します。*/</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><strong><code>let</code></strong> を使用することで、それが使用された{{jsxref("statements/block", "ブロック", "", 1)}}、文または式にスコープを限定した変数を宣言することができます。これは {{jsxref("statements/var", "var")}} キーワードのように、変数をブロックスコープに関係なく、グローバルや関数全体のローカルに定義するようなことはありません。他にも、{{jsxref("statements/var", "var")}} と <code>let</code> は、後者は<a href="#Temporal_dead_zone">パーサーが評価したときのみ</a>値の初期化が行われる点が異なります。(下記参照)</p>
+
+<p>{{jsxref("statements/const", "const", "Description")}} と同様に、<code>let</code> はグローバル (一番上のスコープ) で宣言されたときに {{domxref("window")}} オブジェクトのプロパティを生成<em>しません</em>。</p>
+
+<p>なぜ "<strong>let</strong>" という名前が選ばれたのかについては、<a href="https://stackoverflow.com/questions/37916940/why-was-the-name-let-chosen-for-block-scoped-variable-declarations-in-javascri">こちら</a> で解説されています。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Scoping_rules_2" name="Scoping_rules_2">スコープのルール</h3>
+
+<p><strong><code>let</code></strong> で定義された変数は、自身が定義されたブロックと、そこに含まれるサブブロックがスコープになります。この点において <strong><code>let</code></strong> のふるまいは <strong><code>var</code></strong> にとてもよく似ています。大きな違いは、<strong><code>var</code></strong> で定義された変数のスコープはそれを含んでいる関数全体になるということです。</p>
+
+<pre class="brush:js notranslate">function varTest() {
+ var x = 1;
+ {
+ var x = 2; // 同じ変数です!
+ console.log(x); // 2
+ }
+ console.log(x); // 2
+}
+
+function letTest() {
+ let x = 1;
+ {
+ let x = 2; // 異なる変数
+ console.log(x); // 2
+ }
+ console.log(x); // 1
+}
+</pre>
+
+<p id="Scoping_rules">プログラムや関数の最上位においては、<strong><code>let</code></strong> は <strong><code>var</code></strong> とは異なり、グローバルオブジェクト上にプロパティを生成しません。</p>
+
+<pre class="brush:js notranslate">var x = 'global';
+let y = 'global';
+console.log(this.x); // "global"
+console.log(this.y); // undefined
+</pre>
+
+<h3 id="Emulating_private_members" name="Emulating_private_members">プライベートメンバーの模倣</h3>
+
+<p>{{Glossary("Constructor", "コンストラクター")}}の処理の中で <strong><code>let</code></strong> を使用すれば、<a href="/ja/docs/Web/JavaScript/Closures">クロージャ</a>を使用することなくプライベートメンバーを結び付けることができます。</p>
+
+<pre class="brush:js notranslate">var Thing;
+
+{
+ let privateScope = new WeakMap();
+ let counter = 0;
+
+ Thing = function() {
+ this.someProperty = 'foo';
+
+ privateScope.set(this, {
+ hidden: ++counter,
+ });
+ };
+
+ Thing.prototype.showPublic = function() {
+ return this.someProperty;
+ };
+
+ Thing.prototype.showPrivate = function() {
+ return privateScope.get(this).hidden;
+ };
+}
+
+console.log(typeof privateScope);
+// "undefined"
+
+var thing = new Thing();
+
+console.log(thing);
+// Thing {someProperty: "foo"}
+
+thing.showPublic();
+// "foo"
+
+thing.showPrivate();
+// 1
+</pre>
+
+<p>ローカル変数をクロージャで閉じた場合と同様に、<code>var</code> を使ってプライバシーパターンを作成できますが、上の例のようなブロックスコープではなく、関数スコープ(通常はモジュールパターンの IIFE)が必要です。</p>
+
+<h3 id="Redeclarations" name="Redeclarations">再宣言</h3>
+
+<p>同じ関数やブロックのスコープ内で同じ変数を再宣言すると {{jsxref("SyntaxError")}} が発生します。</p>
+
+<pre class="brush: js example-bad notranslate">if (x) {
+ let foo;
+ let foo; // SyntaxError が発生します。
+}
+</pre>
+
+<p>{{jsxref("Statements/switch", "switch")}} 文には 1 つのブロックしかないため、エラーを発生させてしまうかもしれません。</p>
+
+<pre class="brush: js example-bad notranslate">let x = 1;
+switch(x) {
+ case 0:
+ let foo;
+ break;
+
+ case 1:
+ let foo; // 再宣言のため TypeError
+ break;
+}</pre>
+
+<p>ただし、指摘しておくべき重要な点として、case 節の中で入れ子にしたブロックを使えば、新しいブロックスコープの字句環境を作ることができるため、上記のような再宣言エラーが発生しなくなります。</p>
+
+<pre class="brush: js notranslate">let x = 1;
+
+switch(x) {
+ case 0: {
+ let foo;
+ break;
+ }
+ case 1: {
+ let foo;
+ break;
+ }
+}</pre>
+
+<h3 id="Temporal_dead_zone" name="Temporal_dead_zone">一時的なデッドゾーン</h3>
+
+<p>{{jsxref("Statements/var", "var", "var_hoisting")}} で宣言された変数が <code>undefined</code> の値で始まるのとは異なり、<code>let</code> の変数は定義が評価されるまで初期化されません。変数を宣言より前で参照すると {{jsxref("ReferenceError")}} が発生します。変数はブロックの先頭から初期化が行われるまで、「一時的なデッドゾーン」にあるのです。</p>
+
+<pre class="brush: js example-bad notranslate">function do_something() {
+ console.log(bar); // undefined
+ console.log(foo); // ReferenceError
+ var bar = 1;
+ let foo = 2;
+}</pre>
+
+<h3 id="The_temporal_dead_zone_and_typeof" name="The_temporal_dead_zone_and_typeof">一時的なデッドゾーンと <code>typeof</code></h3>
+
+<p>単純に宣言されていない変数や <code>undefined</code> の値を持つ変数とは異なり、<code>typeof</code> 演算子を使用して一時的なデッドゾーン内の変数の型を確認するしようとすると、{{jsxref("ReferenceError")}} が発生します。</p>
+
+<pre class="brush: js example-bad notranslate">// 'undefined' を表示
+console.log(typeof undeclaredVariable);
+
+// 'ReferenceError' が発生します
+console.log(typeof i);
+let i = 10;</pre>
+
+<h3 id="Another_example_of_temporal_dead_zone_combined_with_lexical_scoping" name="Another_example_of_temporal_dead_zone_combined_with_lexical_scoping">一時的なデッドゾーンとレキシカルスコープと組み合わせた例</h3>
+
+<p>字句スコープのため、式 <code>(foo + 55)</code> の中にある識別子 <code>foo</code> は <code>if</code> ブロックの <code>foo</code> と評価され、その上にある変数 <code>foo</code> (<code>33</code> の値を持つ) とは評価されません。</p>
+
+<p>同じ行では、<code>if</code> ブロックの <code>foo</code> が字句環境よりすでに生成されていますが、初期化に達していない (完了していない) 状態です (その分自身の一部であるため)。</p>
+
+<p>このブロックの <code>foo</code> は一時的なデッドゾーンの中にあります。</p>
+
+<pre class="brush: js example-bad notranslate">function test(){
+ var foo = 33;
+ if(foo) {
+ let foo = (foo + 55); // ReferenceError
+ }
+}
+test();</pre>
+
+<p>この現象は、以下のような状況で混乱を催すかもしれません。<code>let n of n.a</code> という命令は、すでに for ループブロックの私的スコープの中になります。そのため、識別子 <code>n.a</code> は命令自身 (<code>let n</code>) の最初の部分にある '<code>n</code>' オブジェクトのプロパティ '<code>a</code>' として解決されます。</p>
+
+<p>その宣言文にはまだ到達・完了していないため、まだ一時的なデッドゾーン内にあるとみなされます。</p>
+
+<pre class="brush: js example-bad notranslate">function go(n) {
+ // n here is defined!
+ console.log(n); // Object {a: [1,2,3]}
+
+ for (let n of n.a) { // ReferenceError
+ console.log(n);
+ }
+}
+
+go({a: [1, 2, 3]});
+</pre>
+
+<h3 id="Other_situations" name="Other_situations">そのほかの場面</h3>
+
+<p>ブロックの中で使えば、<strong><code>let</code></strong> の変数のスコープはそのブロックの中に制限されます。スコープが自身の宣言された関数全体になる <code><strong>var</strong></code> との違いに注意してください。</p>
+
+<pre class="brush: js notranslate">var a = 1;
+var b = 2;
+
+if (a === 1) {
+ var a = 11; // スコープはグローバル
+ let b = 22; // スコープは if ブロック内
+
+ console.log(a); // 11
+ console.log(b); // 22
+}
+
+console.log(a); // 11
+console.log(b); // 2
+</pre>
+
+<p>しかし、下記の <strong><code>var</code></strong> と <strong><code>let</code></strong> 宣言の組み合わせは、<strong><code>var</code></strong> がブロックの先頭に配置されているため、{{jsxref("SyntaxError")}} になります。これによって、変数が暗黙的に再宣言されるからです。</p>
+
+<pre class="brush: js example-bad notranslate">let x = 1;
+
+{
+ var x = 2; // 再宣言のため SyntaxError
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-let-and-const-declarations', 'Let and Const Declarations')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、<a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.let")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/var", "var")}}</li>
+ <li>{{jsxref("Statements/const", "const")}}</li>
+ <li><a href="https://hacks.mozilla.org/2015/07/es6-in-depth-let-and-const/">ES6 In Depth: <code>let</code> and <code>const</code></a></li>
+ <li><a href="https://blog.mozilla.org/addons/2015/10/14/breaking-changes-let-const-firefox-nightly-44/">Breaking changes in <code>let</code> and <code>const</code> in Firefox 44</a></li>
+ <li><a href="https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/scope%20%26%20closures/ch3.md">You Don't Know JS: Scope &amp; Closures: Chapter 3: Function vs. Block Scope</a></li>
+ <li><a href="https://stackoverflow.com/a/33198850/1125029">StackOverflow: What is the Temporal Dead Zone</a>?</li>
+ <li><a href="https://stackoverflow.com/questions/762011/whats-the-difference-between-using-let-and-var-to-declare-a-variable">StackOverflow: What is the difference between using <code>let</code> and <code>var</code>?</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/return/index.html b/files/ja/web/javascript/reference/statements/return/index.html
new file mode 100644
index 0000000000..528e48a118
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/return/index.html
@@ -0,0 +1,143 @@
+---
+title: return
+slug: Web/JavaScript/Reference/Statements/return
+tags:
+ - JavaScript
+ - Language feature
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/return
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>return</code> 文</strong>は、関数の実行を終了して、関数の呼び出し元に返す値を指定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-return.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">return [<var>expression</var>]; </pre>
+
+<dl>
+ <dt><code><var>expression</var></code></dt>
+ <dd>返す式。もし省略されたなら、<code>undefined</code> が代わりに返ります。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>関数内で <code>return</code> 文を呼び出すと、関数の実行が停止します。値が指定されていれば、その値を関数の呼び出し元に返します。例えば、以下の関数は引数 <code>x</code> が数値の場合、 <code>x</code> の平方を返します。</p>
+
+<pre class="brush: js notranslate">function square(x) {
+ return x * x;
+}
+var demo = square(3);
+// demo will equal 9
+</pre>
+
+<p>値が省略された場合は <code>undefined</code> が代わりに返されます。</p>
+
+<p>以下の return 文はすべて、関数の実行を中断します。</p>
+
+<pre class="brush: js notranslate">return;
+return true;
+return false;
+return x;
+return x + y / 3;
+</pre>
+
+<h3 id="Automatic_Semicolon_Insertion" name="Automatic_Semicolon_Insertion">自動セミコロン挿入</h3>
+
+<p><code>return</code> 文は<a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Automatic_semicolon_insertion">自動セミコロン挿入 (ASI)</a> の影響を受けます。<code>return</code> キーワードと式の間に改行文字を置くことはできません。</p>
+
+<pre class="brush: js notranslate">return
+a + b;
+</pre>
+
+<p>は ASI によって以下のように変換されます。</p>
+
+<pre class="brush: js notranslate">return;
+a + b;
+</pre>
+
+<p>コンソールに "unreachable code after return statement" という警告が現れます。</p>
+
+<div class="note">Firefox 40 以降では、 <code>return</code> 文の後に到達できないコードがある場合に、コンソールに警告が表示されます。</div>
+
+<p>括弧を使用すると、この問題を防ぐ (ASI を抑止する) ことができます。</p>
+
+<pre class="brush: js notranslate">return (
+  a + b
+);
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Interrupt_a_function" name="Interrupt_a_function">関数を中断する</h3>
+
+<p><code>return</code> を呼び出した時点で、関数の実行が即座に終了します。</p>
+
+<pre class="brush: js notranslate">function counter() {
+ for (var count = 1; ; count++) { // 無限ループ
+ console.log(count + 'A'); // 5 まで
+ if (count === 5) {
+ return;
+ }
+ console.log(count + 'B'); // 4 まで
+ }
+ console.log(count + 'C'); // 現れない
+}
+
+counter();
+
+// 出力:
+// 1A
+// 1B
+// 2A
+// 2B
+// 3A
+// 3B
+// 4A
+// 4B
+// 5A
+</pre>
+
+<h3 id="Returning_a_function" name="Returning_a_function">関数を返す</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/Closures">クロージャ</a>の記事もご覧ください。</p>
+
+<pre class="brush: js notranslate">function magic() {
+ return function calc(x) { return x * 42; };
+}
+
+var answer = magic();
+answer(1337); // 56154
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-return-statement', 'Return statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.return")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope">関数</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Closures">クロージャ</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/switch/index.html b/files/ja/web/javascript/reference/statements/switch/index.html
new file mode 100644
index 0000000000..91960fb4ca
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/switch/index.html
@@ -0,0 +1,298 @@
+---
+title: switch
+slug: Web/JavaScript/Reference/Statements/switch
+tags:
+ - JavaScript
+ - Language feature
+ - Reference
+ - Statement
+ - Web
+ - 文
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Statements/switch
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><span class="seoSummary"><strong><code>switch</code> 文</strong>は<a href="/ja/docs/Web/JavaScript/Guide/Expressions_and_Operators">式</a>を評価し、その式の値が <code>case</code> 節と一致した場合は、その <code>case</code> に関連付けられた<a href="/ja/docs/Web/JavaScript/Reference/Statements">文</a>を実行し、一致した <code>case</code> の後にある文も同様に実行します。</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-switch.html", "taller")}}</div>
+
+<p class="hidden">このインタラクティブなサンプルのソースは GitHub リポジトリに保存されています。インタラクティブなサンプルプロジェクトに貢献したい場合は <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンして、プルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">switch (<var>expression</var>) {
+ case <var>value1</var>:
+ // 式の結果が value1 に一致する場合に実行する文
+ [break;]
+ case <var>value2</var>:
+ // 式の結果が value2 に一致する場合に実行する文
+ [break;]
+ ...
+ case <var>valueN</var>:
+ // 式の結果が valueN に一致する場合に実行する文
+ [break;]
+ [default:
+ // 式の値に一致するものが存在しない場合に実行する文
+ [break;]]
+}</pre>
+
+<dl>
+ <dt><code><var>expression</var></code></dt>
+ <dd>結果が各 <code>case</code> 節と一致するか調べる式。</dd>
+ <dt><code>case <var>valueN</var></code> {{optional_inline}}</dt>
+ <dd><code><var>expression</var></code> との照合に使用される <code>case</code> 節。 <code><var>expression</var></code> が特定の <code><var>valueN</var></code> と一致する場合、 <code>case</code> 節の中の処理は、 <code>switch</code> 文の末尾または <code>break</code> のいずれかに達するまで実行されます。</dd>
+ <dt><code>default</code> {{optional_inline}}</dt>
+ <dd><code>default</code> 節。 <code><var>expression</var></code> の値が <code>case</code> 節のいずれとも一致しない場合、この節が実行されます。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>switch</code> 文はまず始めに式を評価します。次に、式が入力式の結果と評価される値が等しい最初の <code>case</code> 節を (<a href="/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators">厳密等価演算子</a> <code>===</code> を使用して) 探し、その節に制御を移して、関連する処理を実行します。 (複数の <code>case</code> 節の値が指定された値と一致する場合、 <code>case</code> 節が互いに等しくなくても、最初に一致した <code>case</code> 節が選択されます。)</p>
+
+<p>一致する <code>case</code> 節が見つからない場合、プログラムは省略可能な <code>default</code> 節を探し、見つかればその節に制御を移し、関連する文を実行します。<code>default</code> 節が見つからない場合、プログラムは <code>switch</code> の終了に続く文で実行を続けます。慣習では、<code>default</code> 節は最後の節ですが、そうである必要はありません。</p>
+
+<p>省略可能な <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/break" title="JavaScript/Reference/Statements/break">break</a></code> 文は、各 <code>case</code> 節のラベルに関連付けられれており、一致した文を一回実行した後で <code>switch</code> を抜け出し、 <code>switch</code> に続く文から実行を継続することを保証します。もし <code>break</code> が省略されたら、プログラムは <code>switch</code> 文の中の次の文から実行を継続します。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_switch" name="Using_switch"><code>switch</code> の使用</h3>
+
+<p>次の例では、 <code>expr</code> が <code>Bananas</code> と評価された場合、プログラムは <code>case 'Bananas'</code> で値に一致し、関連付けられた文を実行します。 <code>break</code> と遭遇したとき、プログラムは <code>switch</code> から抜け出し、 <code>switch</code> に続く文を実行します。 <code>break</code> が省略された場合は、 <code>case 'Cherries'</code> に対する文も実行されます。</p>
+
+<pre class="brush: js">switch (expr) {
+ case 'Oranges':
+ console.log('Oranges are $0.59 a pound.');
+ break;
+ case 'Apples':
+ console.log('Apples are $0.32 a pound.');
+ break;
+ case 'Bananas':
+ console.log('Bananas are $0.48 a pound.');
+ break;
+ case 'Cherries':
+ console.log('Cherries are $3.00 a pound.');
+ break;
+ case 'Mangoes':
+ case 'Papayas':
+ console.log('Mangoes and papayas are $2.79 a pound.');
+ break;
+ default:
+ console.log('Sorry, we are out of ' + expr + '.');
+}
+
+console.log("Is there anything else you'd like?");
+</pre>
+
+<h3 id="What_happens_if_I_forgot_a_break" name="What_happens_if_I_forgot_a_break"><code>break</code> を置かないとどうなるか</h3>
+
+<p><code>break</code> を置かな買った場合、スクリプトは基準を満たす <code>case</code> から実行され、その後の <code>case</code> も</p>
+
+<p>条件に合うかに関係なく実行されます。</p>
+
+<p>こちらの例をご覧ください。</p>
+
+<pre class="brush: js">var foo = 0;
+switch (foo) {
+ case -1:
+ console.log('negative 1');
+ break;
+ case 0: // foo は 0 であり、基準を満たすためでこのブロックを実行する
+ console.log(0);
+ // メモ: ここに break を置くのを忘れている
+ case 1: // 'case 0:' に break 文がないため、この case も実行される
+ console.log(1);
+ break; // この break に当たるため、'case 2:' には続かない
+ case 2:
+ console.log(2);
+ break;
+ default:
+ console.log('default');
+}</pre>
+
+<h3 id="Can_I_put_a_default_between_cases" name="Can_I_put_a_default_between_cases">case の間に <code>default</code> を置くことはできるか</h3>
+
+<p>はい、できます! 一致するものが見つからない場合、 JavaScript は <code>default</code> に戻ります。</p>
+
+<pre class="brush: js">var foo = 5;
+switch (foo) {
+ case 2:
+ console.log(2);
+ break; // この break に当たれば 'default:' に継続されることはない
+ default:
+ console.log('default')
+ // 落下
+ case 1:
+ console.log('1');
+}
+</pre>
+
+<p>他のすべての <code>case</code> の前に <code>default</code> を設定した場合にも機能します。</p>
+
+<h3 id="Methods_for_multi-criteria_case" name="Methods_for_multi-criteria_case">複数基準の <code>case</code> の使用法</h3>
+
+<p>この技法の出典はこちらです:</p>
+
+<p><a href="http://stackoverflow.com/questions/13207927/switch-statement-multiple-cases-in-javascript">Switch statement multiple cases in JavaScript (Stack Overflow)</a></p>
+
+<h4 id="Multi-case_single_operation" name="Multi-case_single_operation">複数の <code>case</code> とひとつの操作の対応付け</h4>
+
+<p>この方法は、 <code>case</code> 節の配下に <code>break</code> がない場合に、次の <code>case</code> も基準を満たすかに関係なく実行されるという事実を活用します。 (<a href="What_happens_if_I_forgot_a_break"><code>break</code> を置かないとどうなるか</a>の節をご覧ください。)</p>
+
+<p>これは連続した <code>case</code> 文でひとつの操作を行う例であり、4つの異なる値でまったく同じ操作を行います。</p>
+
+<pre class="brush: js">var Animal = 'Giraffe';
+switch (Animal) {
+ case 'Cow':
+ case 'Giraffe':
+ case 'Dog':
+ case 'Pig':
+ console.log('This animal will go on Noah\'s Ark.');
+ break;
+ case 'Dinosaur':
+ default:
+ console.log('This animal will not.');
+}</pre>
+
+<h4 id="Multi-case_chained_operations" name="Multi-case_chained_operations">複数の <code>case</code> と一連の操作</h4>
+
+<p>これは一連の <code>case</code> 節と複数の操作の例であり、与えられた整数によって、異なる出力を行います。ここから実行されるのが <code>case</code> 節を置いた順であり、数値の順とは限らないことが分かります。 JavaScript では、これらの <code>case</code> 文の中に文字列の定義を混入することもできます。</p>
+
+<pre class="brush: js">var foo = 1;
+var output = 'Output: ';
+switch (foo) {
+ case 0:
+ output += 'So ';
+ case 1:
+ output += 'What ';
+ output += 'Is ';
+ case 2:
+ output += 'Your ';
+ case 3:
+ output += 'Name';
+ case 4:
+ output += '?';
+ console.log(output);
+ break;
+ case 5:
+ output += '!';
+ console.log(output);
+ break;
+ default:
+ console.log('Please pick a number from 0 to 5!');
+}</pre>
+
+<p>この例の出力は以下のとおりです:</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">値</th>
+ <th scope="col">出力するテキスト</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>foo</code> が <code>NaN</code> であるか、 <code>1</code>, <code>2</code>, <code>3</code>, <code>4</code>, <code>5</code>, <code>0</code> のいずれでもない</td>
+ <td>Please pick a number from 0 to 5!</td>
+ </tr>
+ <tr>
+ <td><code>0</code></td>
+ <td>Output: So What Is Your Name?</td>
+ </tr>
+ <tr>
+ <td><code>1</code></td>
+ <td>Output: What Is Your Name?</td>
+ </tr>
+ <tr>
+ <td><code>2</code></td>
+ <td>Output: Your Name?</td>
+ </tr>
+ <tr>
+ <td><code>3</code></td>
+ <td>Output: Name?</td>
+ </tr>
+ <tr>
+ <td><code>4</code></td>
+ <td>Output: ?</td>
+ </tr>
+ <tr>
+ <td><code>5</code></td>
+ <td>Output: !</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Block-scope_variables_within_switch_statements" name="Block-scope_variables_within_switch_statements"><code>switch</code> 文の中のブロックスコープの変数</h3>
+
+<p>ECMAScript 2015 (ES6) に対応している最近のブラウザーでは、 {{jsxref("Statements/let", "let")}} および {{jsxref("Statements/const", "const")}} 文を使用してブロックスコープを持つ変数を宣言したい場合があるでしょう。</p>
+
+<p>この例を見てみてください。</p>
+
+<pre class="brush: js">const action = 'say_hello';
+switch (action) {
+ case 'say_hello':
+ let message = 'hello';
+ console.log(message);
+ break;
+ case 'say_hi':
+ let message = 'hi';
+ console.log(message);
+ break;
+ default:
+ console.log('Empty action received.');
+ break;
+}</pre>
+
+<p>この例では、おそらく予想していなかった <code>Uncaught SyntaxError: Identifier 'message' has already been declared</code> エラーを出力します。</p>
+
+<p>これは、最初の <code>let message = 'hello';</code> と次の let 文 <code>let message = 'hi';</code> が競合しているためで、それぞれ別々な case 節である <code>case 'say_hello':</code> と <code>case 'say_hi':</code> に含まれていても発生します。つまるところ、これは両方の <code>let</code> 文が同じブロックスコープ内で同じ変数名の宣言を重複して行ったと解釈されます。</p>
+
+<p>これは、 <code>case</code> 節を中括弧で囲むことで簡単に修正することができます。</p>
+
+<pre class="brush: js">const action = 'say_hello';
+switch (action) {
+ case 'say_hello': <strong>{ // 中括弧を追加</strong>
+ let message = 'hello';
+ console.log(message);
+ break;
+ <strong>} // 中括弧を追加</strong>
+ case 'say_hi': <strong>{ // 中括弧を追加</strong>
+ let message = 'hi';
+ console.log(message);
+ break;
+ <strong>} // 中括弧を追加</strong>
+ default: <strong>{ // 中括弧を追加</strong>
+ console.log('Empty action received.');
+ break;
+ <strong>} // 中括弧を追加</strong>
+}</pre>
+
+<p>このコードは仕様通り <code>hello</code> をコンソールに出力し、エラーは全く発生しません。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-switch-statement', 'switch statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<p class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</p>
+
+<p>{{Compat("javascript.statements.switch")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/if...else", "if...else")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/throw/index.html b/files/ja/web/javascript/reference/statements/throw/index.html
new file mode 100644
index 0000000000..dfcd342586
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/throw/index.html
@@ -0,0 +1,185 @@
+---
+title: throw
+slug: Web/JavaScript/Reference/Statements/throw
+tags:
+ - JavaScript
+ - Language feature
+ - Reference
+ - Statement
+ - 文
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Statements/throw
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>throw</code> 文</strong>は、ユーザー定義の例外を発生させます。現在の関数の実行は停止し (<code>throw</code> の後の文は実行されません)、コールスタック内の最初の <a href="/ja/docs/Web/JavaScript/Reference/Statements/try...catch"><code>catch</code></a> ブロックに制御を移します。呼び出し元の関数に <code>catch</code> ブロックが存在しない場合は、プログラムが終了します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-throw.html", "taller")}}</div>
+
+<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">throw <em>expression</em>; </pre>
+
+<dl>
+ <dt><code>expression</code></dt>
+ <dd>発生させる例外の式です。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>throw</code> 文を使用して例外を発生させることができます。例外を発生させるときは、 <code>expression</code> で例外の値を指定します。以下のいずれもが例外を発生させます。</p>
+
+<pre class="brush: js">throw 'Error2'; // 文字列値である例外を生成します
+throw 42; // 値 42 である例外を生成します
+throw true; // 値 true である例外を生成します
+throw new Error('Required'); // Required というメッセージを持ったエラーオブジェクトを生成します
+</pre>
+
+<p>また、 <code>throw</code> 文は <code>throw</code> キーワードと式の間に改行が許されていないため、<a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Automatic_semicolon_insertion">自動セミコロン挿入 (ASI)</a> の影響を受けます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Throw_an_object" name="Throw_an_object">オブジェクトで例外を発生させる</h3>
+
+<p>例外を派生させるときにオブジェクトを指定することができます。そうすれば、 <code>catch</code> ブロックの中でそのオブジェクトのプロパティを参照できます。次の例は、 <code>UserException</code> 型のオブジェクトを生成し、それを <code>throw</code> 文の中で使っています。</p>
+
+<pre class="brush: js">function UserException(message) {
+ this.message = message;
+ this.name = 'UserException';
+}
+function getMonthName(mo) {
+ mo = mo-1; // 配列の添字のために月の数を調整する (1 = Jan, 12 = Dec)
+ var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',
+ 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
+ if (months[mo] !== undefined) {
+ return months[mo];
+ } else {
+ throw new UserException('InvalidMonthNo');
+ }
+}
+
+try {
+ // 試みる文
+ var myMonth = 15; // 15 は範囲外であり、例外が発生する
+ var monthName = getMonthName(myMonth);
+} catch (e) {
+ monthName = 'unknown';
+ console.error(e.message, e.name); // エラーハンドラーに例外オブジェクトを渡す
+}
+</pre>
+
+<h3 id="Another_example_of_throwing_an_object" name="Another_example_of_throwing_an_object">オブジェクトで例外を発生させる他の例</h3>
+
+<p>次の例では入力文字列でアメリカの郵便番号であるかどうかをテストします。郵便番号が無効な書式を使っていた場合は、 throw 文で <code>ZipCodeFormatException</code> 型のオブジェクトを生成して例外を発生させます。</p>
+
+<pre class="brush: js">/*
+ * ZipCode オブジェクトを生成します。
+ *
+ * 郵便番号として受け入れられる書式は次のとおりです。
+ * 12345
+ * 12345-6789
+ * 123456789
+ * 12345 6789
+ *
+ * もし ZipCode コンストラクターに渡された引数が、これらのパターンの
+ * うちのどれにも一致しないのであれば、例外が発生します。
+ */
+
+function ZipCode(zip) {
+ zip = new String(zip);
+ pattern = /[0-9]{5}([- ]?[0-9]{4})?/;
+ if (pattern.test(zip)) {
+ // 郵便番号の値は文字列中で最初に一致した部分です。
+ this.value = zip.match(pattern)[0];
+ this.valueOf = function() {
+ return this.value
+ };
+ this.toString = function() {
+ return String(this.value)
+ };
+ } else {
+ throw new ZipCodeFormatException(zip);
+ }
+}
+
+function ZipCodeFormatException(value) {
+ this.value = value;
+ this.message = 'does not conform to the expected format for a zip code';
+ this.toString = function() {
+ return this.value + this.message;
+ };
+}
+
+/*
+ * これは、US の住所のためのアドレスデータを検証するスクリプトで
+ * 使われるかもしれません。
+ */
+
+const ZIPCODE_INVALID = -1;
+const ZIPCODE_UNKNOWN_ERROR = -2;
+
+function verifyZipCode(z) {
+ try {
+ z = new ZipCode(z);
+ } catch (e) {
+ if (e instanceof ZipCodeFormatException) {
+ return ZIPCODE_INVALID;
+ } else {
+ return ZIPCODE_UNKNOWN_ERROR;
+ }
+ }
+ return z;
+}
+
+a = verifyZipCode(95060); // 95060 を返します
+b = verifyZipCode(9560); // -1 を返します
+c = verifyZipCode('a'); // -1 を返します
+d = verifyZipCode('95060'); // 95060 を返します
+e = verifyZipCode('95060 1234'); // 95060 1234 を返します
+</pre>
+
+<h3 id="Rethrow_an_exception" name="Rethrow_an_exception">例外を再発生させる</h3>
+
+<p>例外を捕捉した後、その例外を再度発生させるために <code>throw</code> を使うことができます。次の例では、数値である例外を捕捉し、もしその値が 50 を超えるのなら、それを再度発生させます。再度発生した例外は、利用者がわかるように、囲んでいる関数または最上位にいたるまで伝播します。</p>
+
+<pre class="brush: js">try {
+ throw n; // 数値である例外を発生させる
+} catch (e) {
+ if (e &lt;= 50) {
+ // 1 から 50 の例外を操作するための文
+ } else {
+ // この例外を操作できないので、再度発生させる
+ throw e;
+ }
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-throw-statement', 'throw statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<p class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</p>
+
+<p>{{Compat("javascript.statements.throw")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/try...catch", "try...catch")}}</li>
+ <li>{{jsxref("Global_Objects/Error", "Error")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/try...catch/index.html b/files/ja/web/javascript/reference/statements/try...catch/index.html
new file mode 100644
index 0000000000..0050f7357e
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/try...catch/index.html
@@ -0,0 +1,257 @@
+---
+title: try...catch
+slug: Web/JavaScript/Reference/Statements/try...catch
+tags:
+ - Exception
+ - JavaScript
+ - Language feature
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/try...catch
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>try...catch</code></strong> 文は、試す文のブロックをマークし、例外が発生したときの応答を指定します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-trycatch.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a>https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">try {
+ <em>try_statements</em>
+}
+[catch [(<em>exception_var</em>)] {
+ <em>catch_statements</em>
+}]
+[finally {
+ <em>finally_statements</em>
+}]
+</pre>
+
+<dl>
+ <dt><code><em>try_statements</em></code></dt>
+ <dd>実行される文です。</dd>
+
+ <dt><code><em>catch_statements</em></code></dt>
+ <dd><code>try</code> ブロックの中で例外が発生した場合に実行される文です。</dd>
+
+ <dt><code><em>exception_var</em></code></dt>
+ <dd>関連する <code>catch</code> 節に対して例外オブジェクトを保持する識別子です。</dd>
+
+ <dt><code><em>finally_statements</em></code></dt>
+ <dd><code>try</code> 文が完了した後に実行される文です。これらの文は、例外が発生されたり捕捉されたりしたかどうかに関係なく実行されます。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>try</code> 文は、1 つ以上の文を含む <code>try</code> ブロックにより構成されます。文が 1 つであっても、常に <code>{}</code> を使用する必要があります。1 つ以上の <code>catch</code> ブロック、または <code>finally</code> ブロックが存在する必要があります。すなわち、<code>try</code> 文には 3 つの形態があります。</p>
+
+<ul>
+ <li><code>try...catch</code></li>
+ <li><code>try...finally</code></li>
+ <li><code>try...catch...finally</code></li>
+</ul>
+
+<p><code>catch</code> ブロックは、例外が <code>try</code> ブロックの中で発生した場合に何をするかを指定する文を含みます。<code>try</code> ブロック内 (または <code>try</code> ブロック内から呼び出された関数の中) のいずれかの文で例外が発生した場合は、制御は即座に <code>catch</code> ブロックへ移ります。<code>try</code> ブロックの中で例外が発生しなかった場合は、<code>catch</code> ブロックは飛ばされます。</p>
+
+<p><code>finally</code> ブロックは、<code>try</code> ブロックおよび <code>catch</code> ブロックの実行が完了した後で実行されます。これは常に実行され、例外が発生したかどうか、捕捉されたかどうかには関係ありません。</p>
+
+<p>1 つ以上の <code>try</code> 文を入れ子にする事ができます。内側の <code>try</code> 文が <code>catch</code> ブロックを持っていない場合、それを囲んでいる <code>try</code> 文の <code>catch</code> ブロックに入ります。</p>
+
+<p><code>try</code> を使用して JavaScript の例外を処理することもできます。JavaScript の例外に関する情報は <a href="/ja/docs/Web/JavaScript/Guide">JavaScript ガイド</a>を参照してください。</p>
+
+<h3 id="Unconditional_catch-block" name="Unconditional_catch-block">無条件の catch ブロック</h3>
+
+<p><code>catch</code> ブロックが使われている場合、<code>try</code> ブロックの中から任意の例外が発生すると、<code>catch</code> ブロックが実行されます。例えば、以下のコードで例外が発生すると、制御は <code>catch</code> ブロックへ移動します。</p>
+
+<pre class="brush: js notranslate">try {
+ throw 'myException'; // 例外を生成
+}
+catch (e) {
+ // 任意の例外を操作するための文
+ logMyErrors(e); // エラーハンドラーに例外オブジェクトを渡します
+}
+</pre>
+
+<p><code>catch</code> ブロックは例外の値を保持する識別子 (上記の例では <code>e</code>) を指定します。この値は <code>catch</code> ブロックの{{Glossary("Scope", "スコープ")}}内でのみ利用できます。</p>
+
+<h3 id="Conditional_catch_clauses" name="Conditional_catch_clauses">条件付き catch ブロック</h3>
+
+<p>「条件付き <code>catch</code> ブロック」は、下記のように <code>try...catch</code> ブロックを <code>if...else if...else</code> 構造と組み合わせることで作成することができます。</p>
+
+<pre class="brush: js notranslate">try {
+ myroutine(); // 3 つの例外を投げる可能性があります
+} catch (e) {
+ if (e instanceof TypeError) {
+ // TypeError 例外を処理するための文
+ } else if (e instanceof RangeError) {
+ // RangeError 例外を処理するための文
+ } else if (e instanceof EvalError) {
+ // EvalError 例外を処理するための文
+ } else {
+ // 任意の指定されていない例外を操作するための文
+ logMyErrors(e); // エラーハンドラーに例外オブジェクトを渡す
+ }
+}
+</pre>
+
+<p>よくある使用例としては、次のように想定済みの一部のエラーのみを捕捉 (および無視) し、それ以外の場合はエラーを送出し直す場合です。</p>
+
+<pre class="brush: js notranslate">try {
+ myRoutine();
+} catch (e) {
+ if (e instanceof RangeError) {
+ // 頻発する想定済みのエラーを処理する文
+ } else {
+ throw e; // エラーを変更しないまま送出し直す
+ }
+}
+</pre>
+
+<h3 id="The_exception_identifier" name="The_exception_identifier">例外識別子</h3>
+
+<p>例外が <code>try</code> ブロックの中で投げられたときは、<em><code>exception_var</code></em> (たとえば、<code>catch (e)</code> における <code>e</code>) が例外の値を保持します。この識別子を使用して、発生した例外についての情報を取得することができます。この識別子は <code>catch</code> ブロックの{{Glossary("Scope", "スコープ")}}でのみ利用できます。</p>
+
+<pre class="brush: js notranslate">function isValidJSON(text) {
+ try {
+ JSON.parse(text);
+ return true;
+ } catch {
+ return false;
+ }
+}
+</pre>
+
+<h3 id="The_finally-block" name="The_finally-block">finally ブロック</h3>
+
+<p><code>finally</code> ブロックには、<code>try</code> ブロックおよび <code>catch</code> ブロックを実行した後で、<code>try...catch...finally</code> の次の文が実行される前に実行される文が入ります。なお、<code>finally</code> ブロックは例外が発生するかどうかにかかわらず実行されます。また、例外が発生した場合、<code>finally</code> ブロックは例外を処理する <code>catch</code> ブロックがなくても実行されます。</p>
+
+<p>次の例では <code>finally</code> ブロックの一つの使用例を示します。このコードはファイルを開き、それからファイルを使用する分を実行します。<code>finally</code> ブロックは、例外が発生したとしてもその後で確実にファイルを閉じるよう保証します。</p>
+
+<pre class="brush: js notranslate">openMyFile();
+try {
+ // リソースを結び付けます
+ writeMyFile(theData);
+}
+finally {
+ closeMyFile(); // リソースを常に閉じます
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Nested_try-blocks" name="Nested_try-blocks">入れ子になった try ブロック</h3>
+
+<p>最初に、次のもので何が起きるか見てみましょう。</p>
+
+<pre class="brush: js notranslate">try {
+ try {
+ throw new Error('oops');
+ } finally {
+ console.log('finally');
+ }
+} catch (ex) {
+ console.error('outer', ex.message);
+}
+
+// Output:
+// "finally"
+// "outer" "oops"
+</pre>
+
+<p>ここで、既に内部の <code>try</code> ブロックに <code>catch</code> ブロックを追加しているので、既に例外を捕捉しています。</p>
+
+<pre class="brush: js notranslate">try {
+ try {
+ throw new Error('oops');
+ } catch (ex) {
+ console.error('inner', ex.message);
+ } finally {
+ console.log('finally');
+ }
+} catch (ex) {
+ console.error('outer', ex.message);
+}
+
+// Output:
+// "inner" "oops"
+// "finally"
+</pre>
+
+<p>そして、エラーを送りなおします。</p>
+
+<pre class="brush: js notranslate">try {
+ try {
+ throw new Error('oops');
+ } catch (ex) {
+ console.error('inner', ex.message);
+ throw ex;
+ } finally {
+ console.log('finally');
+ }
+} catch (ex) {
+ console.error('outer', ex.message);
+}
+
+// Output:
+// "inner" "oops"
+// "finally"
+// "outer" "oops"
+</pre>
+
+<p>送り直されない限り、例外はどれでも最も内側の <code>catch</code> ブロックで一度だけ捕捉されます。もちろん、何らかの例外が「内側の」のブロックで発生した場合 (<code>catch</code> ブロックのコードで例外が発生することを行った場合)、「外側の」ブロックで捕捉されます。</p>
+
+<h3 id="Returning_from_a_finally_block" name="Returning_from_a_finally_block">finally ブロックからの return</h3>
+
+<p><code>finally</code> ブロックが値を返した場合、<code>try</code> ブロックや <code>catch</code> ブロックの <code>return</code> 文に関係なく、その値が <code>try-catch-finally</code> 全体の返値になります。これは <code>catch</code> ブロック内で送出された例外も含みます。</p>
+
+<pre class="brush: js notranslate">(function() {
+ try {
+ try {
+ throw new Error('oops');
+ } catch (ex) {
+ console.error('inner', ex.message);
+ throw ex;
+ } finally {
+ console.log('finally');
+ return;
+ }
+ } catch (ex) {
+ console.error('outer', ex.message);
+ }
+})();
+
+// Output:
+// "inner" "oops"
+// "finally"</pre>
+
+<p>外側の "oops" は <code>finally</code> ブロックに return があるため送出されません。同じことが、<code>catch</code> ブロックから返されているそのほかの値にも適用されます。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-try-statement', 'try statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.statements.try_catch")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Error")}}</li>
+ <li>{{jsxref("Statements/throw", "throw")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/var/index.html b/files/ja/web/javascript/reference/statements/var/index.html
new file mode 100644
index 0000000000..23cc8fe37c
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/var/index.html
@@ -0,0 +1,246 @@
+---
+title: var
+slug: Web/JavaScript/Reference/Statements/var
+tags:
+ - JavaScript
+ - Language feature
+ - Reference
+ - Statement
+ - 文
+ - 言語機能
+translation_of: Web/JavaScript/Reference/Statements/var
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong><code>var</code> 文</strong>は関数スコープまたはグローバルスコープの変数を宣言し、任意でそれをある値に初期化します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-var.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">var <var>varname1</var> [= <var>value1</var>] [, <var>varname2</var> [= <var>value2</var>] ... [, <var>varname<strong>N</strong></var> [= <var>value<strong>N</strong></var>]]];</pre>
+
+<dl>
+ <dt><code><var>varname<strong>N</strong></var></code></dt>
+ <dd>変数名。任意の有効な識別子。</dd>
+</dl>
+
+<dl>
+ <dt><code><var>value<strong>N</strong></var></code> {{optional_inline}}</dt>
+ <dd>その変数の初期値です。有効な式なら何でも取ることができます。既定値は <code>undefined</code> です。</dd>
+</dl>
+
+<p>あるいは、<a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">分割代入</a>を使用して変数を宣言することもできます。
+
+</p><pre class="notranslate">var <var>{ bar }</var> = <em>foo</em>; // where foo = { bar:10, baz:12 };
+/* これは、値が 10 の「bar」という名前の変数を作成します。 */</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>var</code> 宣言は、現れる場所に関係なく、コードを実行する前に処理されます。これは<dfn>巻き上げ</dfn>と呼ばれており、後述します。</p>
+
+<p><code>var</code> で宣言された変数のスコープは、その現在の<em>実行コンテキストとそのクロージャ</em>であり、その中で宣言された関数、あるいは関数の外で宣言された変数の場合はグローバルになります。<code>var</code> を使用して変数を重複して宣言しても、厳格モードであってもエラーは発生せず、別の代入が実行されない限り、変数の値は失われません。</p>
+
+<pre class="brush: js notranslate">'use strict';
+function foo() {
+ var x = 1;
+ function bar() {
+ var y = 2;
+ console.log(x); // 1 (function `bar` closes over `x`)
+ console.log(y); // 2 (`y` is in scope)
+ }
+ bar();
+ console.log(x); // 1 (`x` is in scope)
+ console.log(y); // ReferenceError in strict mode, `y` is scoped to `bar`
+}
+
+foo();
+</pre>
+
+<p><code>var</code> を使用して宣言された変数は、コードが実行されるよりも前に生成され、これは巻き上げと呼ばれています。これらの変数の初期値は <code>undefined</code> です。</p>
+
+<pre class="brush: js notranslate">'use strict';
+console.log(x); // undefined (注: ReferenceError ではない)
+console.log('still going...'); // still going...
+var x = 1;
+console.log(x); // 1
+console.log('still going...'); // still going...</pre>
+
+<p>グローバルコンテキストにおいては、<code>var</code> を使用して宣言された変数は、グローバルオブジェクトの構成不可能なプロパティとして追加されます。これは、プロパティ記述子を変更することができず、{{jsxref("delete")}} を使用して削除することができないことを意味します。対応する名前は <a href="https://www.ecma-international.org/ecma-262/10.0/index.html#sec-global-environment-records">グローバル環境レコード</a> (グローバル字句環境の一部の形) 内部の <code>[[VarNames]]</code> スロットにも追加されます。<code>[[VarNames]]</code> 内の名前のリストにより、ランタイムがグローバル変数とグローバルオブジェクトの直接のプロパティを区別することができます。</p>
+
+<p>グローバル変数用のグローバルオブジェクトに作成されたプロパティは、グローバルオブジェクトの直接のプロパティではなく、識別子を変数として扱うことになるため、構成不可に設定されています。JavaScript には自動メモリー管理機能があるため、グローバル変数に <code>delete</code> 演算子を使えるようにしても意味がありません。</p>
+
+<pre class="brush: js notranslate">'use strict';
+var x = 1;
+globalThis.hasOwnProperty('x'); // true
+delete globalThis.x; // 厳格モードでは TypeError。それ以外の場合は暗黙に失敗します。
+delete x; // 厳格モードでは SyntaxError。それ以外の場合は暗黙に失敗します。
+</pre>
+
+<p>なお、NodeJS の <a href="http://www.commonjs.org/">CommonJS</a> モジュールとネイティブの <a href="/ja/docs/Web/JavaScript/Guide/Modules">ECMAScript モジュール</a>のどちらも、最上位の変数宣言はそのモジュールのスコープとなるので、グローバルオブジェクトのプロパティとしては追加されません。</p>
+
+<h3 id="Unqualified_identifier_assignments" name="Unqualified_identifier_assignments">無修飾の識別子の代入</h3>
+
+<p>グローバルオブジェクトは、スコープチェインの最上位に位置します。名前を値に解決しようとすると、スコープチェインが検索されます。これは、グローバルオブジェクトのプロパティをすべてのスコープから、<code>globalThis.</code> や <code>window.</code> や <code>global.</code> などの修飾名なしで便利に見ることができることを意味します。</p>
+
+<p>ですから、次のように記述することができます。</p>
+
+<pre class="brush: js notranslate">function foo() {
+ String('s') // `String` 関数が暗黙に見える
+}</pre>
+
+<p>...したがって、</p>
+
+<pre class="brush: js notranslate">globalThis.hasOwnProperty('String') // true</pre>
+
+<p>つまり、グローバルオブジェクトは最終的に修飾されていない識別子を検索することになります。globalThis.String と記述する必要はなく、修飾されていない <code>String</code> と記述すればよいのです。厳格モードでない場合は、スコープチェインで宣言されている同名の変数がない場合は、グローバルオブジェクト上にその名前のプロパティを作成しようとしていると仮定して、非修飾識別子に代入することになります。</p>
+
+<pre class="brush: js notranslate">foo = 'f' // 厳格モードでない場合は、`foo` という名前のプロパティを作成しようとしていると見なす
+globalThis.hasOwnProperty('foo') // true
+</pre>
+
+<p>ECMAScript 5 において、この動作は<a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode">厳格モード</a>で変更されました。厳格モードで修飾されていない識別子への代入しようとすると、<code>ReferenceError</code> が発生し、グローバルオブジェクトに意図せずプロパティが生成されることを防ぎます。</p>
+
+<p>上記の意味合いは、一般的に誤解されていますが、JavaScript には暗黙の変数や宣言されていない変数をは存在せず、単にそのように見える構文を持っているだけだということに注意してください。</p>
+
+<h3 id="var_hoisting" name="var_hoisting">var の巻き上げ</h3>
+
+<p>変数の宣言 (および一般的な宣言) はコードを実行する前に処理されますので、変数はコード内のどこで宣言しても、コードの先頭で宣言したものと等価になります。また、変数を宣言する前に変数を使用することもできます。この動作は、変数の宣言が関数やグローバルのコードの先頭に移動したように見えるため、"<dfn>巻き上げ</dfn> (hoisting)" と呼ばれます。</p>
+
+<pre class="brush: js notranslate">bla = 2;
+var bla;
+
+// 次のように見なされます。
+
+var bla;
+bla = 2;
+</pre>
+
+<p>このため、変数は常にスコープ (グローバルのコードまたは関数のコード) の先頭で宣言することをお勧めします。そうすればどの変数が関数スコープ (ローカル) であるか、あるいはスコープチェインによって解決されたものかが明確になります。</p>
+
+<p>ここで重要なのは、巻き上げは変数の宣言には影響しますが、値の初期化には影響しないということです。値は、実際には代入文に到達したときに代入されます。</p>
+
+<pre class="brush: js notranslate">function do_something() {
+ console.log(bar); // undefined
+ var bar = 111;
+ console.log(bar); // 111
+}
+
+// ...これは、暗黙的には次のように解釈されます。
+
+function do_something() {
+ var bar;
+ console.log(bar); // undefined
+ bar = 111;
+ console.log(bar); // 111
+}
+</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Declaring_and_initializing_two_variables" name="Declaring_and_initializing_two_variables">二つの変数を宣言して初期化する</h3>
+
+<pre class="brush: js notranslate">var a = 0, b = 0;
+</pre>
+
+<h3 id="Assigning_two_variables_with_single_string_value" name="Assigning_two_variables_with_single_string_value">二つの変数に一つの文字列を代入する</h3>
+
+<pre class="brush: js notranslate">var a = 'A';
+var b = a;
+
+// 以下と等価です
+
+var a, b = a = 'A';
+</pre>
+
+<p>順番に注意してください。</p>
+
+<pre class="brush: js notranslate">var x = y, y = 'A';
+console.log(x + y); // undefinedA
+</pre>
+
+<p>ここではコードを実行する前に <code>x</code> と <code>y</code> が宣言され、そのあとに代入を行います。"<code>x = y</code>" を実行したとき、<code>y</code> が存在しますので <code>ReferenceError</code> は発生せず、値は <code>undefined</code> になります。よって、<code>x</code> に undefined 値が代入されます。そして、<code>y</code> に値 'A' が代入されます。その結果、1 行目の後は <code>x === undefined &amp;&amp; y === 'A'</code> となり、最終結果に至ります。</p>
+
+<h3 id="Initialization_of_several_variables" name="Initialization_of_several_variables">複数の変数を初期化する</h3>
+
+<pre class="brush: js notranslate">var x = 0;
+function f() {
+ var x = y = 1; // x はローカルで宣言されます。y は違います!
+}
+f();
+
+console.log(x, y); // 0 1
+
+// 厳格モードではない場合:
+// x は想定どおり、グローバル側の変数です。
+// しかし、y は関数の外部に漏れ出ています!</pre>
+
+<p>上記と同じ例を厳格モードで実行した場合:</p>
+
+<pre class="brush: js notranslate">'use strict';
+
+var x = 0;
+function f() {
+ var x = y = 1; // 厳格モードでは ReferenceError が発生します。
+}
+f();
+
+console.log(x, y);</pre>
+
+<h3 id="Implicit_globals_and_outer_function_scope" name="Implicit_globals_and_outer_function_scope">暗黙のグローバル変数と関数スコープの外部</h3>
+
+<p>暗黙的にグローバルに現れた変数は、関数スコープの外部で参照することができます:</p>
+
+<pre class="brush: js notranslate">var x = 0; // x はファイルスコープで宣言して、値 0 を代入
+
+console.log(typeof z); // z はまだ存在していないため、undefined になる
+
+function a() { // a を呼び出すと、
+ var y = 2; // y を関数 a のスコープで宣言して、値 2 を代入
+
+ console.log(x, y); // 0 2
+
+ function b() {
+ x = 3; // ファイルスコープにある x に 3 を代入
+ y = 4; // 外側の y に 4 を代入
+ z = 5; // 新たなグローバル変数 z を生成して、値 5 を代入
+ // (厳格モードでは ReferenceError が発生)
+ }
+
+ b(); // グローバル変数として z を生成
+ console.log(x, y, z); // 3 4 5
+}
+
+a(); // b も呼び出す
+console.log(x, z); // 3 5
+console.log(typeof y); // y は関数 a のローカル変数であるため "undefined" になる</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-variable-statement', 'variable statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.statements.var")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/let", "let")}}</li>
+ <li>{{jsxref("Statements/const", "const")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/while/index.html b/files/ja/web/javascript/reference/statements/while/index.html
new file mode 100644
index 0000000000..fa6e87907e
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/while/index.html
@@ -0,0 +1,84 @@
+---
+title: while
+slug: Web/JavaScript/Reference/Statements/while
+tags:
+ - JavaScript
+ - Language feature
+ - Statement
+ - while
+translation_of: Web/JavaScript/Reference/Statements/while
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong>while 文</strong>は、テスト条件が true と評価されている間、指定された文を実行するループを作成します。条件はその文を実行する前に評価されます。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-while.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">while (<var>condition</var>)
+ <var>statement</var>
+</pre>
+
+<dl>
+ <dt><code><var>condition</var></code></dt>
+ <dd>ループを通過するごとに、その前に評価される式。この条件が true と評価された場合は、 <code><var>statement</var></code> が実行されます。条件が false と評価された場合は、実行は <code>while</code> ループの後の文に続きます。</dd>
+ <dt><code><var>statement</var></code></dt>
+ <dd>条件が true と評価されている間に実行される文。ループ内で複数の文を実行する場合は、 <a href="/ja/docs/JavaScript/Reference/Statements/block">ブロック</a>文 (<code>{ ... }</code>) を使用してそれらの文をグループ化してください。<br>
+ <br>
+ メモ: <code>break</code> 文を使用すると、条件が true と評価される前にループを停止することができます。</dd>
+</dl>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_while" name="Using_while">while の使用</h3>
+
+<p>次の <code>while</code> ループは、 <code>n</code> が 3 より小さい間反復します。</p>
+
+<pre class="brush:js notranslate">var n = 0;
+var x = 0;
+
+while (n &lt; 3) {
+ n++;
+ x += n;
+}</pre>
+
+<p>それぞれの反復で、ループは <code>n</code> を増加させ、それを <code>x</code> に加えます。したがって、 <code>x</code> および <code>n</code> は次の値をとります。</p>
+
+<ul>
+ <li>最初の通過の後: <code>n</code> = 1 および <code>x</code> = 1</li>
+ <li>2 回目の通過の後: <code>n</code> = 2 および <code>x</code> = 3</li>
+ <li>3 回目の通過の後: <code>n</code> = 3 および <code>x</code> = 6</li>
+</ul>
+
+<p>3 回目の通過が完了した後、条件 <code>n</code> &lt; 3 はもはや true ではなく、ループは終了します。</p>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-while-statement', 'while statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.while")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/do...while", "do...while")}}</li>
+ <li>{{jsxref("Statements/for", "for")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/with/index.html b/files/ja/web/javascript/reference/statements/with/index.html
new file mode 100644
index 0000000000..30c8244656
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/with/index.html
@@ -0,0 +1,110 @@
+---
+title: with
+slug: Web/JavaScript/Reference/Statements/with
+tags:
+ - Deprecated
+ - JavaScript
+ - Language feature
+ - Statement
+translation_of: Web/JavaScript/Reference/Statements/with
+---
+<div class="warning">混乱させるバグや互換性問題の原因になり得るため、<code>with</code> 文の使用は推奨されません。詳しくは "説明" の章の "あいまい性の欠点" をご覧ください。</div>
+
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong>with 文</strong>は、文に対するスコープチェーンを拡張します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">with (<var>expression</var>)
+ <var>statement</var>
+</pre>
+
+<dl>
+ <dt><code><var>expression</var></code></dt>
+ <dd>文を評価するときに使われるスコープチェーンに、与えられたオブジェクトを追加します。オブジェクトの周りの括弧は必須です。</dd>
+ <dt><code><var>statement</var></code></dt>
+ <dd>任意の文。複数の文を実行するためには、それらの文をグループ化するために<a href="/ja/docs/Web/JavaScript/Reference/Statements/block">ブロック</a>文 ({ ... }) を使ってください。</dd>
+</dl>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>JavaScript は、スクリプトの実行コンテキストまたは非修飾名を含む関数の実行コンテキストに関連付けられたスコープチェーンを探索することにより、非修飾名を探します。 'with' 文は、その文本体の評価の間、このスコープチェーンの先頭に、与えられたオブジェクトを追加します。もし本体で使われた非修飾名がそのスコープチェーンの中のプロパティに一致するなら、その名前はそのプロパティとそのプロパティを含むオブジェクトとに結び付けられます。そうでなければ、 {{jsxref("ReferenceError")}} が発生します。</p>
+
+<div class="note"><code>with</code> の利用は非推奨であり、ECMAScript 5 の<a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode">厳格モード</a>では禁止されています。推奨される代替案は、参照したいプロパティを持つオブジェクトを一時変数に代入することです。</div>
+
+<h3 id="Performance_pro_contra" name="Performance_pro_contra">性能上の利点と欠点</h3>
+
+<p><strong>利点:</strong> <code>with</code> 文 は、性能の悪化なしに、長ったらしいオブジェクトの参照を繰り返す必要性を減らすことにより、ファイルサイズの削減に役立ちます。'with' 文 により必要とされるスコープチェーンの変更は、計算コストが高いものではありません。'with' 文 の使用は、インタープリターが、繰り返されるオブジェクトの参照を解析するのを楽にするでしょう。しかしながら、多くの場合では、これによる利益は、望むオブジェクトへの参照を保存するための一時的な変数を使うことにより達成されるということに注意してください。</p>
+
+<p><strong>欠点:</strong> <code>with</code> 文 は、すべての非修飾名の検索に対して、指定されたオブジェクトが最初に探索されることを強制します。それゆえに、関数の仮引数および宣言されたローカル変数名に一致するすべての識別子は、'with' 文 ブロックの中では見つかるのがより遅くなるでしょう。性能が重要な場所では、'with' 文 は、関数の引数および宣言されたローカル変数の識別子を使わないコードブロックを包み込むためだけに使われるのが適切でしょう。</p>
+
+<h3 id="Ambiguity_contra" name="Ambiguity_contra">あいまい性の欠点</h3>
+
+<p><strong>欠点:</strong> <code>with</code> 文 は、非修飾名がスコープチェーンの中で見つかるかどうか、もし見つかるならどのオブジェクトの中でかを、人間の読み手または JavaScript コンパイラーが決定するのを難しくします。つまり、以下の例を見てください。</p>
+
+<pre class="brush: js notranslate">function f(x, o) {
+ with (o) {
+ console.log(x);
+ }
+}</pre>
+
+<p><code>f</code> が呼び出されたときのみ、<code>x</code> が見つかるかどうか、もし見つかるなら、<code>o</code> の中でか、または (そのようなプロパティが存在しなければ) <code>f</code> のアクティベーションオブジェクト――そこで、<code>x</code> は最初の仮引数の名前です――の中でか、が決定されます。もし第 2 引数として渡したオブジェクトの中で <code>x</code> を定義するのを忘れた、または何らかの似たようなバグあるいは混乱があったのなら、エラーが起きることなく、ただ予期しない結果が得られるでしょう。</p>
+
+<p><strong>欠点:</strong> <code>with</code> を使用したコードは前方互換性がない可能性があります。普通のオブジェクト以外のものと使用した場合に顕著です。以下の例で考えましょう。</p>
+
+<div>
+<pre class="brush:js notranslate">function f(foo, values) {
+ with (foo) {
+ console.log(values);
+ }
+}
+</pre>
+
+<p>ECMAScript 5 環境で <code>f([1,2,3], obj)</code> を呼び出すと、<code>with</code> 文の中にある <code>values</code> の参照先は <code>obj</code> に解決されます。ところが、ECMAScript 2015 では {{jsxref("Array.prototype")}} に <code>values</code> プロパティが導入されました (よって、すべての配列で使用できます)。従って ECMAScript 2015 に対応する JavaScript 環境では、 <code>with</code> 文の内部にある <code>values</code> の参照先は <code>[1,2,3].values</code> になります。ただし、この例に限って言えば、 {{jsxref("Array.prototype")}} では <code>values</code> が {{jsxref("Symbol.unscopables")}} オブジェクトの中に定義されています。もしそうでなければ、デバッグが困難な問題であることがわかります。</p>
+</div>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_with" name="Using_with">with の使用</h3>
+
+<p>次の <code>with</code> 文は、 {{jsxref("Math")}} オブジェクトが既定のオブジェクトであると指定しています。<code>with</code> 文内の複数の文は、オブジェクトを指定することなく、 {{jsxref("Math.PI", "PI")}} プロパティ、 {{jsxref("Math.cos", "cos")}} メソッド、および {{jsxref("Math.sin", "sin")}} メソッドを参照しています。JavaScript は、これらの参照に対して <code>Math</code> オブジェクトを仮定します。</p>
+
+<pre class="brush:js notranslate">var a, x, y;
+var r = 10;
+
+with (Math) {
+ a = PI * r * r;
+ x = r * cos(PI);
+ y = r * sin(PI / 2);
+}</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-with-statement', 'with statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.statements.with")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Statements/block", "block", "", 1)}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode">厳格モード</a></li>
+ <li>{{jsxref("Symbol.unscopables")}}</li>
+ <li>{{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/statements/yield/index.html b/files/ja/web/javascript/reference/statements/yield/index.html
new file mode 100644
index 0000000000..fd381dc98d
--- /dev/null
+++ b/files/ja/web/javascript/reference/statements/yield/index.html
@@ -0,0 +1,6 @@
+---
+title: yield
+slug: Web/JavaScript/Reference/Statements/yield
+translation_of: Web/JavaScript/Reference/Operators/yield
+---
+<p>『 <a href="/ja/docs/JavaScript/New_in_JavaScript/1.7">JavaScript 1.7 の新機能</a>』、『<a href="/ja/docs/JavaScript/Guide/Iterators_and_Generators">イテレータとジェネレータ</a>』 を参照して下さい。</p>
diff --git a/files/ja/web/javascript/reference/strict_mode/index.html b/files/ja/web/javascript/reference/strict_mode/index.html
new file mode 100644
index 0000000000..353aae3501
--- /dev/null
+++ b/files/ja/web/javascript/reference/strict_mode/index.html
@@ -0,0 +1,368 @@
+---
+title: Strict モード
+slug: Web/JavaScript/Reference/Strict_mode
+tags:
+ - ECMAScript 5
+ - Guide
+ - JavaScript
+ - Strict Mode
+translation_of: Web/JavaScript/Reference/Strict_mode
+---
+<div>{{JsSidebar("More")}}</div>
+
+<div class="callout-box">デフォルトの厳格でないモードを<strong>「<a href="/ja/docs/Glossary/Sloppy_mode">Sloppy モード</a>」</strong>と呼ぶのを目にすることがあるかもしれません。これは公式な用語ではありません、念のため注意してください。</div>
+
+<p><a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMAScript 5</a> で導入された Strict モードは JavaScript に<em>オプトイン</em>することによって幾つかの機能を制限する方法であり、それによって暗黙のうちに "Sloppy モード" からオプトアウトすることができます。Strict モードは単なるサブセットではなく、通常モードとは<em>意図的に</em>異なる意味を持っています。Strict モードをサポートしないブラウザーは、Strict モードをサポートするブラウザーとは異なる動作をする可能性がありますので、Strict モードに関する側面をサポートするかの機能テストを行わずに Strict モードを頼らないでください。Strict モードのコードと非 Strict モードのコードは共存できますので、スクリプトを順次 Strict モードにオプトインすることができます。</p>
+
+<p>Strict モードでは、通常の JavaScript の意味にいくつかの変更を加えます。</p>
+
+<ol>
+ <li>エラーではないが落とし穴になる一部の事柄を、エラーが発生するように変更することで除去します。</li>
+ <li>JavaScript エンジンによる最適化処理を困難にする誤りを修正します。Strict モードのコードは、非 Strict モードのコードより高速に実行できる可能性があります。</li>
+ <li>将来の ECMAScript で定義される予定の構文の使用を禁止します。</li>
+</ol>
+
+<p>JavaScript の制限付きバリアントで機能するようにコードを変更する場合は、<a href="/ja/docs/Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode">厳格モードへの移行</a>を参照してください。</p>
+
+<h2 id="Invoking_strict_mode" name="Invoking_strict_mode">Strict モードの呼び出し</h2>
+
+<p>Strict モードは<em>スクリプト全体</em>または<em>個別の関数</em>に適用できます。括弧 <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/block">{}</a></code> で括られるブロック構文には適用できません。そのような場所に適用しようとしても何も起きません。<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> コード、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/function">Function</a></code> コード、イベントハンドラ属性、<a href="/ja/DOM/window.setTimeout" title="ja/DOM/window.setTimeout"><code>setTimeout</code></a> コードに渡す文字列、およびこれらに似たものはスクリプト全体であり、Strict モードを呼び出すと期待どおりに動作します。</p>
+
+<h3 id="Strict_mode_for_scripts" name="Strict_mode_for_scripts">スクリプトでの Strict モード</h3>
+
+<p>スクリプト全体で Strict モードを呼び出すには、他のいかなる文よりも前に <code>"use strict";</code> (または <code>'use strict';</code>) という文を<em>そのまま</em>追加します。</p>
+
+<pre class="brush: js notranslate">// スクリプト全体の Strict モード構文
+'use strict';
+var v = "こんにちは! Strict モードのスクリプト!";
+</pre>
+
+<p>この構文には、<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=579119">著名なサイト</a>を<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=627531">悩ませた</a>落とし穴があります。それは、競合しないスクリプトをむやみに連結できないことです。Strict モードのスクリプトと非 Strict モードのスクリプトを連結することを考えてみてください。連結後のスクリプト全体が strict になるのです! これは逆も言えます。非 Strict のスクリプトと Strict のスクリプトを連結すると非 Strict になります。もちろん、スクリプトの連結は決して理想的なものではありませんが、どうしても必要な場合は、機能ごとに Strict を有効にすることを検討してください。</p>
+
+<p>スクリプトの内容全体を関数でラップし、その外側の関数で Strict モードを使用するという方法もあります。これにより連結の問題が解消され、共有変数を関数スコープから明示的にエクスポートする必要があります。</p>
+
+<h3 id="Strict_mode_for_functions" name="Strict_mode_for_functions">関数での Strict モード</h3>
+
+<p>同様に、関数で Strict モードを呼び出すには、関数本体で他のいかなる文よりも前に <code>"use strict";</code> (または <code>'use strict';</code>) という文を<em>そのまま</em>追加します。</p>
+
+<pre class="brush: js notranslate">function strict() {
+ // 関数レベルの Strict モード構文
+ 'use strict';
+ function nested() { return '私もそうです!'; }
+ return "こんにちは! Strict モードの関数です! " + nested();
+}
+function notStrict() { return "Strict モードではありません"; }
+</pre>
+
+<h3 id="Strict_mode_for_modules" name="Strict_mode_for_modules">モジュールでの Strict モード</h3>
+
+<p>ECMAScript 2015 では、<a href="/ja/docs/Web/JavaScript/Reference/Statements/export">JavaScript モジュール</a>が導入されたため、Strict モードに入るための第3 の方法が導入されました。JavaScript モジュールの内容全体が自動的に Strict モードになり、それを開始するための宣言は必要ありません。</p>
+
+<pre class="brush: js notranslate">function strict() {
+ // これはモジュールなので、既定で Strict モードです
+}
+export default strict;
+</pre>
+
+<h2 id="Changes_in_strict_mode" name="Changes_in_strict_mode">Strict モードでの変更点</h2>
+
+<p>Strict モードでは構文とランタイムの動作の両方に変更を加えます。変更点は主に以下のカテゴリに分類できます: ミスからエラー (構文エラーまたは実行時エラー) への変更、与えられた名前から特定の変数を算出する方法の単純化、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> および <code><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments">arguments</a></code> の単純化、セキュアな JavaScript 作成の容易化、将来の ECMAScript の進化への事前対処。</p>
+
+<h3 id="Converting_mistakes_into_errors" name="Converting_mistakes_into_errors">ミスからエラーへの変換</h3>
+
+<p>Strict モードでは、従来は受け入れていた一部のミスをエラーに変更します。JavaScript は未熟な開発者にも易しいように設計され、またエラーとすべき操作の一部をエラーとして扱いません。これにより当面の問題を解決したことがありますが、後により大きな問題を引き起こしたこともあります。Strict モードではこれらのミスをエラーとして扱うことで、開発者は気づいて修正するようになります。</p>
+
+<p>第一に、Strict モードでは、偶発的にグローバル変数を作成できないようにします。通常の JavaScript では、代入文で変数名の綴りを間違えるとグローバルオブジェクトに新しいプロパティが作成され、そしてそれは動作し続けます (現在または将来問題になる可能性はありますが)。Strict モードでは、代入文で偶発的にグローバル変数を作成せずにエラーを投げます:</p>
+
+<pre class="brush: js notranslate">'use strict';
+ // グローバル変数 mistypeVariable が存在しないと仮定すると
+mistypeVariable = 17; // この行は変数のスペルミスによる参照エラーを投げます。
+</pre>
+
+<p>第二に、Strict モードでは、代入文で暗黙的に失敗せずに例外が発生するようにします。例えば、<code>NaN</code> は書き込み不可のグローバル変数です。通常のコードでは <code>NaN</code> に代入しても何も起きません。つまり、開発者は失敗したという通知を受けません。Strict モードでは <code>NaN</code> に代入すると例外が発生します。通常のコードで暗黙的に失敗する代入 (書き込み不可のプロパティへの代入、getter のみのプロパティへの代入、<a href="/ja/JavaScript/Reference/Global_Objects/Object/preventExtensions" title="ja/JavaScript/Reference/Global Objects/Object/preventExtensions">拡張不可</a> オブジェクトへの新規プロパティ割り当て) について、Strict モードでは例外が発生します:</p>
+
+<pre class="brush: js notranslate">'use strict';
+
+// 書き換え不可能なグローバルへの代入
+var undefined = 5; // TypeError を投げます
+var Infinity = 5; // TypeError を投げます
+
+// 書き換え不可能なプロパティへの代入
+var obj1 = {};
+Object.defineProperty(obj1, 'x', { value: 42, writable: false });
+obj1.x = 9; // TypeError を投げます
+
+// ゲッター専用プロパティへの代入
+var obj2 = { get x() { return 17; } };
+obj2.x = 5; // TypeError を投げます
+
+// 拡張不可能なオブジェクトの新しいプロパティへの代入
+var fixed = {};
+Object.preventExtensions(fixed);
+fixed.newProp = 'ohai'; // TypeError を投げます
+</pre>
+
+<p>第三に、Strict モードでは、削除できないプロパティを削除しようとするとエラーが発生します。(非 Strict モードでは何も起きません)</p>
+
+<pre class="brush: js notranslate">'use strict';
+delete Object.prototype; // TypeError を投げます
+</pre>
+
+<p>第四に、Strict モードでは、オブジェクトリテラル内のプロパティ名は一意であることを必須にします。通常のコードではプロパティ名が重複してもよく、最後に宣言したものがプロパティの値になります。しかし最後のものだけが有効になることから、例えばプロパティの値を変更するために最後のインスタンス以外を変更する形でコードを書き換える場合など、重複していることがバグになり得ます。Strict モードではプロパティ名の重複が構文エラーになります。</p>
+
+<div class="note">
+<p>ECMAScript 2015 では、このようなことはなくなりました。
+ (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1041128">bug 1041128</a>).</p>
+</div>
+
+<pre class="brush: js notranslate">'use strict';
+var o = { p: 1, p: 2 }; // !!! 構文エラー
+</pre>
+
+<p>第五に、Strict モードでは、関数の引数名が一意であることを必須にします。通常のコードでは、重複した引数がそれより前にある同名の引数を隠します。それら前の引数は <code>arguments[i]</code> を通して利用できますので、アクセスすることは可能です。しかしこのように隠すことはほとんど意味がなく、またおそらく不要なものであるため (例えば綴りの間違いをわかりにくくするかもしれません)、Strict モードでは引数名の重複を構文エラーにします。</p>
+
+<pre class="brush: js notranslate">function sum(a, a, c) { // !!! 構文エラー
+ 'use strict';
+ return a + a + c; // このコードが実行されると
+}
+</pre>
+
+<p>第六に、ECMAScript 5 の Strict モードでは、8 進数表記を禁止します。8 進数表記は ECMAScript 5 の仕様に含まれていませんが、8 進数の前にゼロを付けることで、すべてのブラウザーでサポートされます: <code>0644 === 420</code> および <code>"\045" === "%"</code> のように。ECMAScript 2015 では、8 進数は数字の前に "<code>0o</code>" を付けることでサポートされます。</p>
+
+<pre class="brush: js notranslate">var a = 0o10; // ES2015: 8 進数</pre>
+
+<p>未熟な開発者は先頭のゼロに意味がないと考え、それを桁揃えのために用いることがあります。しかし、これでは数値の意味が変わってしまいます。8 進数表記が役立つことはほとんどなく、また誤って使われかねないため、Strict モードでは構文エラーになります。</p>
+
+<pre class="brush: js notranslate">'use strict';
+var sum = 015 + // !!! 構文エラー
+ 197 +
+ 142;
+
+var sumWithOctal = 0o10 + 8;
+console.log(sumWithOctal); // 16
+</pre>
+
+<p>第七に、ECMAScript 2015 の Strict モードでは、<a href="/ja/docs/Glossary/primitive">プリミティブ</a>値にプロパティを設定することが禁止されます。非 Strict モードではプロパティの設定が単純に無視され、Strict モードでは {{jsxref("TypeError")}} が投げられます。</p>
+
+<pre class="brush: js notranslate">(function() {
+'use strict';
+
+false.true = ''; // TypeError
+(14).sailing = 'home'; // TypeError
+'with'.you = 'far away'; // TypeError
+
+})();</pre>
+
+<h3 id="Simplifying_variable_uses" name="Simplifying_variable_uses">変数の使用の単純化</h3>
+
+<p>Strict モードでは、コード中の変数名と特定の変数定義との対応づけ方法を単純化します。多くのコンパイラの最適化は、変数 <em>X</em> を<em>あの</em>場所に保管している と表現できることに頼ります: これは JavaScript のコードを最大限に最適化するために重要です。JavaScript ではこのようなコード内の名前と変数定義との基本的な対応づけを、実行時まで行うことができない場合があります。Strict モードではこのような事態が起こるケースを取り除くことで、コンパイラが Strict モードのコードをより最適化できるようにします。</p>
+
+<p>第一に、Strict モードでは、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/with">with</a></code> を禁止します。<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/with">with</a></code> の問題点はブロック内にある名前を、渡されたオブジェクトのプロパティまたはブロックの周囲 (あるいはグローバル) のスコープへ実行時に対応づけることです: これは事前に行うことができません。Strict モードでは <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/with">with</a></code> をエラーとすることで、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/with">with</a></code> 内にある名前の指す場所が実行時に不明になる可能性をなくします。</p>
+
+<pre class="brush: js notranslate">'use strict';
+var x = 17;
+with (obj) { // !!! 構文エラー
+ // Strict モードでなかったら、これは var x になるのでしょうか、
+ // それとも obj.x になるのでしょうか?
+ // コードを実行してみないと一概には言えないので、
+ // 名前を最適化することはできません。
+ x;
+}
+</pre>
+
+<p><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/with">with</a></code> の置き換えとして、オブジェクトに短い名前の変数を割り当てて、その変数を用いて対応するプロパティにアクセスするという代案があります。</p>
+
+<p>第二に、Strict モードでは、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> は新しい変数を周囲のスコープに広めません。通常 <code>eval("var x;")</code> というコードは、変数 <code>x</code> を周囲の関数やグローバルスコープに広めます。これは通常 <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> の呼び出しを含む関数は、引数やローカル変数を指していないすべての名前を実行時に特定の定義へ対応づけることを意味します (<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> が外部の変数を隠蔽する新たな変数を生成する可能性があるためです)。Strict モードでは <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> で評価されているコードでのみ使用できる変数を作成するので、変数名が外部の変数や一部のローカル変数を指しているかにかかわらず <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> は影響を与えません:</p>
+
+<pre class="brush: js notranslate">var x = 17;
+var evalX = eval("'use strict'; var x = 42; x;");
+console.assert(x === 17);
+console.assert(evalX === 42);
+</pre>
+
+<p>関連して、Strict モードのコード内で <code>eval(...)</code> という形式で <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> 関数を呼び出した場合は、コードは Strict モードとして評価されます。コードを明示的に Strict モードで呼び出してもよいですが、必須ではありません。</p>
+
+<pre class="brush: js notranslate">function strict1(str) {
+ 'use strict';
+ return eval(str); // str は Strict モードのコードとして扱われます。
+}
+function strict2(f, str) {
+ 'use strict';
+ return f(str); // not eval(...): str は Strict モードを
+ // 呼び出した場合のみ Strict です。
+}
+function nonstrict(str) {
+ return eval(str); // str は Strict モードを
+ // 呼び出した場合のみ Strict です。
+}
+
+strict1("'Strict モード!'");
+strict1("'use strict'; 'Strict モード!'");
+strict2(eval, "'Strict モードではない'");
+strict2(eval, "'use strict'; 'Strict モード!'");
+nonstrict("'Strict モードではない'");
+nonstrict("'use strict'; 'Strict モード!'");
+</pre>
+
+<p>従って、Strict モードの <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> 内にある名前は、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> の結果として評価されない Strict モードのコードと同様に動作します。</p>
+
+<p>第三に、Strict モードでは、単純名の削除を禁止します。Strict モードでは <code>delete name</code> を構文エラーにします:</p>
+
+<pre class="brush: js notranslate">'use strict';
+
+var x;
+delete x; // !!! 構文エラー
+
+eval('var y; delete y;'); // !!! 構文エラー</pre>
+
+<h3 id="Making_eval_and_arguments_simpler" name="Making_eval_and_arguments_simpler"><code>eval</code> および <code>arguments</code> の単純化</h3>
+
+<p>Strict モードでは <code><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments">arguments</a></code> および <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> の奇妙さを低減します。通常のコードではどちらも不思議な動作がかなりあります: バインドの追加や削除およびバインドする値を変更するための <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> や、<code><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments">arguments</a></code> の添字つきプロパティが名前付き引数の別名になることです。Strict モードでは <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> および <code><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments">arguments</a></code> をキーワードとした手当てにより、完全な修正は将来の ECMAScript まで実現しないものの大きな進歩を遂げます。</p>
+
+<p>第一に、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval</a></code> および <code><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments">arguments</a></code> という名前に対して言語構文でのバインドや代入を不可にします。以下のような試みはすべて構文エラーになります:</p>
+
+<pre class="brush: js notranslate">'use strict';
+eval = 17;
+arguments++;
+++eval;
+var obj = { set p(arguments) { } };
+var eval;
+try { } catch (arguments) { }
+function x(eval) { }
+function arguments() { }
+var y = function eval() { };
+var f = new Function('arguments', "'use strict'; return 17;");
+</pre>
+
+<p>第二に、Strict モードのコードでは、内部で作成された <code><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments">arguments</a></code> オブジェクトのプロパティがエイリアスになりません。通常のコードでは第一引数 <code>arg</code> を持つ関数において <code>arg</code> に値を設定すると <code>arguments[0]</code> にも設定され、また逆も同様です (引数が提供されない場合や <code>arguments[0]</code> が削除された場合を除きます)。Strict モードの関数での <code><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments">arguments</a></code> オブジェクトは、関数が呼び出された当初の引数を保持します。<code>arguments[i]</code> は対応する名前付き引数の値を追跡せず、また名前付き引数も対応する <code>arguments[i]</code> の値を追跡しません。</p>
+
+<pre class="brush: js notranslate">function f(a) {
+ 'use strict';
+ a = 42;
+ return [a, arguments[0]];
+}
+var pair = f(17);
+console.assert(pair[0] === 42);
+console.assert(pair[1] === 17);
+</pre>
+
+<p>第三に、<code>arguments.callee</code> をサポートしません。通常のコードでは、<code>arguments.callee</code> は取り囲んでいる関数を参照します。この使用法は脆弱です: 取り囲んでいる関数に名前をつけましょう! さらに、<code>arguments.callee</code> がアクセスされている場合は非インライン関数への参照を提供しなければならないため、<code>arguments.callee</code> はインライン関数のような最適化を実質的に妨害します。Strict モードの関数での <code>arguments.callee</code> は、書き込みや読み出し時にエラーが発生する、削除不可のプロパティです:</p>
+
+<pre class="brush: js notranslate">'use strict';
+var f = function() { return arguments.callee; };
+f(); // TypeError が投げられます
+</pre>
+
+<h3 id="Securing_JavaScript" name="Securing_JavaScript">JavaScript の "セキュア化"</h3>
+
+<p>Strict モードにより"セキュアな" JavaScript の記述がより簡単になります。現在、一部の Web サイトではユーザー向に対し、Web サイトの<em>他のユーザーが</em>実行することができる JavaScript を記述する方法を提供しています。ブラウザー上の JavaScript はユーザーの個人的な情報にアクセスできることから、そのような JavaScript は禁じられた機能へのアクセスを削除するよう、実行前に部分的に変換する必要があります。JavaScript の柔軟性は、ランタイムによる多くのチェックなしにこれを行うことを事実上不可能にします。ある言語機能は、ランタイムのチェック実行にかなりパフォーマンスのコストがかかるとして広まっています。Strict モードのいくつかの調整、そしてユーザーが投稿した JavaScript が Strict モードのコードであることや信頼できる方法で呼び出されることの要求により、ランタイムのチェックの必要性をかなり減らします。</p>
+
+<p>第一に、Strict モードでは、<code><a href="/ja/docs/Web/JavaScript/Reference/Operators/this">this</a></code> として関数に渡された値をオブジェクトへボクシングしません。非ストリクトモードでの関数にとって <code><a href="/ja/docs/Web/JavaScript/Reference/Operators/this">this</a></code> は常にオブジェクトになります。this の値は、実行時に this オブジェクト値として提供されたオブジェクトであったり、真偽値・文字列・数値などのプリミティブな値が <code><a href="/ja/docs/Web/JavaScript/Reference/Operators/this">this</a></code> として呼び出した時はオブジェクトへボクシングした値、<code>{{Glossary("Undefined", "undefined")}}</code> または <code>{{Glossary("Null", "null")}}</code> の <code><a href="/ja/docs/Web/JavaScript/Reference/Operators/this">this</a></code> で呼び出された時はグローバルオブジェクトとなります。(特定の <code><a href="/ja/docs/Web/JavaScript/Reference/Operators/this">this</a></code> を指定するために <a href="/ja/JavaScript/Reference/Global_Objects/Function/call" title="ja/JavaScript/Reference/Global_Objects/Function/call"><code>call</code></a>、<a href="/ja/JavaScript/Reference/Global_Objects/Function/apply" title="ja/JavaScript/Reference/Global_Objects/Function/apply"><code>apply</code></a>、<a href="/ja/JavaScript/Reference/Global_Objects/Function/bind" title="ja/JavaScript/Reference/Global_Objects/Function/bind"><code>bind</code></a> を使用してください)。自動的なボクシングはパフォーマンス上のコストがあり、しかしブラウザーでグローバルオブジェクトを公開することは、"セキュアな" JavaScript 環境へのアクセスを提供するグローバルオブジェクトを制限する必要があるためにセキュリティ上の危険性があります。従って Strict モードの関数では、指定された <code><a href="/ja/docs/Web/JavaScript/Reference/Operators/this">this</a></code> を変更せずに使用します:</p>
+
+<pre class="brush: js notranslate">'use strict';
+function fun() { return this; }
+console.assert(fun() === undefined);
+console.assert(fun.call(2) === 2);
+console.assert(fun.apply(null) === null);
+console.assert(fun.call(undefined) === undefined);
+console.assert(fun.bind(true)() === true);
+</pre>
+
+<p>つまり、とりわけブラウザーでは、Strict モード関数の中で、<code>this</code> を介して <code>window</code> オブジェクトを参照することができなくなったことを意味します。</p>
+
+<p>第二に、Strict モードでは、ECMAScript の一般的な実装である拡張を通して JavaScript のスタックを "渡り歩く" ことができません。拡張を用いた通常のコードでは中間にある <code>fun</code> 関数を呼び出すと、<code>fun.caller</code> は <code>fun</code> を呼び出した直近の関数を指し、また <code>fun.arguments</code> はその <code>fun</code> の呼び出しにおける <code><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments">arguments</a></code> を指します。これらの拡張は "セキュア化された" コードにで "特権的に" 関数や (潜在的にセキュアでない) 引数へのアクセスを許すことから、"セキュアな" JavaScript に対して問題があります。<code>fun</code> が Strict モードである場合は、<code>fun.caller</code> および <code>fun.arguments</code> は書き込みや読み出し時にエラーが発生する、削除不可のプロパティです:</p>
+
+<pre class="brush: js notranslate">function restricted() {
+ 'use strict';
+ restricted.caller; // TypeError が投げられます
+ restricted.arguments; // TypeError が投げられます
+}
+function privilegedInvoker() {
+ return restricted();
+}
+privilegedInvoker();
+</pre>
+
+<p>第三に、Strict モードの関数での <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/arguments">arguments</a></code> は対応する関数の呼び出し時の変数にアクセスできません。一部の過去の ECMAScript では <code>arguments.caller</code> を、プロパティが関数内の変数のエイリアスになるオブジェクトとして実装しました。これには関数の抽象化を通した特権的な値の隠蔽機能を破ることから、<a class="external" href="http://stuff.mit.edu/iap/2008/facebook/">セキュリティ上の危険性</a>があります。以上の理由から、今日のブラウザーはこれらを実装していません。それでも歴史的な機能性から、Strict モードの関数での <code>arguments.caller</code> は書き込みや読み出し時にエラーが発生する、削除不可のプロパティです:</p>
+
+<pre class="brush: js notranslate">'use strict';
+function fun(a, b) {
+ 'use strict';
+ var v = 12;
+ return arguments.caller; // TypeError が投げられます
+}
+fun(1, 2); // v を公開しません(または a または b)
+</pre>
+
+<h3 id="Paving_the_way_for_future_ECMAScript_versions" name="Paving_the_way_for_future_ECMAScript_versions">将来の ECMAScript への準備</h3>
+
+<p>将来の ECMAScript では新たな構文を導入する予定であるため、ECMAScript 5 の Strict モードでは移行を容易にする制限事項を適用します。将来の変更点の基礎が Strict モードで禁止されていると、変更が容易になります。</p>
+
+<p>第一に、Strict モードでは、いくつかの識別子を予約語にします。その対象は <code>implements</code>, <code>interface</code>, <code>let</code>, <code>package</code>, <code>private</code>, <code>protected</code>, <code>public</code>, <code>static</code>, <code>yield</code> です。Strict モードでは、これらを変数や引数の名前として使用できません。</p>
+
+<pre class="brush: js notranslate">function package(protected) { // !!!
+ 'use strict';
+ var implements; // !!!
+
+ interface: // !!!
+ while (true) {
+ break interface; // !!!
+ }
+
+ function private() { } // !!!
+}
+function fun(static) { 'use strict'; } // !!!
+
+</pre>
+
+<p>Mozilla 特有の注意事項が 2 つあります: 第一に、コードが JavaScript 1.7 以降 (chrome コード、または適切な <code>&lt;script type=""&gt;</code> を使用) かつ Strict モードである場合、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code> および <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/yield">yield</a></code> にはそれらのキーワードが最初に導入されてから持っていた機能があります。しかし <code>&lt;script src=""&gt;</code> や <code>&lt;script&gt;...&lt;/script&gt;</code> で読み込む Web の Strict モードのコードでは、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code>/<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/yield">yield</a></code> を識別子として使用できません。第二に、ES5 では <code>class</code>、<code>enum</code>、<code>export</code>、<code>extends</code>、<code>import</code>、<code>super</code> を無条件に予約していますが、Firefox 5 以前で Mozilla はこれらを Strict モードでのみ予約します。</p>
+
+<p>第二に、Strict モードでは、<a class="external" href="http://whereswalden.com/2011/01/24/new-es5-strict-mode-requirement-function-statements-not-at-top-level-of-a-program-or-function-are-prohibited/">スクリプトのトップレベルまたは関数内にない function 文を禁止します</a>。通常のコードでは、function 文はどこにでも置くことが許されます。<em>これは ES5 の仕様に (ES3 でさえも) 含まれていません!</em> ブラウザーにより意味が異なり互換性がない拡張です。将来の ECMAScript では、おそらくスクリプトのトップレベルや関数内以外での funciton 文に新たな意味を定義します。<a class="external" href="http://wiki.ecmascript.org/doku.php?id=conventions:no_non_standard_strict_decls">Strict モードではこのような function 文を禁止する</a> ことで将来の ECMAScript の仕様向けの "宣言を取り除きます":</p>
+
+<pre class="brush: js notranslate">'use strict';
+if (true) {
+ function f() { } // !!! 構文エラー
+ f();
+}
+
+for (var i = 0; i &lt; 5; i++) {
+ function f2() { } // !!! 構文エラー
+ f2();
+}
+
+function baz() { // kosher
+ function eit() { } // also kosher
+}
+</pre>
+
+<p>このような function 文は基本的な ES5 の拡張であるため、禁止することは Strict モードとして適切ではありません。しかしこの動作は ECMAScript 委員会の推奨であり、それゆえブラウザーは実装するでしょう。</p>
+
+<h2 id="Strict_mode_in_browsers" name="Strict_mode_in_browsers">ブラウザーでの Strict モード</h2>
+
+<p>ブラウザーはまだ Strict モードを確実に実装していないため、無条件に依存しないでください。<em>Strict モードは意味を変えます</em>。それら変更点を当てにすると、Strict モードを実装していないブラウザーでミスやエラーが発生する可能性があります。Strict モードの使用時は注意を払い、また Strict モードに関する機能を実装しているかの機能テストにより Strict モードへの信頼を補ってください。最後に、<em>Strict モードをサポートするブラウザーとしないブラウザーでのコードのテスト</em> を行うようにしてください。Strict モードをサポートしないブラウザーでしかテスト行わない場合、Strict モードをサポートするブラウザーで問題が起きる可能性が高くなります。これは逆の場合も同じです。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-strict-mode-code', 'Strict Mode Code')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a class="external" href="http://whereswalden.com/2010/09/08/new-es5-strict-mode-support-now-with-poison-pills/" title="http://whereswalden.com/2010/09/08/new-es5-strict-mode-support-now-with-poison-pills/">Where's Walden? » New ES5 strict mode support: now with poison pills!</a></li>
+ <li><a class="external" href="http://whereswalden.com/2011/01/24/new-es5-strict-mode-requirement-function-statements-not-at-top-level-of-a-program-or-function-are-prohibited/" title="http://whereswalden.com/2011/01/24/new-es5-strict-mode-requirement-function-statements-not-at-top-level-of-a-program-or-function-are-prohibited/">Where's Walden? » New ES5 strict mode requirement: function statements not at top level of a program or function are prohibited</a></li>
+ <li><a class="external" href="http://whereswalden.com/2011/01/10/new-es5-strict-mode-support-new-vars-created-by-strict-mode-eval-code-are-local-to-that-code-only/" title="http://whereswalden.com/2011/01/10/new-es5-strict-mode-support-new-vars-created-by-strict-mode-eval-code-are-local-to-that-code-only/">Where's Walden? » New ES5 strict mode support: new vars created by strict mode eval code are local to that code only</a></li>
+ <li><a href="http://qnimate.com/javascript-strict-mode-in-nutshell/">JavaScript "use strict" tutorial for beginners.</a></li>
+ <li><a class="external" href="http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/" title="http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/">John Resig - ECMAScript 5 Strict Mode, JSON, and More</a></li>
+ <li><a class="external" href="http://dmitrysoshnikov.com/ecmascript/es5-chapter-2-strict-mode/">ECMA-262-5 in detail. Chapter 2. Strict Mode.</a></li>
+ <li><a class="external" href="http://kangax.github.io/compat-table/es5/#Strict_mode">Strict mode compatibility table</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode">Transitioning to strict mode</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/strict_mode/transitioning_to_strict_mode/index.html b/files/ja/web/javascript/reference/strict_mode/transitioning_to_strict_mode/index.html
new file mode 100644
index 0000000000..7db6c16fc1
--- /dev/null
+++ b/files/ja/web/javascript/reference/strict_mode/transitioning_to_strict_mode/index.html
@@ -0,0 +1,142 @@
+---
+title: 厳格モードへの移行
+slug: Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode
+tags:
+ - Advanced
+ - Guide
+ - JavaScript
+ - ガイド
+ - 上級者
+translation_of: Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode
+---
+<div>{{jsSidebar("More")}}</div>
+
+<p>ECMAScript 第5版では<ruby><a href="/ja/docs/JavaScript/Strict_mode">厳格モード</a><rp> (</rp><rt>strict mode</rt><rp>) </rp></ruby>を導入し、主要なブラウザーすべて (IE10 を含む) に実装されました。ウェブブラウザーにコードを厳密モードとして解釈させるのは簡単ですが (ソースコードの先頭に <code>'use strict';</code> を追加するだけです)、既存のコードベースを厳格モードに移行するには、もう少し作業が必要です。</p>
+
+<p>この記事の目的は、開発者へのガイダンスを提供することです。</p>
+
+<h2 id="Gradual_transition" name="Gradual_transition">段階的移行</h2>
+
+<p>厳格モードは、段階的に移行できるように設計されています。ファイルごとに個別に変更することもできますし、関数の粒度で厳格モードにコードを移行することも可能です。</p>
+
+<h2 id="Differences_from_non-strict_to_strict" name="Differences_from_non-strict_to_strict">非厳格モードと厳格モードの違い</h2>
+
+<h3 id="Syntax_errors" name="Syntax_errors">構文エラー</h3>
+
+<p><code>'use strict';</code>を追加すると、スクリプトが実行される前に、以下のケースでは{{jsxref("SyntaxError")}} をスローします。</p>
+
+<ul>
+ <li>8進数構文 <code>var n = 023;</code></li>
+ <li>{{jsxref("Statements/with", "with")}} 文</li>
+ <li>{{jsxref("Operators/delete", "delete")}} を変数名に対して使用すること <code>delete myVariable</code>;</li>
+ <li>{{jsxref("eval")}} や {{jsxref("arguments")}} を変数または関数の引数名として使用すること</li>
+ <li>(ECMAScript 2015 を見越した) 新しい<a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords">予約語</a>、 <code>implements</code>, <code>interface</code>, <code>let</code>, <code>package</code>, <code>private</code>, <code>protected</code>, <code>public</code>, <code>static</code>, <code>yield</code> のうちの一つの使用</li>
+ <li>ブロック内での関数宣言 <code>if (a &lt; b) { function f() {} }</code></li>
+ <li>明らかなエラー
+ <ul>
+ <li>オブジェクトリテラル内でプロパティ名に同じ名前を 2 回宣言すること <code>{a: 1, b: 3, a: 7}</code> これは ECMAScript 2015 では問題なくなりました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1041128">bug 1041128</a>)。</li>
+ <li>関数の2つの引数を同じ名前で宣言すること <code>function f(a, b, b) {}</code></li>
+ </ul>
+ </li>
+</ul>
+
+<p>単純なエラーや悪習を明らかにするので、こういったエラーは良いものです。これらのエラーは、コードが実行される前に発生します。</p>
+
+<h3 id="New_runtime_errors" name="New_runtime_errors">新しい実行時エラー</h3>
+
+<p>JavaScript は以前、何をしたかがエラーになるような状況では、暗黙に失敗していました。厳格モードでは、そのような場合に例外を発生させます。コードベースにそのようなケースが含まれている場合、何も壊れていないことを確認するためにテストが必要になります。繰り返しになりますが、これは関数の粒度レベルで起こる可能性があります。</p>
+
+<h4 id="Setting_a_value_to_an_undeclared_variable" name="Setting_a_value_to_an_undeclared_variable">宣言していない変数への値設定</h4>
+
+<pre class="brush: js">function f(x) {
+ 'use strict';
+ var a = 12;
+ b = a + x * 35; // エラー!
+}
+f(42);
+</pre>
+
+<p>これはグローバルオブジェクトの値を変更するために使われてきましたが、それが期待される効果であることはまれでした。本当にグローバルオブジェクトに値を設定したい場合は、引数として渡し、明示的にプロパティとして代入してください。</p>
+
+<pre class="brush: js">var global = this; // 最上位のコンテキストでは、 "this" は常に
+ // グローバルオブジェクトを参照します
+function f(x) {
+ 'use strict';
+ var a = 12;
+ global.b = a + x * 35;
+}
+f(42);
+</pre>
+
+<h4 id="Trying_to_delete_a_non-configurable_property" name="Trying_to_delete_a_non-configurable_property">設定不可能なプロパティを削除しようとすること</h4>
+
+<pre class="brush: js">'use strict';
+delete Object.prototype; // エラー!
+</pre>
+
+<p>厳格モードでない場合は、ユーザーの予想に反して、暗黙に失敗します。</p>
+
+<h4 id="Poisoned_arguments_and_function_properties" name="Poisoned_arguments_and_function_properties">ポイズン引数と関数プロパティ</h4>
+
+<p>厳格モードでは <code>arguments.callee</code>, <code>arguments.caller</code>, <code>anyFunction.caller</code>, <code>anyFunction.arguments</code> にアクセスするとエラーが発生します。唯一の合法的な利用法は、以下のように関数を再利用することでしょう。</p>
+
+<pre class="brush: js">// example taken from vanillajs: http://vanilla-js.com/
+var s = document.getElementById('thing').style;
+s.opacity = 1;
+(function() {
+ if ((s.opacity-=.1) &lt; 0)
+ s.display = 'none';
+ else
+ setTimeout(arguments.callee, 40);
+})();</pre>
+
+<p>上記は以下のように書き換えられます。</p>
+
+<pre class="brush: js">'use strict';
+var s = document.getElementById('thing').style;
+s.opacity = 1;
+(function fadeOut() { // 関数名
+ if((s.opacity-=.1) &lt; 0)
+ s.display = 'none';
+ else
+ setTimeout(fadeOut, 40); // 関数名を使用する
+})();</pre>
+
+<h3 id="Semantic_differences" name="Semantic_differences">意味的な違い</h3>
+
+<p>以下の違いは非常に微妙な違いです。テストスイートはこの種の微妙な差を捉えない可能性があります。これらの違いがコードの意味に影響を与えないことを確認するためには、コードベースの慎重なレビューが必要になるでしょう。幸いなことに、この慎重なレビューによって機能の粒度を徐々に下げていくことができます。</p>
+
+<h4 id="this_in_function_calls" name="this_in_function_calls">関数呼び出しにおける <code>this</code></h4>
+
+<p><code>f()</code> のような関数呼び出しでは、 <code>this</code> の値はグローバルオブジェクトでした。厳格モードでは <code>undefined</code> になりました。関数が {{jsxref("Function/call", "call")}} または {{jsxref("Function/apply", "apply")}} で呼び出されたとき、この値がプリミティブ値であった場合は、オブジェクト (または <code>undefined</code> や <code>null</code> に対してはグローバルオブジェクト) にボックス化されていました。厳格モードでは、値は変換または置換せずに直接渡されます。</p>
+
+<h4 id="arguments_doesnt_alias_named_function_arguments" name="arguments_doesnt_alias_named_function_arguments"><code>arguments</code> は関数の名前付き引数の別名ではない</h4>
+
+<p>厳格モードでない場合、 <code>arguments</code> オブジェクト内の値を変更すると、対応する名前付きの引数も変更されます。これは JavaScript エンジンの最適化を複雑にし、コードを呼んだり理解したりするのを難しくしていました。厳格モードでは、 <code>arguments</code> オブジェクトは名前付き引数と同じ値で作成・初期化されますが、 <code>arguments</code> オブジェクトや名前付き引数の変更は互いに反映されません。</p>
+
+<h4 id="Change_to_eval" name="Change_to_eval"><code>eval</code> への変更</h4>
+
+<p>厳格モードのコードでは、 <code>eval</code> は呼び出されたスコープ内に新しい変数を作成しません。また厳格モードでは、もちろん文字列は厳格モードの規則で評価されます。何も破綻していないことを確認するためには、徹底的なテストが必要になります。本当に必要ではない場合は eval を使わないというのも現実的な解決策かもしれません。</p>
+
+<h2 id="Strictness-neutral_code" name="Strictness-neutral_code">厳格性に中立なコード</h2>
+
+<p>厳格なコードを厳格モードに移行する上での潜在的な「欠点」は、厳密モードを実装していない古いブラウザーでは意味が異なる可能性があることです。まれに起こることですが (連結やミニ化の失敗などで)、コードも書いてテストしたモードで実行されないこともあります。ここでは、コードの厳格性への依存をなくす規則を示します。</p>
+
+<ol>
+ <li>コードを厳格モードで書き、厳格モードでしか発生しないエラー (上記の「新しい実行時エラー」の節にあるもの) が発生しないことを確認してください。</li>
+ <li>意味の違いから離れてみてください。
+ <ol>
+ <li><code>eval</code>: 何をやっているか分かる場合にのみ、使用してください。</li>
+ <li><code>arguments</code>: 関数の引数へは、常に名前を経由してアクセスするか、 arguments のオブジェクトのコピーを行うために、<br>
+ <code>var args = Array.prototype.slice.call(arguments)</code><br>
+ を関数の最初の行に追加してください。</li>
+ <li><code>this</code>: 自ら生成したオブジェクトへ参照するときのみ <code>this</code> を使用してください。</li>
+ </ol>
+ </li>
+</ol>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">厳格モード</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/template_literals/index.html b/files/ja/web/javascript/reference/template_literals/index.html
new file mode 100644
index 0000000000..acc64a11fa
--- /dev/null
+++ b/files/ja/web/javascript/reference/template_literals/index.html
@@ -0,0 +1,273 @@
+---
+title: テンプレートリテラル (テンプレート文字列)
+slug: Web/JavaScript/Reference/Template_literals
+tags:
+ - ECMAScript 2015
+ - Guide
+ - JavaScript
+ - React
+ - String
+ - Template Strings
+ - Template literals
+ - Template string
+ - strings
+ - ガイド
+ - テンプレートリテラル
+ - テンプレート文字列
+ - 文字列
+translation_of: Web/JavaScript/Reference/Template_literals
+---
+<div>{{JsSidebar("More")}}</div>
+
+<p><span class="seoSummary">テンプレートリテラルは、組み込み式を扱うことができる文字列リテラルです。複数行の文字列や文字列挿入機能を使用することができます。</span></p>
+
+<p>ES2015 仕様書よりも前の版では、"template strings" と呼ばれていました。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">`string text`
+
+`string text line 1
+ string text line 2`
+
+`string text ${<var>expression</var>} string text`
+
+<var>tag</var>`string text ${<var>expression</var>} string text`
+</pre>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p>テンプレートリテラルは、ダブルクオートやシングルクオートの代わりにバックティック文字 (` `) (<a href="https://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%AC%E3%82%A4%E3%83%B4%E3%83%BB%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%B3%E3%83%88">グレイヴ・アクセント</a>) で囲みます。</p>
+
+<p>テンプレートリテラルにはプレースホルダーを含めることができます。プレースホルダーはドル記号と波括弧 (<code>${<var>expression</var>}</code>) で示されます。プレースホルダー内の式とバックティック文字 (` `) の間にあるテキストが関数に渡されます。</p>
+
+<p>既定の関数はこれらの部品を 1 つの文字列として繋げるだけです。テンプレートリテラルの前に式 (ここでは <code><var>tag</var></code>) がある場合、テンプレートリテラルは <dfn><em>タグ付きテンプレート</em></dfn> と呼ばれます。この場合、タグ式 (通常は関数) は、テンプレートリテラルと一緒に呼び出され、出力の前に実行できます。</p>
+
+<p>テンプレートリテラル内でバックティック文字をエスケープするには、バックティック文字の前にバックスラッシュ (<code>\</code>) を置きます。</p>
+
+<pre class="brush: js notranslate">`\`` === '`' // --&gt; true</pre>
+
+<h3 id="Multi-line_strings" name="Multi-line_strings">複数行の文字列</h3>
+
+<p>ソースの中に挿入された改行文字は、すべてテンプレートリテラルの一部になります。</p>
+
+<p>通常の文字列を使う場合は、複数行の文字列を取得するために次のような構文を使用する必要があります。</p>
+
+<pre class="brush: js notranslate">console.log('string text line 1\n' +
+'string text line 2');
+// "string text line 1
+// string text line 2"</pre>
+
+<p>テンプレートリテラルを使用すれば、同じものを次のように書くことができます。</p>
+
+<pre class="brush: js notranslate">console.log(`string text line 1
+string text line 2`);
+// "string text line 1
+// string text line 2"</pre>
+
+<h3 id="Expression_interpolation" name="Expression_interpolation">式の挿入</h3>
+
+<p>通常の文字列に式を埋め込むには、以下のような構文を使用していると思います。</p>
+
+<pre class="brush: js notranslate">let a = 5;
+let b = 10;
+console.log('Fifteen is ' + (a + b) + ' and\nnot ' + (2 * a + b) + '.');
+// "Fifteen is 15 and
+// not 20."</pre>
+
+<p>テンプレートリテラルを使用すると、糖衣構文を使用して、このようにもっと読みやすく表記することができます。</p>
+
+<pre class="brush: js notranslate">let a = 5;
+let b = 10;
+console.log(`Fifteen is ${a + b} and
+not ${2 * a + b}.`);
+// "Fifteen is 15 and
+// not 20."</pre>
+
+<h3 id="Nesting_templates" name="Nesting_templates">入れ子のテンプレート</h3>
+
+<p>場合によっては、テンプレートを入れ子にすると、構成可能な文字列を得るのにもっとも簡単に (かつ、おそらくより読みやすく) なることがあります。バックティックをつけたテンプレートでは、テンプレート内にあるプレイスホルダー <code>${ }</code> の内部で内部のバックティックを使用することができます。</p>
+
+<p>例えば、条件式が <code>true</code> の場合、このテンプレートリテラルを <code>return</code> します。</p>
+
+<p>ES5 の場合:</p>
+
+<pre class="brush: js notranslate">let classes = 'header';
+classes += (isLargeScreen() ?
+ '' : item.isCollapsed ?
+ ' icon-expander' : ' icon-collapser');
+</pre>
+
+<p>ES2015 で入れ子なしのテンプレートリテラルの場合:</p>
+
+<pre class="brush: js notranslate">const classes = `header ${ isLargeScreen() ? '' :
+ (item.isCollapsed ? 'icon-expander' : 'icon-collapser') }`;</pre>
+
+<p>ES2015 で入れ子にしたテンプレートリテラルの場合:</p>
+
+<pre class="brush: js notranslate">const classes = `header ${ isLargeScreen() ? '' :
+ `icon-${item.isCollapsed ? 'expander' : 'collapser'}` }`;</pre>
+
+<h3 id="Tagged_templates" name="Tagged_templates">タグ付きテンプレート</h3>
+
+<p><em>タグ付き</em>テンプレートは、テンプレートリテラルのより高度な形式です。</p>
+
+<p>タグを使用すると、テンプレートリテラルを関数で解析できます。タグ関数の最初の引数には、文字列リテラルの配列を含みます。残りの引数は式に関連付けられます。</p>
+
+<p>タグ関数は、これらの引数に対して何でも望み通りの操作を実行することができ、加工された文字列を返します。 (または、以下の例の一つで示しているように、まったく異なるものを返すこともできます。)</p>
+
+<p>タグに使用される関数の名前は、自由に指定できます。</p>
+
+<pre class="brush: js notranslate">let person = 'Mike';
+let age = 28;
+
+function myTag(strings, personExp, ageExp) {
+ let str0 = strings[0]; // "That "
+ let str1 = strings[1]; // " is a "
+
+ // There is technically a string after
+ // the final expression (in our example),
+ // but it is empty (""), so disregard.
+ // let str2 = strings[2];
+
+ let ageStr;
+ if (ageExp &gt; 99){
+ ageStr = 'centenarian';
+ } else {
+ ageStr = 'youngster';
+ }
+
+ // テンプレートリテラルを用いて組み立てた文字列を返すこともできます
+ return `${str0}${personExp}${str1}${ageStr}`;
+}
+
+let output = myTag`That ${ person } is a ${ age }`;
+
+console.log(output);
+// That Mike is a youngster</pre>
+
+<p>タグ関数は文字列を返さなくても構いません。</p>
+
+<pre class="brush: js notranslate">function template(strings, ...keys) {
+ return (function(...values) {
+ let dict = values[values.length - 1] || {};
+ let result = [strings[0]];
+ keys.forEach(function(key, i) {
+ let value = Number.isInteger(key) ? values[key] : dict[key];
+ result.push(value, strings[i + 1]);
+ });
+ return result.join('');
+ });
+}
+
+let t1Closure = template`${0}${1}${0}!`;
+//let t1Closure = template(["","","","!"],0,1,0);
+t1Closure('Y', 'A'); // "YAY!"
+
+let t2Closure = template`${0} ${'foo'}!`;
+//let t2Closure = template(["","","!"],0,"foo");
+t2Closure('Hello', {foo: 'World'}); // "Hello World!"
+
+let t3Closure = template`I'm ${'name'}. I'm almost ${'age'} years old.`;
+//let t3Closure = template(["I'm ", ". I'm almost ", " years old."], "name", "age");
+t3Closure('foo', {name: 'MDN', age: 30}); //"I'm MDN. I'm almost 30 years old."
+t3Closure({name: 'MDN', age: 30}); //"I'm MDN. I'm almost 30 years old."
+</pre>
+
+<h3 id="Raw_strings" name="Raw_strings">加工前の文字列</h3>
+
+<p>タグ関数に渡される第 1 引数では、特別な <code>raw</code> プロパティが利用できます。このプロパティを通して、<a href="/ja/docs/Web/JavaScript/Guide/Grammar_and_types#Using_special_characters_in_strings">エスケープシーケンス</a>を処理する前の、入力された通りの加工前の文字列を参照することができます。</p>
+
+<pre class="brush: js notranslate">function tag(strings) {
+ console.log(strings.raw[0]);
+}
+
+tag`string text line 1 \n string text line 2`;
+// logs "string text line 1 \n string text line 2" ,
+// including the two characters '\' and 'n'
+</pre>
+
+<p>加えて、 {{jsxref("String.raw()")}} メソッドがあり、既定のテンプレート関数のように文字列を連結した形で加工前の文字列を生成することができます。</p>
+
+<pre class="brush: js notranslate">let str = String.raw`Hi\n${2+3}!`;
+// "Hi\n5!"
+
+str.length;
+// 6
+
+Array.from(str).join(',');
+// "H,i,\,n,5,!"
+</pre>
+
+<h3 id="Tagged_templates_and_escape_sequences" name="Tagged_templates_and_escape_sequences">タグ付きテンプレートとエスケープシーケンス</h3>
+
+<h4 id="ES2016_behavior" name="ES2016_behavior">ES2016 での動作</h4>
+
+<p>ECMAScript 2016 時点では、タグ付きテンプレートの以下のエスケープシーケンスには、次のようなルールが適用されます。</p>
+
+<ul>
+ <li>Unicode のエスケープシーケンスは "<code>\u</code>" で始まること。例: <code>\u00A9</code></li>
+ <li>Unicode のコードポイントのエスケープは "<code>\u{}</code>" で示すこと。例: <code>\u{2F804}</code></li>
+ <li>16 進数のエスケープは "<code>\x</code>" で始まること。例: <code>\xA9</code></li>
+ <li>8 進数のリテラルのエスケープは "<code>\0o</code>" で始まり、その後数字が続くこと。例: <code>\0o251</code></li>
+</ul>
+
+<p>このルールのもとでは、下に示す例のようなタグ付きテンプレートが問題となります。なぜなら、 ECMAScript の文法に従ってこのテキストを解釈しようとすると、パーサーは Unicode の有効のエスケープシーケンスを探そうとするも、不正な構文が検出されてしまうからです。</p>
+
+<pre class="brush: js notranslate">latex`\unicode`
+// 古い ECMAScript バージョン (ES2016 以前) では、以下のような例外が投げられる
+// SyntaxError: malformed Unicode character escape sequence</pre>
+
+<h4 id="ES2018_revision_of_illegal_escape_sequences" name="ES2018_revision_of_illegal_escape_sequences">ES2018 revision での不正なエスケープシーケンス</h4>
+
+<p>タグ付きテンプレートでは、他のエスケープシーケンスが一般的な言語 (<a href="https://ja.wikipedia.org/wiki/%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%9B%BA%E6%9C%89%E8%A8%80%E8%AA%9E">DSL</a>、<a href="https://ja.wikipedia.org/wiki/LaTeX">LaTeX</a> など) の埋め込みも許容する必要があります。 ECMAScript プロポーザル <a href="https://tc39.github.io/proposal-template-literal-revision/">Template Literal Revision</a> (Stage 4, to be integrated in the ECMAScript 2018 standard) では、タグ付きテンプレートから、ECMAScript のエスケープシーケンスについての構文的な制約が除外されています。</p>
+
+<p>しかし、埋め込んで「加工された」結果の中においても、不正なエスケープシーケンスがあれば、それを提示する必要があります。こうした不正なエスケープシーケンスは、「加工された」の配列の中では、{{jsxref("undefined")}} の要素として表示されます。</p>
+
+<pre class="brush: js notranslate">function latex(str) {
+ return { "cooked": str[0], "raw": str.raw[0] }
+}
+
+latex`\unicode`
+
+// { cooked: undefined, raw: "\\unicode" }</pre>
+
+<p>このエスケープシーケンスの制約は、<em>タグ付き</em>テンプレートのみが除外となります。<em>タグ付きでない</em>テンプレートリテラルの場合は、除外対象ではありません:</p>
+
+<pre class="brush: js example-bad notranslate">let bad = `bad escape sequence: \unicode`;</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-template-literals', 'Template Literals')}}</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-tagged-templates', 'Tagged templates Literals')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div>
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.grammar.template_literals")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("String")}}</li>
+ <li>{{jsxref("String.raw()")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar">字句文法</a></li>
+ <li><a href="https://gist.github.com/WebReflection/8f227532143e63649804">Template-like strings in ES3 compatible syntax</a></li>
+ <li><a href="https://hacks.mozilla.org/2015/05/es6-in-depth-template-strings-2/">"ES6 in Depth: Template strings" on hacks.mozilla.org</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/trailing_commas/index.html b/files/ja/web/javascript/reference/trailing_commas/index.html
new file mode 100644
index 0000000000..124dd12c22
--- /dev/null
+++ b/files/ja/web/javascript/reference/trailing_commas/index.html
@@ -0,0 +1,172 @@
+---
+title: 末尾のカンマ
+slug: Web/JavaScript/Reference/Trailing_commas
+tags:
+ - Comma
+ - ECMAScript2017
+ - ECMAScript5
+ - JavaScript
+ - Language feature
+ - Syntax
+ - Trailing comma
+translation_of: Web/JavaScript/Reference/Trailing_commas
+---
+<div>{{JsSidebar("More")}}</div>
+
+<p><strong>末尾のカンマ</strong> ("最後のカンマ" と呼ばれることもあります) は、JavaScript のコードに新しい要素や引数、プロパティを追加するときに役立ちます。新しいプロパティを追加するとき、最終行ですでに末尾のカンマを使用していれば、最終行を修正することなく新しい行を追加できます。これによって、バージョン管理の差分がより洗練され、コード編集の煩雑さを軽減できます。</p>
+
+<p>JavaScript は、当初から配列リテラルで末尾のカンマを使用できました。そして、ECMAScript 5 でオブジェクトリテラルの、ECMAScript 2017 で関数の引数の末尾のカンマが使用できるようになりました。</p>
+
+<p>しかし、<a href="/ja/docs/Glossary/JSON">JSON</a> では末尾のカンマを使用できません。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">,</pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Trailing_commas_in_literals" name="Trailing_commas_in_literals">リテラルの末尾のカンマ</h3>
+
+<h4 id="Arrays" name="Arrays">配列</h4>
+
+<p>JavaScript は配列の末尾のカンマを無視します。</p>
+
+<pre class="brush: js notranslate">var arr = [
+ 1,
+ 2,
+ 3,
+];
+
+arr; // [1, 2, 3]
+arr.length; // 3</pre>
+
+<p>1 つ以上の末尾のカンマがある場合、省略 (または穴) が作られます。穴がある配列は<em>希薄な</em> (<em>密集した</em>配列は穴がありません) 配列と呼ばれます。たとえば、{{jsxref("Array.prototype.forEach()")}} や {{jsxref("Array.prototype.map()")}} で配列をイテレートするとき、穴はスキップされます。</p>
+
+<pre class="brush: js notranslate">var arr = [1, 2, 3,,,];
+arr.length; // 5
+</pre>
+
+<h4 id="Objects" name="Objects">オブジェクト</h4>
+
+<p>ECMAScript 5 から、オブジェクトリテラルの末尾のカンマも使用できるようになりました:</p>
+
+<pre class="brush: js notranslate">var object = {
+ foo: "bar",
+ baz: "qwerty",
+ age: 42,
+};</pre>
+
+<h3 id="Trailing_commas_in_functions" name="Trailing_commas_in_functions">関数の末尾のカンマ</h3>
+
+<p>ECMAScript 2017 では、関数の引数リストで末尾のカンマが使用できるようになりました。</p>
+
+<h4 id="Parameter_definitions" name="Parameter_definitions">引数定義</h4>
+
+<p>次の 2 つの関数定義はともに有効で等しいものです。末尾のカンマは、関数の <code>length</code> プロパティや <code>arguments</code> オブジェクトに影響を与えません。</p>
+
+<pre class="brush: js notranslate">function f(p) {}
+function f(p,) {}
+
+(p) =&gt; {};
+(p,) =&gt; {};
+</pre>
+
+<p>末尾のカンマは 、クラスやオブジェクトの<a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義</a>でも使用できます。</p>
+
+<pre class="brush: js notranslate">class C {
+ one(a,) {}
+ two(a, b,) {}
+}
+
+var obj = {
+ one(a,) {},
+ two(a, b,) {},
+};
+</pre>
+
+<h4 id="Function_calls" name="Function_calls">関数呼び出し</h4>
+
+<p>次の 2 つの関数呼び出しはともに有効で等しいものです。</p>
+
+<pre class="brush: js notranslate">f(p);
+f(p,);
+
+Math.max(10, 20);
+Math.max(10, 20,);
+</pre>
+
+<h4 id="Illegal_trailing_commas" name="Illegal_trailing_commas">不正な末尾のカンマ</h4>
+
+<p>カンマしか含まない関数の引数定義や関数呼び出しは、{{Jsxref("SyntaxError")}} を投げます。さらに、<a href="/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters">rest parameters</a> を使用しているときは、末尾のカンマは許可されません。</p>
+
+<pre class="brush: js example-bad notranslate">function f(,) {} // SyntaxError: missing formal parameter
+(,) =&gt; {}; // SyntaxError: expected expression, got ','
+f(,) // SyntaxError: expected expression, got ','
+
+function f(...p,) {} // SyntaxError: parameter after rest parameter
+(...p,) =&gt; {} // SyntaxError: expected closing parenthesis, got ','
+</pre>
+
+<h3 id="Trailing_commas_in_destructuring" name="Trailing_commas_in_destructuring">分割代入での末尾のカンマ</h3>
+
+<p>末尾のカンマは、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">分割代入</a>の左辺でも使用できます。</p>
+
+<pre class="brush: js notranslate">// array destructuring with trailing comma
+[a, b,] = [1, 2];
+
+// object destructuring with trailing comma
+var o = {
+ p: 42,
+ q: true,
+};
+var {p, q,} = o;
+</pre>
+
+<p>また、rest element で使用すると、{{jsxref("SyntaxError")}} を投げます。</p>
+
+<pre class="brush: js example-bad notranslate">var [a, ...b,] = [1, 2, 3];
+// SyntaxError: rest element may not have a trailing comma</pre>
+
+<h3 id="Trailing_commas_in_JSON" name="Trailing_commas_in_JSON">JSON の末尾のカンマ</h3>
+
+<p>オブジェクトリテラルの末尾のカンマは、ECMAScript 5 でのみ導入されました。JSON は ES5 以前の JavaScript 構文に基づいているため、<strong>末尾のカンマを使用できません</strong>。</p>
+
+<p>次の行は <code>SyntaxError</code> を投げます。</p>
+
+<pre class="brush: js example-bad notranslate">JSON.parse('[1, 2, 3, 4, ]');
+JSON.parse('{"foo" : 1, }');
+// SyntaxError JSON.parse: unexpected character
+// at line 1 column 14 of the JSON data
+</pre>
+
+<p>正しく JSON をパースするには、カンマを省略します。</p>
+
+<pre class="brush: js example-good notranslate">JSON.parse('[1, 2, 3, 4 ]');
+JSON.parse('{"foo" : 1 }');</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.grammar.trailing_commas")}}</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>Initial ECMAScript proposal: <a href="https://github.com/tc39/proposal-trailing-function-commas">trailing function commas</a> by Jeff Morrison</li>
+</ul>