aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasahiro FUJIMOTO <mfujimot@gmail.com>2021-09-19 01:00:11 +0900
committerMasahiro FUJIMOTO <mfujimot@gmail.com>2021-09-27 09:36:29 +0900
commit2cf96f04b53d6d7fc962853757820f0583dedae3 (patch)
treeca9228eb37aa9a66c80dc47676ec16874a2eb6a6
parent8f1bc6e84b137a8970cc78bb84270d7701f6d2e9 (diff)
downloadtranslated-content-2cf96f04b53d6d7fc962853757820f0583dedae3.tar.gz
translated-content-2cf96f04b53d6d7fc962853757820f0583dedae3.tar.bz2
translated-content-2cf96f04b53d6d7fc962853757820f0583dedae3.zip
Global_Objects/String/fromCodePoint を更新
- Markdown に変換 - 2021/07/21 時点の英語版に同期
-rw-r--r--files/ja/web/javascript/reference/global_objects/string/fromcodepoint/index.md244
1 files changed, 123 insertions, 121 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/string/fromcodepoint/index.md b/files/ja/web/javascript/reference/global_objects/string/fromcodepoint/index.md
index 002ef04424..326d23ee33 100644
--- a/files/ja/web/javascript/reference/global_objects/string/fromcodepoint/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/fromcodepoint/index.md
@@ -4,144 +4,146 @@ slug: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint
tags:
- ECMAScript 2015
- JavaScript
- - Method
- - Reference
+ - メソッド
+ - リファレンス
- String
+ - UTF-32
+ - Unicode
+ - ポリフィル
+browser-compat: javascript.builtins.String.fromCodePoint
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>
+{{JSRef}}
+
+**`String.fromCodePoint()`** 静的メソッドは指定されたコードポイントのシーケンスを使って生成された文字列を返します。
+
+{{EmbedInteractiveExample("pages/js/string-fromcodepoint.html","shorter")}}
+
+## 構文
+
+```js
+String.fromCodePoint(num1)
+String.fromCodePoint(num1, num2)
+String.fromCodePoint(num1, num2, ..., numN)
+```
+
+### 引数
+
+- `num1, ..., numN`
+ - : コードポイントの並びです。
+
+### 返値
+
+指定されたコードポイントの並びを使って生成された文字列です。
+
+### 例外
+
+- 無効な Unicode コードポイントが与えられた場合、{{jsxref("Errors/Not_a_codepoint", "RangeError")}} (例えば "RangeError: NaN is not a valid code point") が発生します。
+
+## 解説
+
+このメソッドは ({{jsxref("String")}} オブジェクトでは*なく*) 文字列を返します。
+
+`fromCodePoint()` メソッドは {{jsxref("String")}} の静的なメソッドなので、自ら生成した {{jsxref("String")}} オブジェクトのメソッドとしてではなく、常に `String.fromCodePoint()` として使用してください。
+
+## ポリフィル
+
+`String.fromCodePoint` メソッドは ECMAScript 2015 で追加されました。まだすべてのウェブブラウザーや環境で対応していないかもしれません。
+
+ポリフィルとして以下のコードを使用してください。
+
+```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>>>0) === codePoint clause handles decimals and negatives
+        if (!(codePoint < 0x10FFFF && (codePoint>>>0) === codePoint))
+          throw RangeError("Invalid code point: " + codePoint);
+        if (codePoint <= 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 >> 10) + 0xD800, // highSurrogate
+  (codePoint % 0x400) + 0xDC00 // lowSurrogate
+  );
+        }
+        if (codeLen >= 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));
+```
+## 例
+## `fromCodePoint()` の使用
-<h2 id="Syntax" name="Syntax">構文</h2>
+有効な入力:
-<pre class="syntaxbox"><code>String.fromCodePoint(<var>num1</var>[, ...[, <var>numN</var>]])</code></pre>
+```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"
+```
-<h3 id="Parameters" name="Parameters">引数</h3>
+無効な入力:
-<dl>
- <dt><code>num1, ..., num<em>N</em></code></dt>
- <dd>コードポイントのシーケンスです。</dd>
-</dl>
+```js
+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
+```
-<h3 id="Return_value" name="Return_value">戻り値</h3>
+### `fromCharCode()` との比較
-<p>指定されたコードポイントのシーケンスを使って生成された文字列です。</p>
+{{jsxref("String.fromCharCode()")}} では補助文字 (すなわち `0x010000` – `0x10FFFF`) のコードポイントを指定することで返すことができません。
+補助文字を返すためには、 UTF-16 のサロゲートペアでが必要です。
-<h3 id="Exceptions" name="Exceptions">例外</h3>
+```js
+String.fromCharCode(0xD83C, 0xDF03); // Code Point U+1F303 "Night with
+String.fromCharCode(55356, 57091);   // Stars" == "\uD83C\uDF03"
+```
-<ul>
- <li>無効な Unicode コードポイントを与えられた場合、{{jsxref("Errors/Not_a_codepoint", "RangeError")}} (例: "RangeError: NaN is not a valid code point" )がスローされます。</li>
-</ul>
+一方、 `String.fromCodePoint()` はコードポイント (UTF-32 のコードユニットに相当) を指定することで、 4 バイトの補助文字や、一般的な 2 バイトの BMP 文字を返すことができます。
-<h2 id="Description" name="Description">説明</h2>
+```js
+String.fromCodePoint(0x1F303); // または 10 進数で 127747
+```
-<p>このメソッドは {{jsxref("String")}} オブジェクトではなく文字列を返します。</p>
+## 仕様書
-<p><code>fromCodePoint()</code> メソッドは {{jsxref("String")}} の静的なメソッドなので、自ら生成した {{jsxref("String")}} オブジェクトのメソッドとしてではなく、常に <code>String.fromCodePoint()</code> として使用してください。</p>
+{{Specifications}}
-<h2 id="Examples" name="Examples">例</h2>
+## ブラウザーの互換性
-<h3 id="Using_fromCharCode" name="Using_fromCharCode"><code>fromCodePoint()</code> を使う</h3>
+{{Compat}}
-<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>{{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>
+- `String.fromCodePoint` のポリフィルが [`core-js`](https://github.com/zloirock/core-js#ecmascript-string-and-regexp) で利用できます
+- {{jsxref("String.fromCharCode()")}}
+- {{jsxref("String.prototype.charAt()")}}
+- {{jsxref("String.prototype.codePointAt()")}}
+- {{jsxref("String.prototype.charCodeAt()")}}