å奿æ³
ãã®ãã¼ã¸ã§ã¯ã JavaScript ã§ã®å奿æ³ã説æãã¾ããJavaScript ã®ã½ã¼ã¹ããã¹ãã¯ãåãªãæåã®åã§ãããããã¤ã³ã¿ã¼ããªã¿ã¼ã«çè§£ãããããã«ã¯ãæååãããæ§é åããã表ç¾ã«è§£éãããå¿ è¦ãããã¾ããæ§æè§£æã®æåã®æé ã¯åå¥è§£æã¨å¼ã°ããããã¹ããå·¦ããå³ã¸ã¹ãã£ã³ãã¦ãåã ã®ååçãªå ¥åè¦ç´ ã®åã«å¤æãã¾ããä¸é¨ã®å ¥åè¦ç´ ãä¾ãã°ãã¯ã¤ãã¹ãã¼ã¹ãã³ã¡ã³ãã¯ã¤ã³ã¿ã¼ããªã¿ã¼ã«ã¨ã£ã¦éè¦ã§ã¯ãªãã®ã§ããã®æé ã®å¾ã§åãé¤ããã¾ãããã以å¤ã®ãä¾ãã°èå¥åããã¼ã¯ã¼ãããªãã©ã«ãåºåãè¨å·ï¼ä¸»ã«æ¼ç®åï¼ã¯ããã®å¾ã®æ§æè§£æã«ä½¿ç¨ãã¾ããæ¹è¡æåãè¤æ°è¡ã®ã³ã¡ã³ããæ§æçã«ã¯éè¦ã§ã¯ããã¾ãããã䏿£ãªãã¼ã¯ã³åãæå¹ã«ããããã«èªåã»ãã³ãã³æ¿å ¥ã®å¦çã®ã¬ã¤ãã¨ãªãã¾ãã
æ¸å¼åå¶å¾¡æå
æ¸å¼åå¶å¾¡æåã¯ãè¦è¦ç表ç¾ãæãã¦ããªããã®ã®ãããã¹ãã®è§£éãå¶å¾¡ããããã«ä½¿ç¨ããã¾ãã
| ã³ã¼ããã¤ã³ã | åå | ç¥èª | 説æ |
|---|---|---|---|
| U+200C | Zero width non-joiner | <ZWNJ> | ç¹å®ã®è¨èªã«ããã¦ãååã«æ¥åããããã¨ãé²ãããã«ãæåã®éã«é ç½®ããã¾ãã(Wikipedia) |
| U+200D | Zero width joiner | <ZWJ> | ç¹å®ã®è¨èªã«ããã¦ãéå¸¸ã¯æ¥åãããªãæåããæ¥åããå½¢ã使ç¨ãã¦æåã表示ããããã«æåéã«é ç½®ããã¾ãã (Wikipedia) |
| U+FEFF | Byte order mark | <BOM> | è¨è¿°ã®å é ã«ããã¦ã Unicode ã使ç¨ãããã¨ããã¼ã¯ããããã¹ãã®ã¨ã³ã³ã¼ãã£ã³ã°ã¨ãã¤ãé ãæ¤åºã§ããããã«ãã¾ãã (Wikipedia) |
JavaScriptã®ã½ã¼ã¹ããã¹ãã§ã¯ã <ZWNJ> 㨠<ZWJ> ã¯èå¥åé¨åã¨ãã¦æ±ããã <BOM> ï¼ããã¹ãã®å é ã«ãªãå ´åã¯ã¼ãå¹ ã®ãã¼ãã¬ã¼ã¯ã¹ãã¼ã¹ <ZWNBSP> ã¨ãå¼ã°ãã¾ãï¼ã¯ãã¯ã¤ãã¹ãã¼ã¹ã¨ãã¦æ±ããã¾ãã
ãã¯ã¤ãã¹ãã¼ã¹
ãã¯ã¤ãã¹ãã¼ã¹ã¯ã½ã¼ã¹ã®ããã¹ãã®èªã¿ããããåä¸ããããã¼ã¯ã³ãäºãã«åºå¥ãã¾ãããããã®æåã¯é常ãã³ã¼ãã®æ©è½æ§ã«ã¯ä¸è¦ãªãã®ã§ãããã Minification tools ã使ç¨ãã¦ã転éããå¿ è¦ããããã¼ã¿ã®éã忏ããããã«ãã¯ã¤ãã¹ãã¼ã¹ãé¤å»ãã¾ãã
| ã³ã¼ããã¤ã³ã | åå | ç¥èª | 説æ | ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ |
|---|---|---|---|---|
| U+0009 | æååä½ã®ã¿ã | <TAB> | æ°´å¹³ã¿ã | \t |
| U+000B | è¡åä½ã®ã¿ã | <VT> | åç´ã¿ã | \v |
| U+000C | ãã©ã¼ã ãã£ã¼ã | <FF> | æ¹ãã¼ã¸ã®å¶å¾¡æå (Wikipedia) | \f |
| U+0020 | ç©ºç½ | <SP> | é常ã®ç©ºç½ | |
| U+00A0 | ãã¼ãã¬ã¼ã¯ã¹ãã¼ã¹ | <NBSP> | é常ã®ç©ºç½ã ããæ¹è¡ãè¡ã£ã¦ããä½ç½®ã§ã¯ãªã | |
| U+FEFF | ã¼ãå¹ ãã¼ãã¬ã¼ã¯ã¹ãã¼ã¹ | <ZWNBSP> | When not at the start of a script, the BOM marker is a normal whitespace character. | |
| ãã®ä» | ä»ã® Unicode ã®ç©ºç½æå | <USP> | "Space_Separator" ä¸è¬ã«ãã´ãªã¼ã®æå |
ã¡ã¢: "White_Space" ããããã£ãããã "Space_Separator" ä¸è¬ã«ãã´ãªã¼ã«ãªãæåã®ãã¡ã U+0009, U+000B, U+000C 㯠JavaScript ã§ããã¯ã¤ãã¹ãã¼ã¹ã¨ãã¦æ±ããã U+0085 NEXT LINE ã¯ç¹å¥ãªå½¹å²ãæãããä»ã«ãæ¹è¡æåã®éåã¨ãªããã®ãããã¾ãã
ã¡ã¢: JavaScript ã¨ã³ã¸ã³ã§ä½¿ç¨ããã Unicode è¦æ ¼ã夿´ãããã¨ãããã°ã©ã ã®åä½ã«å½±é¿ãä¸ããå¯è½æ§ãããã¾ããä¾ãã°ã ES2016 ã§ã¯åç §ãã Unicode è¦æ ¼ã 5.1 ãã 8.0.0 ã«ã¢ããã°ã¬ã¼ãããããã®å½±é¿ã§ U+180E MONGOLIAN VOWEL SEPARATOR ã "Space_Separator" ã«ãã´ãªã¼ãããæ¸å¼åï¼Cfï¼ãã«ãã´ãªã¼ã«ç§»åãã空ç½ã§ãªããªã£ã¦ãã¾ãããã®çµæã" \u180E".trim().length ã®çµæã 0 ãã 1 ã«å¤æ´ããã¾ããã
æ¹è¡æå
ãã¯ã¤ãã¹ãã¼ã¹æåã«å ãã¦ãæ¹è¡æåãã½ã¼ã¹ã®ããã¹ãã®èªã¿ããããæ¹åããããã«ä½¿ç¨ããã¾ããããããæ¹è¡æå㯠JavaScript ã®å®è¡ã«å½±é¿ãä¸ããå ´åããããç¦æ¢ããã¦ããå ´æãããããããã¾ããæ¹è¡æåã¯èªåã»ãã³ãã³æ¿å ¥ã®å¦çã«ãå½±é¿ãä¸ãã¾ãã
å奿æ³ã®ã³ã³ããã¹ã以å¤ã§ã¯ããã¯ã¤ãã¹ãã¼ã¹ã¨æ¹è¡æåã¯ãã°ãã°åä¸è¦ããã¾ããä¾ãã°ãString.prototype.trim() ã¯æååã®æåã¨æå¾ãããã¹ã¦ã®ãã¯ã¤ãã¹ãã¼ã¹ã¨æ¹è¡æåãé¤å»ãã¾ããæ£è¦è¡¨ç¾ã«ããã \s æåã¯ã©ã¹ã¨ã¹ã±ã¼ãã¯ããã¹ã¦ã®ãã¯ã¤ãã¹ãã¼ã¹ã¨æ¹è¡æåã«ä¸è´ãã¾ãã
以ä¸ã® Unicode ã³ã¼ããã¤ã³ãã®ã¿ã ECMAScript ã§ã¯æ¹è¡æåã¨ãã¦æ±ãããä»ã®æ¹è¡æåã¯ãã¯ã¤ãã¹ãã¼ã¹ã¨ãã¦æ±ããã¾ã (ä¾ãã°ã次ã®è¡ã NELã U+0085 ã¯ãã¯ã¤ãã¹ãã¼ã¹ã¨è¦ãªããã¾ã)ã
| ã³ã¼ããã¤ã³ã | åå | ç¥èª | 説æ | ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ |
|---|---|---|---|---|
| U+000A | ã©ã¤ã³ãã£ã¼ã | <LF> | UNIX ã·ã¹ãã ã§ã®æ¹è¡æåã§ãã | \n |
| U+000D | ãã£ãªãã¸ãªã¿ã¼ã³ | <CR> | ã³ã¢ãã¼ã«ã¨åæã® Mac ã·ã¹ãã ã§ã®æ¹è¡æåã§ãã | \r |
| U+2028 | ã©ã¤ã³ã»ãã¬ã¼ã¿ã¼ | <LS> | ã¦ã£ãããã£ã¢ | |
| U+2029 | æ¹æ®µè½ | <PS> | ã¦ã£ãããã£ã¢ |
ã³ã¡ã³ã
ã³ã¡ã³ãã¯ããã³ããã¡ã¢ãææ¡ãè¦åã JavaScript ã®ã³ã¼ãã«è¿½å ããããã«ä½¿ç¨ããã¾ããããã«ãããã³ã¼ããããèªã¿ããããããçè§£ãããããã®ãªãã¾ããã¾ããã³ã¼ããå®è¡ãããªãããç¡å¹ã«ããããã«ä½¿ç¨ãããã¨ãã§ãã¾ããããã¯ãè²´éãªãããã°ãã¼ã«ã«ãªããã¨ãããã¾ãã
JavaScript ã«ã¯ãã³ã¼ãå ã«ã³ã¡ã³ããå²ãå½ã¦ãæ¹æ³ã 2 ã¤ããã¾ãã
è¡ã³ã¡ã³ã
1 çªç®ã®æ¹æ³ã¯ // ã³ã¡ã³ãã§ããã¤ã¾ããããã¯åãè¡ã«ããããã®å¾ã®ãã¹ã¦ã®ããã¹ããã³ã¡ã³ãã«ãã¾ããä¾ãã°ã
function comment() {
// ãã㯠JavaScript ã® 1 è¡ã³ã¡ã³ãã§ã
console.log("Hello world!");
}
comment();
ãããã¯ã³ã¡ã³ã
2 çªç®ã®æ¹æ³ã¯ /* */ ã¹ã¿ã¤ã«ã§ããã£ã¨ãã£ã¨æè»ãªãã®ã§ãã
ä¾ãã°ãåä¸è¡ã«å©ç¨ããå ´åã¯æ¬¡ã®ããã«ãªãã¾ãã
function comment() {
/* ãã㯠JavaScript ã® 1 è¡ã³ã¡ã³ãã§ã */
console.log("Hello world!");
}
comment();
è¤æ°è¡ã®ã³ã¡ã³ããä¸è¨ã®ããã«ä½æãããã¨ãã§ãã¾ãã
function comment() {
/* ãã®ã³ã¡ã³ãã¯è¤æ°è¡ã«ã¾ããããã¨ãã§ãã¾ãã
ã³ã¡ã³ããçµäºããã¾ã§ãéããå¿
è¦ããªããã¨ã«æ³¨æãã¦ãã ããã */
console.log("Hello world!");
}
comment();
å¿ è¦ã§ããã°ãè¡ã®éä¸ã§ã³ã¡ã³ãã使ç¨ãããã¨ãã§ãã¾ãããããã¯ã³ã¼ããèªã¿ã«ãããªããã¨ãããã®ã§æ³¨æãå¿ è¦ã§ãã
function comment(x) {
console.log("Hello " + x /* å¤ x ãæ¿å
¥ */ + " !");
}
comment("world");
ã¾ããã³ã¼ããã³ã¡ã³ãã§å²ããã¨ã§ãã³ã¼ããå®è¡ãããªãããç¡å¹ã«ãããã¨ãã§ãã¾ãã
function comment() {
/* console.log("Hello world!"); */
}
comment();
ãã®å ´åã console.log() ã®å¼ã³åºãã¯ã³ã¡ã³ãå
é¨ã«ããã®ã§ãå®è¡ããããã¨ã¯ããã¾ãããä½è¡åã®ã³ã¼ãã§ãã£ã¦ãããã®ããã«ãã¦ç¡å¹ã«ãããã¨ãã§ãã¾ãã
å°ãªãã¨ã 1 ã¤ã®æ¹è¡æåãå«ããããã¯ã³ã¡ã³ãã¯ãèªåã»ãã³ãã³æ¿å ¥ã«ããã¦æ¹è¡æåã®ããã«åä½ãã¾ãã
ããã·ã¥ãã³ã³ã¡ã³ã
ç¹å¥ãª 3 ã¤ç®ã®ã³ã¡ã³ãæ§æã¨ãã¦ããã·ã¥ãã³ã³ã¡ã³ããããã¾ããããã·ã¥ãã³ã³ã¡ã³ãã¯ã #! ã§å§ã¾ããã¨ã¨ãã¹ã¯ãªãããã¢ã¸ã¥ã¼ã«ã®çµ¶å¯¾çãªéå§ä½ç½®ã§ã®ã¿æå¹ã§ãããã¨ãé¤ãã¦ãåä¸ã®è¡ã®ã¿ (//) ã®ã³ã¡ã³ãã¨å
¨ãåãããã«åä½ãã¾ãããªãã #! ã®åã«ã¯ãããªã種é¡ã®ç©ºç½ã許ãããªããã¨ã«ã注æãã¦ãã ãããã³ã¡ã³ã㯠#! 以éã®æåã®è¡ã®çµããã¾ã§ã®ãã¹ã¦ã®æåã§æ§æããããã®ãããªã³ã¡ã³ã㯠1 ã¤ã ã許å¯ããã¾ãã
JavaScriptã§ã®ããã·ã¥ãã³ã³ã¡ã³ã㯠Unix ã«ãããã·ãã³ã«ä¼¼ã¦ãã¦ãã¹ã¯ãªãããå®è¡ããããã«ä½¿ç¨ãããç¹å®ã® JavaScript ã¤ã³ã¿ã¼ããªã¿ã¼ã¸ã®ãã¹ãæå®ãã¾ããããã·ã¥ãã³ã³ã¡ã³ããæ¨æºåãããåã«ã Node.js ã®ãããªãã©ã¦ã¶ã¼ä»¥å¤ã®ãã¹ãã§ã¯ãã§ã«ããã¡ã¯ãã¨ãã¦å®è£ ããã¦ãããã¨ã³ã¸ã³ã«æ¸¡ãããåã«ã½ã¼ã¹ããã¹ãããåãé¤ãããããã«ãªã£ã¦ãã¾ãããä¾ã¨ãã¦ä»¥ä¸ã®ãããªãã®ãããã¾ãã
#!/usr/bin/env node
console.log("Hello world");
JavaScript ã¤ã³ã¿ã¼ããªã¿ã¼ã¯ãããé常ã®ã³ã¡ã³ãã¨ãã¦æ±ãã¾ããã¹ã¯ãªãããç´æ¥ã·ã§ã«ã§å®è¡ãããå ´åã®ã¿ãã·ã§ã«ã«å¯¾ãã¦æå³ãæã¡ã¾ãã
è¦å: ã¹ã¯ãªãããã·ã§ã«ç°å¢ã§ç´æ¥å®è¡ã§ããããã«ãããå ´åã¯ã BOM ã®ãªã UTF-8 ã§ã¨ã³ã³ã¼ããã¦ãã ããããã©ã¦ã¶ã¼ã§å®è¡ããã³ã¼ãã§ã¯ BOM ã¯ä½ã®åé¡ãèµ·ããã¾ããã - UTF-8 ãã³ã¼ãã®éãã½ã¼ã¹ããã¹ããè§£æãããåã«åãé¤ãããããã§ã - Unix/Linux ã®ã·ã§ã«ã§ã¯ãBOM æåãåã«ããã¨ããã·ã¥ãã³ãèªèãã¾ããã
#! ã®å½¢ã®ã³ã¡ã³ã㯠JavaScript ã¤ã³ã¿ã¼ããªã¿ã¼ãæå®ããããã«ã ã使ç¨ãã¦ãã ãããä»ã®ç¨éã§ã¯ãã¹ã¦ // ã®ã³ã¡ã³ãï¼ã¾ãã¯è¤æ°è¡ã³ã¡ã³ãï¼ã使ç¨ãã¦ãã ããã
èå¥å
èå¥å ã¯ãå¤ã¨ååããªã³ã¯ãããããã«ä½¿ç¨ããã¾ããèå¥åã¯æ§ã ãªå ´æã§ä½¿ç¨ãããã¨ãã§ãã¾ãã
const decl = 1; // 夿°å®£è¨ï¼`let` ã¾ã㯠`var` ãå¯ï¼
function fn() {} // 颿°å®£è¨
const obj = { key: "value" }; // ãªãã¸ã§ã¯ããã¼
// ã¯ã©ã¹å®£è¨
class C {
#priv = "value"; // ãã©ã¤ãã¼ããã£ã¼ã«ã
}
lbl: console.log(1); // ã©ãã«
JavaScript ã§ã¯ãèå¥åã¯ä¸è¬çã«è±æ°åãã¢ã³ãã¼ã¹ã³ã¢ (_)ããã«è¨å· ($) ã§æ§æããã¾ããèå¥åã¯æ°åã§å§ãããã¨ã¯ã§ãã¾ãããããããJavaScript ã§ä½¿ç¨ã§ããèå¥å㯠ASCII ã ãã§ã¯ãªããã»ã¨ãã©ã® Unicode ã³ã¼ããã¤ã³ãã使ç¨å¯è½ã§ãã
- å
é æåã¯ã ID_Start ã«ãã´ãªã¼ã®æåã«å ãã¦
_ã$ã使ç¨ãããã¨ãã§ãã¾ãã - å é æå以éã¯ã ID_Continue ã«ãã´ãªã¼ã«ããæåã«å ã㦠U+200C (ZWNJ) ã U+200D (ZWJ) ã使ç¨ãããã¨ãã§ãã¾ãã
ã¡ã¢:
ããä½ããã®çç±ã§ JavaScript ã®ã½ã¼ã¹ãèªåã§æ§æè§£æããå¿
è¦ãããå ´åããã¹ã¦ã®èå¥åã /[A-Za-z_$][\w$]*/ ã®ãã¿ã¼ã³ã«å¾ã£ã¦ããï¼ã¤ã¾ã ASCII ã®ã¿ã§ããï¼ã¨ä»®å®ããªãã§ãã ããã èå¥åã®ç¯å²ã¯æ£è¦è¡¨ç¾ /[$_\p{ID_Start}][$\p{ID_Continue}]*/u ï¼Unicode ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ãé¤ãï¼ã§è¨è¿°ãããã¨ãã§ãã¾ãã
ã¾ããJavaScript ã§ã¯ãèå¥åã®ä¸ã§ Unicode ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã \u0000 ã¾ã㯠\u{000000} ã¨ããå½¢å¼ã§ä½¿ç¨ãããã¨ãã§ããããã¯å®éã® Unicode æåã¨åãæååå¤ãã¨ã³ã³ã¼ããããã®ã§ããä¾ãã°ãä½ å¥½ 㨠\u4f60\u597d ã¯åãèå¥åã§ãã
const ä½ å¥½ = "Hello";
console.log(\u4f60\u597d); // Hello
ãã¹ã¦ã®å ´æã§ããã¹ã¦ã®ç¯å²ã®èå¥åãåãå ¥ããããããã§ã¯ããã¾ããã颿°å®£è¨ã颿°å¼ã夿°å®£è¨ãªã©ã®ç¹å®ã®æ§æã§ã¯ãäºç´èªã§ãªãèå¥ååã使ç¨ããå¿ è¦ãããã¾ãã
function import() {} // éå: import ã¯äºç´èªã§ãã
æã注ç®ãã¹ãã¯ããã©ã¤ãã¼ãè¦ç´ ã¨ãªãã¸ã§ã¯ãããããã£ã¯ãäºç´èªã許å¯ãã¦ãããã¨ã§ãã
const obj = { import: "value" }; // `import` ã¯äºç´èªã ãæå¹
class C {
#import = "value";
}
ãã¼ã¯ã¼ã
ãã¼ã¯ã¼ã ã¯èå¥åã®ããã«è¦ãã¾ããã JavaScript ã§ç¹å¥ãªæå³ãæã¤ãã¼ã¯ã³ã§ããä¾ãã°ã颿°å®£è¨ã®åã®ãã¼ã¯ã¼ã async ã¯ããã®é¢æ°ãéåæã§ãããã¨ã示ãã¾ãã
ãã¼ã¯ã¼ãã®ä¸ã«ã¯äºç´ããã¦ãããã®ãããã夿°å®£è¨ã颿°å®£è¨ãªã©ã®èå¥åã¨ãã¦ä½¿ç¨ãããã¨ãã§ããªããã¨ãæå³ãã¾ãããããã¯ããäºç´èªã¨å¼ã°ãã¾ããäºç´èªã®ä¸è¦§ã¯ä¸è¨ã«æ²è¼ããã¦ãã¾ãããã¹ã¦ã®ãã¼ã¯ã¼ããäºç´ããã¦ããããã§ã¯ããã¾ãããä¾ãã°ã async ã¯ã©ãã§ãèå¥åã¨ãã¦ä½¿ç¨ãããã¨ãã§ãã¾ããä¸é¨ã®ãã¼ã¯ã¼ãã¯æèçãªäºç´èªã§ããä¾ãã°ã await ã¯éåæé¢æ°ã®æ¬ä½ã§ã®ã¿ã let ã¯å³æ ¼ã¢ã¼ãã®ã³ã¼ããã¾ã㯠const ããã³ let 宣è¨ã§ã®ã¿äºç´ããã¦ãã¾ãã
èå¥åã¯å¸¸ã« æååå¤ ã§æ¯è¼ããããããã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã¯è§£éããã¾ããä¾ãã°ããã®ãããªå ´åãæ§æã¨ã©ã¼ã¨ãªãã¾ãã
const els\u{65} = 1;
// `els\u{65}` encodes the same identifier as `else`
äºç´èª
ãããã®ãã¼ã¯ã¼ãã¯ã JavaScript ã§å¤æ°ã颿°ãã¯ã©ã¹ãªã©ã®èå¥åã¨ãã¦ä½¿ç¨ãããã¨ã¯ã§ãã¾ããã
breakcasecatchclassconstcontinuedebuggerdefaultdeletedoelseexportextendsfalsefinallyforfunctionifimportininstanceofnewnullreturnsuperswitchthisthrowtruetrytypeofvarvoidwhilewith
以ä¸ã®ãã®ã¯ã峿 ¼ã¢ã¼ãã®ã³ã¼ãã§ä½¿ãããå ´åã®ã¿äºç´èªã«ãªãã¾ãã
letï¼constãletãã¯ã©ã¹å®ç¾©ã§ãäºç´èªã«ãªãï¼staticyieldï¼ã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ã®æ¬ä½ã§ãäºç´èªã«ãªãï¼
以ä¸ã®ãã®ã¯ãã¢ã¸ã¥ã¼ã«ã³ã¼ããéåæé¢æ°æ¬ä½ã«ç¾ããå ´åã«ã®ã¿äºç´èªã«ãªãã¾ãã
ä»å¾ã®äºç´èª
以ä¸ã®ãã®ã¯ã ECMAScript ã®ä»æ§ã«ãã£ã¦ä»å¾ã®ãã¼ã¯ã¼ãã¨ãã¦äºç´ããã¦ãã¾ãããããã¯ç¾æç¹ã§ã¯ç¹å¥ãªæ©è½ãæã£ã¦ãã¾ããããå°æ¥ã¯æã¤å¯è½æ§ãããã®ã§ãèå¥åã¨ãã¦ä½¿ç¨ãããã¨ã¯ã§ãã¾ããã
以ä¸ã®ãã®ã¯å¸¸ã«äºç´ããã¦ãã¾ãã
enum
以ä¸ã®ãã®ã¯ã峿 ¼ã¢ã¼ãã§ééããå ´åã®ã¿äºç´èªã«ãªãã¾ãã
implementsinterfacepackageprivateprotectedpublic
æ§ä»æ§æ¸ã«ãã£ãä»å¾ã®äºç´ãã¼ã¯ã¼ã
以åã® ECMAScript ã®ä»æ§æ¸ (ECMAScript 1 ãã 3 ã¾ã§) ã§ã¯ã以ä¸ã®ãã®ãå°æ¥ã®ãã¼ã¯ã¼ãã¨ãã¦äºç´ããã¦ãã¾ãã
abstractbooleanbytechardoublefinalfloatgotointlongnativeshortsynchronizedthrowstransientvolatile
ç¹å¥ãªæå³ãæã¤èå¥å
ä¸é¨ã®èå¥åã¯ããã¼ã¯ã¼ãã§ãªãã¦ããããã³ã³ããã¹ãã§ç¹å¥ãªæå³ãæã¤ãã¨ãããã¾ãããããã¯ä»¥ä¸ã®éãã§ãã
argumentsï¼ãã¼ã¯ã¼ãã§ã¯ããã¾ãããã峿 ¼ã¢ã¼ãã§ã¯èå¥åã¨ãã¦å®£è¨ã§ãã¾ããï¼as(import * as ns from "mod")asyncevalï¼ãã¼ã¯ã¼ãã§ã¯ããã¾ãããã峿 ¼ã¢ã¼ãã§ã¯èå¥åã¨ãã¦å®£è¨ã§ãã¾ããï¼from(import x from "mod")getofset
ãªãã©ã«
ã¡ã¢: ãã®ç¯ã§ã¯ãä¸å¯åãªãã¼ã¯ã³ã§ãããªãã©ã«ã«ã¤ãã¦èª¬æãã¾ãããªãã¸ã§ã¯ããªãã©ã«ãé åãªãã©ã«ã¯ãä¸é£ã®ãã¼ã¯ã³ã§æ§æãããå¼ã§ãã
Null ãªãã©ã«
詳細ã«ã¤ãã¦ã¯ null ãåç
§ãã¦ãã ããã
null
è«çå¤ãªãã©ã«
詳細ã«ã¤ãã¦ã¯è«çåãåç §ãã¦ãã ããã
true
false
æ°å¤ãªãã©ã«
æ°å¤å (Number) ããã³é·æ´æ°å (BigInt) ãæ°å¤ãªãã©ã«ã使ç¨ãã¾ãã
10 鲿°
1234567890
42
10 鲿°ãªãã©ã«ãã¼ã (0) ããå§ããä»ã® 10 鲿°ã®æ°åãç¶ãããã¨ãã§ãã¾ããã 0 ã«ç¶ãæ°åããã¹ã¦ 8 ããå°ããå ´åã¯ããã®æ°å¤ã 8 鲿°ã¨ãã¦è§£éããããã¨ã«æ³¨æãã¦ãã ãããããã«ãæ¥é è¾ 0 ãæã¤æ°å¤ãªãã©ã«ã¯ã 8 鲿°ã¨ 10 鲿°ã®ã©ã¡ãã§è§£éãã¦ãã峿 ¼ã¢ã¼ãã§ã¯æ§æã¨ã©ã¼ãçºçãã¾ããã§ãããã代ããã« 0o æ¥é è¾ã使ç¨ãã¦ãã ããã
0888 // 888 㯠10 鲿°ã¨ãã¦è§£éããã¾ã
0777 // 8 鲿°ã¨ãã¦è§£éããã 10 鲿°ã§ã¯ 511 ã§ãã
ææ°
10 鲿°ã®ææ°ãªãã©ã«ã¯ã beN ã®æ¸å¼ã§æå®ãã¾ããããã§ b ã¯åºæ°ï¼æ´æ°ã¾ãã¯æµ®åå°æ°ç¹ï¼ããã®å¾ã« e æåï¼ã»ãã¬ã¼ã¿ã¼ã¾ãã¯ææ°è¨å·ã¨ãã¦æ©è½ï¼ããã㦠N ã¯ææ°ã¾ãã¯ã¹ã乿° - 符å·ä»ãæ´æ°ã§ãï¼2019 ECMA-262 仿§ã«å¾ãã¾ãï¼ã
0e-5 // 0
0e+5 // 0
5e1 // 50
175e-2 // 1.75
1e3 // 1000
1e-3 // 0.001
1E3 // 1000
2 鲿°
2 鲿°ã®æ§æã¯ãå
é ã®ã¼ãã«ç¶ãã¦å°æåã¾ãã¯å¤§æåã®ã©ãã³æå "B" ã使ç¨ãã¾ã (0b ã¾ã㯠0B)ã0o ã®å¾ã« 0 ã¾ã㯠1 以å¤ã®æåãããã¨ãä¸é£ã®ãªãã©ã«ã¯çµäºãã¾ãã
0b10000000000000000000000000000000 // 2147483648
0b01111111100000000000000000000000 // 2139095040
0B00000000011111111111111111111111 // 8388607
8 鲿°
8 鲿°ã®æ§æã¯ãå
é ã®ã¼ãã«ç¶ãã¦å°æåã¾ãã¯å¤§æåã®ã©ãã³æå "O" ã使ç¨ãã¾ã (0o ã¾ã㯠0O)ã0o ã®å¾ã«ç¯å² (01234567) ããå¤ããæåãããã¨ãä¸é£ã®ãªãã©ã«ã¯çµäºãã¾ãã
0O755 // 493
0o644 // 420
16 鲿°
16 鲿°ã®æ§æã¯ãå
é ã®ã¼ãã«ç¶ãã¦å°æåã¾ãã¯å¤§æåã®ã©ãã³æå "X" ã使ç¨ãã¾ã (0x ã¾ã㯠0X)ã0x ã®å¾ã«ç¯å² (0123456789ABCDEF) ããå¤ããæåãããã¨ãä¸é£ã®ãªãã©ã«ã¯çµäºãã¾ãã
0xFFFFFFFFFFFFF // 4503599627370495
0xabcdef123456 // 188900967593046
0XA // 10
é·æ´æ°ãªãã©ã«
é·æ´æ°å (BigInt) 㯠JavaScript ã®æ°å¤ããªããã£ãã§ãããèªç±ãªç²¾åº¦ã®æ´æ°ã表ããã¨ãã§ãã¾ããé·æ´æ°ãªãã©ã«ã¯ãæ´æ°ã®æ«å°¾ã« n ã追å ãããã¨ã§ä½æããã¾ãã
123456789123456789n // 123456789123456789
0o777777777777n // 68719476735
0x123456789ABCDEFn // 81985529216486895
0b11101001010101010101n // 955733
é·æ´æ°ãªãã©ã«ã¯ãå¤ã 8 鲿°ã¨æ··åããªãããã0 ã§å§ãããã¨ã¯ã§ãã¾ããã
0755n; // SyntaxError: invalid BigInt syntax
8 鲿°ã® BigInt æ°å¤ã§ã¯ã常ã«ã¼ãã®å¾ã« "o" (大æåã§ãå°æåã§ã) ãä»ãã¦ä½¿ç¨ãã¦ãã ããã
0o755n;
BigInt ã«ã¤ãã¦ã®è©³ç´°ãªæ
å ±ã¯ã JavaScript ã®ãã¼ã¿æ§é ãåç
§ãã¦ãã ããã
æ°å¤ã®åºåãæå
æ°å¤ãªãã©ã«ã®å¯èªæ§ãé«ããããã«ãã¢ã³ãã¼ã¹ã³ã¢ (_, U+005F) ãåºåãæåã¨ãã¦ä½¿ç¨ãããã¨ãã§ãã¾ãã
1_000_000_000_000
1_050.95
0b1010_0001_1000_0101
0o2_2_5_6
0xA0_B0_C0
1_000_000_000_000_000_000_000n
ãªãã以ä¸ã®å¶éãããã¾ãã
// é£ç¶ã㦠2 ã¤ä»¥ä¸ã®ã¢ã³ãã¼ã¹ã³ã¢ã¯è¨±å¯ããã¦ãã¾ãã
100__000; // SyntaxError
// æ°å¤ãªãã©ã«ã®æ«å°¾ã«ç½®ããã¨ã¯è¨±å¯ããã¦ãã¾ãã
100_; // SyntaxError
// å
é ã® 0 ã®å¾ã«ä½¿ç¨ãããã¨ã¯ã§ãã¾ãã
0_1; // SyntaxError
æååãªãã©ã«
æååãªãã©ã«ã¯ãåä¸å¼ç¨ç¬¦ã¾ãã¯äºéå¼ç¨ç¬¦ã«å²ã¾ãã 0 å以ä¸ã® Unicode ã³ã¼ããã¤ã³ãã§ãã Unicode ã³ã¼ããã¤ã³ãã¯ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã§è¡¨ããã¨ãã§ãã¾ãã以ä¸ã®å¼ç¨ç¬¦ãéããã³ã¼ããã¤ã³ããé¤ãã¦ããã¹ã¦ã®ã³ã¼ããã¤ã³ããæååãªãã©ã«ã«ç¾ãããã¨ãã§ãã¾ãã
- U+005C \ (ããã¯ã¹ã©ãã·ã¥)
- U+000D <CR>
- U+000A <LF>
- æååãªãã©ã«ãå§ãããã®ã¨åãå¼ç¨ç¬¦
ãã¹ã¦ã®ã³ã¼ããã¤ã³ãããã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã®å½¢ã§ç¾ãããã¨ãã§ãã¾ããæååãªãã©ã«ã¯ ECMAScript ã®æååå¤ã¨ãã¦è©ä¾¡ããã¾ãããããã®æååã®å¤ãçæããéã«ã Unicode ã³ã¼ããã¤ã³ã㯠UTF-16 ã¨ã³ã³ã¼ãããã¾ãã
'foo'
"bar"
次ã®é
ã§ã¯ãæååãªãã©ã«ã§å©ç¨ã§ãããã¾ãã¾ãªã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ï¼\ ã®å¾ã« 1 ã¤ä»¥ä¸ã®æåãç¶ããã®ï¼ãè¨è¿°ãã¾ãã以ä¸ã®ä¸è¦§ã«æ²è¼ããã¦ããªãã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã¯ãç価ã¨ã¹ã±ã¼ããã¨ãªããã³ã¼ããã¤ã³ããã®ãã®ã«ãªãã¾ããä¾ãã°ã\z 㯠z ã¨åãã§ããéæ¨å¥¨ã® 8 ææ°ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹æ§æããããéæ¨å¥¨ã®æ©è½ã廿¢ãããæ©è½ãã¼ã¸ã«è¨è¿°ããã¦ãã¾ãããããã®ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã®å¤ãã¯æ£è¦è¡¨ç¾ã§ãæå¹ã§ããæåã¨ã¹ã±ã¼ããåç
§ãã¦ãã ããã
ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹
ç¹æ®æåã¯ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã使ç¨ãã¦ã¨ã³ã³ã¼ããããã¨ãã§ãã¾ãã
| ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ | Unicode ã³ã¼ããã¤ã³ã |
|---|---|
\0 |
ãã«æå (U+0000 NULL) |
\' |
åä¸å¼ç¨ç¬¦ (U+0027 APOSTROPHE) |
\" |
äºéå¼ç¨ç¬¦ (U+0022 QUOTATION MARK) |
\\ |
ããã¯ã¹ã©ãã·ã¥ (U+005C REVERSE SOLIDUS) |
\n |
æ¹è¡ (U+000A LINE FEED; LF) |
\r |
ãã£ãªãã¸ãªã¿ã¼ã³ (U+000D CARRIAGE RETURN; CR) |
\v |
åç´ã¿ã (U+000B LINE TABULATION) |
\t |
ã¿ã (U+0009 CHARACTER TABULATION) |
\b |
ããã¯ã¹ãã¼ã¹ (U+0008 BACKSPACE) |
\f |
ãã¼ã¸éã (U+000C FORM FEED) |
\ ã®ç´å¾ã«æ¹è¡æå |
空æåå |
æå¾ã®ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã\ ã«æ¹è¡ãç¶ããã®ã¯ãæååãªãã©ã«ããã®æå³ãå¤ããã«è¤æ°è¡ã«åå²ããã®ã«æçãªãã®ã§ãã
const longString =
"This is a very long string which needs \
to wrap across multiple lines because \
otherwise my code is unreadable.";
ããã¯ã¹ã©ãã·ã¥ã®å¾ã«ç©ºç½æåãä»ã®æåï¼æ¹è¡ãé¤ãï¼ããªããã¨ã確èªãã¦ãã ãããããã§ãªããã°åä½ãã¾ãããæ¬¡ã®è¡ãã¤ã³ãã³ãããã¦ããå ´åãä½åãªç©ºéãæååã®å¤ã«ãåå¨ãã¾ãã
ã¾ãã+ æ¼ç®åã使ç¨ãã¦ã次ã®ããã«è¤æ°ã®æååãé£çµãããã¨ãã§ãã¾ãã
const longString =
"This is a very long string which needs " +
"to wrap across multiple lines because " +
"otherwise my code is unreadable.";
ä¸è¨ã®æ¹æ³ã¯ã©ã¡ããåãæååã«ãªãã¾ãã
16 é²ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹
16 é²ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã¯ \x ã«ç¶ãã¦ã¡ããã© 2 æ¡ã® 16 鲿°ããæãã 0x0000 ãã 0x00FF ã¾ã§ã®ã³ã¼ãåä½ã¾ãã¯ã³ã¼ããã¤ã³ãã表ãã¾ãã
"\xA9"; // "©"
Unicode ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹
Unicode ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã¯ \u ã«ç¶ãã¦ã¡ããã© 4 æ¡ã® 16 鲿°ããæãã¾ããããã§ UTF-16 ã¨ã³ã³ã¼ãã£ã³ã°ã®ã³ã¼ãåä½ã表ãã¾ããã³ã¼ããã¤ã³ã U+0000 ãã U+FFFF ã¾ã§ã¯ãã³ã¼ãåä½ã¨ã³ã¼ããã¤ã³ãã¯çãããªãã¾ããã³ã¼ããã¤ã³ã U+10000 ãã U+10FFFF ã¾ã§ã¯ã 2 ã¤ã®ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã§ 2 ã¤ã®ã³ã¼ãåä½ (ãµãã²ã¼ããã¢) ã表ãå¿
è¦ãããã¾ãããµãã²ã¼ããã¢ã¯ã³ã¼ããã¤ã³ãã§åºå¥ããã¾ãã
String.fromCharCode() ããã³ String.prototype.charCodeAt() ãåç
§ãã¦ãã ããã
"\u00A9"; // "©" (U+A9)
Unicode ã³ã¼ããã¤ã³ãã¨ã¹ã±ã¼ã
Unicode ã³ã¼ããã¤ã³ãã¨ã¹ã±ã¼ã㯠\u{ ã«ç¶ã㦠16 鲿°ã®ã³ã¼ããã¤ã³ããç¶ãã } ãç¶ãã¾ãã 16 鲿°ã®å¤ã¯ 0 ãã 0x10FFFF ã¾ã§ã®ç¯å²ã«å«ã¾ãã¦ããå¿
è¦ãããã¾ãã U+10000 ãã U+10FFFF ã¾ã§ã®ç¯å²ã®ã³ã¼ããã¤ã³ããããµãã²ã¼ããã¢ã¨ãã¦è¡¨ãå¿
è¦ã¯ããã¾ããã
String.fromCodePoint() ã¾ã㯠String.prototype.codePointAt() ãåç
§ãã¦ãã ããã
"\u{2F804}"; // CJK COMPATIBILITY IDEOGRAPH-2F804 (U+2F804)
// åãæåããµãã²ã¼ããã¢ã§è¡¨ãããã®
"\uD87E\uDC04";
æ£è¦è¡¨ç¾ãªãã©ã«
æ£è¦è¡¨ç¾ãªãã©ã«ã¯2ã¤ã®ã¹ã©ãã·ã¥ (/) ã§å²ã¾ãã¾ããåå¥è§£æå¨ã¯ãã¹ã©ãã·ã¥ãæåã¯ã©ã¹ ([]) å
ã«ç¾ããªãéããã¨ã¹ã±ã¼ãããã¦ããªã次ã®ã¹ã©ãã·ã¥ã¾ãã¯è¡ã®çµããã¾ã§ã®ãã¹ã¦ã®æåãå¦çãã¾ããä¸é¨ã®æåï¼ããªãã¡ãèå¥åã®ä¸é¨ï¼ã¯ãéãã¹ã©ãã·ã¥ã®å¾ã«ç¾ãããã¨ããããããã¯ãã©ã°ã表ãã¾ãã
å奿æ³ã¯ã¨ã¦ãçãã1 ã¤ã®ãã¼ã¯ã³ã¨ãã¦åå¾ãããæ£è¦è¡¨ç¾ãªãã©ã«ããã¹ã¦æå¹ãªæ£è¦è¡¨ç¾ã¨ã¯éãã¾ããã
詳細ã«ã¤ãã¦ã¯ RegExp ãåç
§ãã¦ãã ããã
/ab+c/g
/[/]/
æ£è¦è¡¨ç¾ãªãã©ã«ã¯ 2 ã¤ã®ã¹ã©ãã·ã¥ (//) ã§å§ãããã¨ã¯ã§ãã¾ãããç©ºã®æ£è¦è¡¨ç¾ãæå®ããã«ã¯ /(?:)/ ã使ç¨ãã¦ãã ããã
ãã³ãã¬ã¼ããªãã©ã«
ä¸ã¤ã®ãã³ãã¬ã¼ããªãã©ã«ã¯ãè¤æ°ã®ãã¼ã¯ã³ããæãã¾ãã`xxx${ï¼ãã³ãã¬ã¼ãã®å
é ï¼ã}xxx${ï¼ãã³ãã¬ã¼ãã®ä¸éï¼ã}xxx`ï¼ãã³ãã¬ã¼ãã®æ«å°¾ï¼ã¯åå¥ã®ãã¼ã¯ã³ã§ããããããã®éã«ã¯ã©ã®ãããªå¼ãå
¥ã£ã¦ããã¾ãã¾ããã
詳細ã«ã¤ãã¦ããã³ãã¬ã¼ããªãã©ã«ãåç §ãã¦ãã ããã
`string text`;
`string text line 1
string text line 2`;
`string text ${expression} string text`;
tag`string text ${expression} string text`;
èªåã»ãã³ãã³æ¿å ¥
ä¸é¨ã® JavaScript æã¯ãæ«å°¾ã«ã»ãã³ãã³ (;) ãå¿
è¦ã§ããããã«ã¯æ¬¡ã®ãããªãã®ãããã¾ãã
var,let,const,using,await using- 弿
do...whilecontinue,break,return,throwdebugger- ã¯ã©ã¹ãã£ã¼ã«ã宣è¨ï¼ãããªãã¯ã¾ãã¯ãã©ã¤ãã¼ãï¼
import,export
ããããJavaScriptã¯ãã®è¨èªãããæè»½ã§ä¾¿å©ãªãã®ã«ããããã«ããã¼ã¯ã³ã¹ããªã¼ã ãå¦çããéã«ã»ãã³ãã³ãèªåçã«æ¿å ¥ãããã¨ãããã䏿£ãªãã¼ã¯ã³åãæå¹ãªæ§æã«ãä¿®æ£ããããã¨ãã§ãã¾ãããã®æé ã¯ãããã°ã©ã ããã¹ããå奿æ³ã«å¾ã£ã¦ãã¼ã¯ã³ã«è§£éãããå¾ã«è¡ããã¾ããã»ãã³ãã³ãèªåçã«æ¿å ¥ãããã±ã¼ã¹ã¯ 3 ã¤ããã¾ãã
1. ææ³ä¸è¨±ãããªããã¼ã¯ã³ã«åºä¼ã£ãã¨ãããããåã®ãã¼ã¯ã³ããå°ãªãã¨ã 1 ã¤ã®æ¹è¡æåï¼1 ã¤ä»¥ä¸ã®æ¹è¡ãå«ããããã¯ã³ã¡ã³ããå«ãï¼ã§åºåããã¦ãããããã®ãã¼ã¯ã³ã "}" ã§ããã°ããã®åã«ã»ãã³ãã³ãæ¿å ¥ããã¾ãã
{ 1
2 } 3
// ä¸è¨ã®æã¯ã ASI ã«ãã£ã¦æ¬¡ã®ããã«å¤æããã¾ã
{ 1
;2 ;} 3;
// 3 ã¤ã®æãã¨ã³ã³ã¼ãããæ£ããææ³ã§ã
// ãããããæ°å¤ãªãã©ã«ã§æ§æããã¦ãã¾ã
do...while ã®æ«å°¾ã® ")" ã¯ããã®ã«ã¼ã«ã§ãç¹å¥ãªã±ã¼ã¹ã¨ãã¦æ±ããã¾ãã
do {
// â¦
} while (condition) /* ; */ // ASI ãè¡ããã
const a = 1
ããããã»ãã³ãã³ã for æã®é ã®åºåãæåã«ãªãå ´åã¯ãã»ãã³ãã³ã¯æ¿å
¥ããã¾ããã
for (
let a = 1 // ASI ã¯è¡ãããªã
a < 10 // ASI ã¯è¡ãããªã
a++
) {}
ã¾ããã»ãã³ãã³ã空æã¨ãã¦æ¿å
¥ããããã¨ãããã¾ãããä¾ãã°ãä¸è¨ã®ã³ã¼ãã§ ")" ã®å¾ã«ã»ãã³ãã³ãæ¿å
¥ãããå ´åãç©ºã®æãifæã®æ¬ä½ã¨ãªããconst 宣è¨ãå¥åã®æã¨ãªãããããã®ã³ã¼ãã¯æå¹ã«ãªãã¾ããããããèªåçã«æ¿å
¥ãããã»ãã³ãã³ã¯ç©ºæã«ã¯ãªããªãããã宣è¨ã if æã®æ¬ä½ã¨ãªã£ã¦ãã¾ããç¡å¹ã«ãªãã¾ãã
if (Math.random() > 0.5)
const x = 1 // SyntaxError: Unexpected token 'const'
2. ãã¼ã¯ã³ã®å ¥åã¹ããªã¼ã ã®æ«å°¾ãæ¤åºããããã¼ãµã¼ãåä¸ã®å ¥åã¹ããªã¼ã ãå®å ¨ãªããã°ã©ã ã¨ãã¦è§£éã§ããªãå ´åãæ«å°¾ã«ã»ãã³ãã³ãæ¿å ¥ããã¾ãã
const a = 1 /* ; */ // ASI ãè¡ããã
ãã®ã«ã¼ã«ã¯ååã®ã«ã¼ã«ãè£å®ãããã®ã§ãç¹ã«ãåé¡ã®ãããã¼ã¯ã³ãããªããå ¥åã¹ããªã¼ã ãçµãã£ã¦ããå ´åãæ³å®ãã¦ãã¾ãã
3. ææ³ä¸ã§æ¹è¡ãç¦æ¢ããã¦ããå ´æã§æ¹è¡ãè¦ã¤ãã£ãå ´åã¯ãã»ãã³ãã³ãæ¿å ¥ãã¾ãããã®ãããªå ´æã¯ã以ä¸ã®éãã§ãã
å¼ <ãã> ++,å¼ <ãã> --continue <ãã> ã©ãã«break <ãã> ã©ãã«return <ãã> å¼throw <ãã> å¼yield <ãã> å¼yield <ãã> * å¼(param) <ãã> => {}async <ãã> function,async <ãã> prop(),async <ãã> function*,async <ãã> *prop(),async <ãã> (param) <ãã> => {}using <ãã> id,await <ãã> using <ãã> id
ããã§ ++ ã¯ã夿° b ã«é©ç¨ãããå¾ç½®æ¼ç®åã¨ãã¦ã¯æ±ããã¾ãããã¨ããã®ããæ¹è¡æåã b ã¨++ ã®éã«ããããã§ãã
a = b
++c
// ä¸è¨ã®æã¯ã ASI ã«ãã£ã¦æ¬¡ã®ããã«å¤æããã¾ã
a = b;
++c;
ããã§ã¯ã return æã¯ undefined ãè¿ãã a + b ã¯å°éã§ããªãæã«ãªãã¾ãã
return
a + b
// ä¸è¨ã®æã¯ã ASI ã«ãã£ã¦æ¬¡ã®ããã«å¤æããã¾ã
return;
a + b;
ASI ã¯ãæ¹è¡ããªããã°ç¡å¹ãªæ§æãçæãããããªãã¼ã¯ã³ãåºåã£ãå ´åã«ã®ã¿çºçãããã¨ã«æ³¨æãã¦ãã ãããæ¬¡ã®ãã¼ã¯ã³ãæå¹ãªæ§æã®ä¸é¨ã¨ãã¦è§£éã§ããå ´åã¯ãã»ãã³ãã³ã¯æ¿å ¥ããã¾ãããä¾ãã°ã
const a = 1
(1).toString()
const b = 1
[1, 2, 3].forEach(console.log)
() ã¯é¢æ°å¼ã³åºãã¨è¦ãªããã®ã§ãé常㯠ASI ãçºçããªãã§ããããåæ§ã«ã [] ã¯ã¡ã³ãã¼ã¢ã¯ã»ã¹ã§ããå¯è½æ§ãããã¾ããä¸ã®ã³ã¼ãã¯æ¬¡ã®ãã®ã¨åçã§ãã
const a = 1(1).toString();
const b = 1[1, 2, 3].forEach(console.log);
ããã¯æå¹ãªæ§æã«ãªãã¾ãã1[1,2,3] ã¯ã«ã³ãã§çµåãããå¼ã®ããããã£ã¢ã¯ã»ãµã¼ã§ãããã®ãããã³ã¼ããå®è¡ãã㨠"1 is not a function" ã "Cannot read properties of undefined (reading 'forEach')" ãªã©ã®ã¨ã©ã¼ãçºçãããã¨ã«ãªãã¾ãã
ã¯ã©ã¹å ã§ã¯ãã¯ã©ã¹ãã£ã¼ã«ããã¸ã§ãã¬ã¼ã¿ã¼ã¡ã½ãããè½ã¨ãç©´ã«ãªããã¨ãããã¾ãã
class A {
a = 1
*gen() {}
}
ããã¯æ¬¡ã®ããã«ãªãã¾ãã
class A {
a = 1 * gen() {}
}
ãããã£ã¦ã { ã®ãããã§æ§æã¨ã©ã¼ã«ãªãã¾ãã
ã»ãã³ãã³ãªãã®ã¹ã¿ã¤ã«ãå¼·å¶ãããå ´åãASI ãæ±ãã«ã¯ä»¥ä¸ã®çµé¨åãããã¾ãã
-
å¾ç½®å
++ããã³--ã¯ãªãã©ã³ãã¨åãè¡ã«ç½®ãã¾ããããjsconst a = b ++ console.log(a) // ReferenceError: Invalid left-hand side expression in prefix operationjsconst a = b++ console.log(a) -
return,throw,yieldã®å¾ã®å¼ã¯ããã¼ã¯ã¼ãã¨åãè¡ã«ç½®ãã¾ããããjsfunction foo() { return 1 + 1 // Returns undefined; 1 + 1 is ignored }jsfunction foo() { return 1 + 1 } function foo() { return ( 1 + 1 ) } -
åæ§ã«ã
breakãcontinueã®å¾ã®ã©ãã«èå¥åã¯ããã¼ã¯ã¼ãã¨åãè¡ã«ç½®ãã¾ããããjsouterBlock: { innerBlock: { break outerBlock // SyntaxError: Illegal break statement } }jsouterBlock: { innerBlock: { break outerBlock } } -
ã¢ãã¼é¢æ°ã®
=>ã¯å¼æ°ã¨åãè¡ã«ç½®ãã¾ããããjsconst foo = (a, b) => a + bjsconst foo = (a, b) => a + b -
éåæé¢æ°ãã¡ã½ãããªã©ã®
asyncã®ç´å¾ã«æ¹è¡ãç½®ããã¨ã¯ã§ãã¾ãããjsasync function foo() {}jsasync function foo() {} -
usingãã¼ã¯ã¼ããusingæããã³await usingæã§ä½¿ç¨ããå ´åã宣è¨ããæåã®èå¥åã¨åãè¡ã«è¨è¿°ããå¿ è¦ãããã¾ããjsusing resource = acquireResource()jsusing resource = acquireResource() -
(,[,`,+,-,/ï¼æ£è¦è¡¨ç¾ãªãã©ã«ã¨ãã¦ï¼ã®ããããã§å§ã¾ãè¡ã¯ããã®åã«ã»ãã³ãã³ãç½®ãããåã®è¡ãã»ãã³ãã³ã§çµããããããã¾ããããjs// ãã® () ã¯åã®è¡ã¨çµåãã¦é¢æ°å¼ã³åºãã¨ãªãå¯è½æ§ããã (() => { // ⦠})() // ãã® [ ã¯åã®è¡ã¨çµåãã¦ããããã£ã¢ã¯ã»ã¹ã¨ãªãå¯è½æ§ããã [1, 2, 3].forEach(console.log) // ãã® ` ã¯åã®è¡ã¨çµåãã¦ã¿ã°ä»ããã³ãã¬ã¼ããªãã©ã«ã¨ãªãå¯è½æ§ããã `string text ${data}`.match(pattern).forEach(console.log) // ãã® + ã¯åã®è¡ã¨çµåãã¦äºé + å¼ã¨ãªãå¯è½æ§ããã +a.toString() // ãã® - ã¯åã®è¡ã¨çµåãã¦äºé - å¼ã¨ãªãå¯è½æ§ããã -a.toString() // ãã® / ã¯åã®è¡ã¨çµåãã¦é¤ç®å¼ã¨ãªãå¯è½æ§ããã /pattern/.exec(str).forEach(console.log)js;(() => { // ⦠})() ;[1, 2, 3].forEach(console.log) ;`string text ${data}`.match(pattern).forEach(console.log) ;+a.toString() ;-a.toString() ;/pattern/.exec(str).forEach(console.log) -
ã¯ã©ã¹ã®ãã£ã¼ã«ãã¯ãã§ããã°å¸¸ã«ã»ãã³ãã³ã§çµããããã«ãã¾ããããä¸ã¤åã®ã«ã¼ã«ï¼ãã£ã¼ã«ã宣è¨ã®å¾ã«è¨ç®ãããããããã£ãç¶ãã¨ããã®å¾ã¯
[ã§å§ã¾ãï¼ã«å ãã¦ãã»ãã³ãã³ã¯ãã£ã¼ã«ã宣è¨ã¨ã¸ã§ãã¬ã¼ã¿ã¼ã¡ã½ããã®éã«ãå¿ è¦ã§ããjsclass A { a = 1 [b] = 2 *gen() {} // Seen as a = 1[b] = 2 * gen() {} }jsclass A { a = 1; [b] = 2; *gen() {} }
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- ææ³ã¨ãã¼ã¿åã¬ã¤ã
- Micro-feature from ES6, now in Firefox Aurora and Nightly: binary and octal numbers (Jeff Walden, 2013)
- JavaScript character escape sequences (Mathias Bynens, 2011)