付録: JavaScriptチートシート
JavaScriptの言語機能に関するチートシートです。
言語機能
コメント
コメントの書き方について。
コード例 | 説明 | 解説 | MDN |
---|---|---|---|
// xxx |
一行コメント | コメント | 字句文法 |
/* xxx */ |
複数行コメント | コメント | 字句文法 |
<!-- xxx --> |
[ES2015] HTML-likeコメント | コメント |
データ構造
変数宣言について。
コード例 | 説明 | 解説 | MDN |
---|---|---|---|
const x |
[ES2015] 変数宣言。x に値の再代入はできない |
変数と宣言 | const |
let x |
[ES2015] 変数宣言。const と似ているが、x に値を再代入できる |
変数と宣言 | let |
var x |
変数宣言。レガシーな変数宣言方法 | 変数と宣言 | var |
リテラル
データ構造を表現するリテラルについて。
コード例 | 説明 | 解説 | MDN |
---|---|---|---|
true または false |
真偽値 | データ型とリテラル | 字句文法 |
123 |
10進数の整数リテラル | データ型とリテラル | 字句文法 |
123n |
[ES2020] 巨大な整数を表すBigIntリテラル | データ型とリテラル | 字句文法 |
0b10 |
[ES2015] 2進数の整数リテラル | データ型とリテラル | 字句文法 |
0o777 |
[ES2015] 8進数の整数リテラル | データ型とリテラル | 字句文法 |
0x30A2 |
16進数の整数リテラル | データ型とリテラル | 字句文法 |
123_456 |
[ES2021]数値リテラルにおけるNumeric Separators | データ型とリテラル | 字句文法 |
{ k: v } |
プロパティ名がk 、プロパティの値がv のオブジェクトを作成 |
オブジェクト | 文法とデータ型 |
{ n } |
[ES2015] プロパティ名がn 、プロパティの値がn のオブジェクトを作成 |
オブジェクト | オブジェクト初期化子 |
[x, y] |
x とy を初期値にもつ配列オブジェクトを作成 |
配列 | 文法とデータ型 |
/pattern/ |
pattern をもつ正規表現オブジェクトを作成 |
文字列 | 字句文法 |
null |
null 値 |
データ型とリテラル | 字句文法 |
文字列
文字列について。
コード例 | 説明 | 解説 | MDN |
---|---|---|---|
"xxx" |
ダブルクォートの文字列リテラル。改行などは\ と特定の文字を組み合わせたエスケープシーケンスとして表現します。 |
文字列 | 文法とデータ型 |
'xxx' |
シングルクォートの文字列リテラル。"xxx" と意味は同じ。 |
文字列 | 文法とデータ型 |
`xxx` |
[ES2015] テンプレート文字列リテラル。改行を含んだ入力が可能 | 文字列 | テンプレートリテラル (テンプレート文字列) |
`${x}` |
[ES2015] テンプレート文字列リテラル中の変数x の値を展開する |
文字列 | テンプレートリテラル (テンプレート文字列) |
データアクセス
データへのアクセスについて。
コード例 | 説明 | 解説 | MDN |
---|---|---|---|
array[0] |
配列へのインデックスアクセス | 配列 | Array |
obj["x"] |
オブジェクトへのプロパティアクセス(ブラケット記法) | オブジェクト | プロパティアクセサー |
obj.x |
オブジェクトへのプロパティアクセス(ドット記法) | オブジェクト | プロパティアクセサー |
obj?.x |
[ES2020] オブジェクトへのプロパティアクセス(Optional chaining演算子) | オブジェクト | オプショナルチェーン (?.) |
const { x } = obj; |
[ES2015] オブジェクトの分割代入 | オブジェクト | 分割代入 |
const [ x ] = array; |
[ES2015] 配列の分割代入 | 配列 | 分割代入 |
f(...array) |
[ES2015] Spread構文での配列の展開 | 配列 | スプレッド構文 |
f({ ...obj }) |
[ES2018] Spread構文でのオブジェクトの展開 | オブジェクト | スプレッド構文 |
演算子
演算子について。
コード例 | 説明 | 解説 | MDN |
---|---|---|---|
+ |
プラス演算子、文字列結合演算子 | 演算子 | 加算 (+) |
- |
マイナス演算子 | 演算子 | 減算 (-) |
* |
乗算演算子 | 演算子 | 乗算 (*) |
/ |
除算演算子 | 演算子 | 除算 (/) |
% |
剰余演算子 | 演算子 | 剰余 (%) |
** |
[ES2016] べき乗演算子 | 演算子 | べき乗 (**) |
++ |
インクリメント演算子 | 演算子 | インクリメント |
-- |
デクリメント演算子 | 演算子 | デクリメント (--) |
=== |
厳密等価演算子 | 演算子 | 厳密等価 (===) |
!== |
厳密不等価演算子 | 演算子 | 厳密不等価 (!==) |
== |
等価演算子 | 演算子 | 等価 (==) |
!= |
不等価演算子 | 演算子 | 不等価 (!=) |
> |
大なり演算子/より大きい | 演算子 | 大なり (>) |
>= |
大なりイコール演算子/以上 | 演算子 | 大なりイコール (>=) |
< |
小なり演算子/より小さい | 演算子 | 小なり (<) |
<= |
小なりイコール演算子/以下 | 演算子 | 小なりイコール (<=) |
& |
ビット論理積 | 演算子 | ビット論理積 (&) |
| |
ビット論理和 | 演算子 | ビット論理和 (|) |
^ |
ビット排他的論理和 | 演算子 | ビット排他的論理和 (^) |
~ |
ビット否定 | 演算子 | ビット否定 (~) |
<< |
左シフト演算子 | 演算子 | 左シフト (<<) |
>> |
右シフト演算子 | 演算子 | 右シフト (>>) |
>>> |
ゼロ埋め右シフト演算子 | 演算子 | 符号なし右シフト (>>>) |
&& |
AND演算子 | 演算子 | 論理積 (&&) |
?? |
[ES2020] Nullish coalescing演算子 | 演算子 | Null 合体演算子 (??) |
|| |
OR演算子 | 演算子 | 論理和 (||) |
(x) |
グループ演算子 | 演算子 | グループ化演算子 ( ) |
x, y |
カンマ演算子 | 演算子 | カンマ演算子 (,) |
関数と挙動
関数の定義と挙動について。
サンプル | 説明 | 解説 | MDN |
---|---|---|---|
function f(){} |
関数宣言 | 関数と宣言 | 関数宣言 |
const f = function(){}; |
関数式 | 関数と宣言 | 関数式 |
const f = () => {}; |
[ES2015] Arrow Functionの宣言 | 関数と宣言 | アロー関数式 |
async function f(){} |
[ES2017] Async Functionの宣言 | 非同期処理 | 非同期関数 |
const f = async function(){}; |
[ES2017] 関数式を使ったAsync Functionの宣言 | 非同期処理 | 非同期関数式 |
const f = async () => {}; |
[ES2017] Arrow Functionを使ったAsync Functionの宣言 | 非同期処理 | 非同期関数式 |
function f(x, y){} |
関数における仮引数の宣言 | 関数と宣言 | 関数宣言 |
function f(x = 1, y = 2){} |
デフォルト引数、引数が渡されていない場合の初期値を指定する。 | 関数と宣言 | デフォルト引数 |
function f([x, y]){} |
[ES2015] 関数の引数における配列の分割代入。引数の配列からインデックスが0 の値をx に、インデックスが1 の値をy に代入する。 |
関数と宣言 | 分割代入 |
function f({ x, y }){} |
[ES2015] 関数の引数におけるオブジェクトの分割代入。引数のオブジェクトからx とy プロパティを受け取る。 |
関数と宣言 | 分割代入 |
function f(...args)){} |
[ES2015] 可変長引数/Rest parameters。引数に渡された値を配列として受け取る | 関数と宣言 | 残余引数 |
const o = { method: function(){} }; |
メソッド定義 | 関数と宣言 | メソッド定義 |
const o = { method(){} }; |
[ES2015] メソッド定義の短縮記法 | 関数と宣言 | メソッド定義 |
class X{} |
[ES2015] クラス宣言 | クラス | class |
const X = class X{}; |
[ES2015] クラス式 | クラス | クラス式 |
class X{ method(){} } |
[ES2015] クラスのインスタンスメソッド定義 | クラス | クラス |
class X{ get x(){}, set x(v){} } |
[ES2015] クラスのアクセッサメソッドの定義 | クラス | オブジェクトでの作業 |
class X{ property = 1; } |
[ES2022] クラスのPublicクラスフィールドの定義 | クラス | パブリッククラスフィールド |
class X{ #privateField = 1; } |
[ES2022] クラスのPrivateクラスフィールドの定義 | クラス | プライベートクラス機能 |
class X{ static method(){} } |
[ES2015] クラスの静的メソッド定義 | クラス | static |
class C extends P{} |
[ES2015] クラスの継承 | クラス | extends |
super |
[ES2015] 親クラスを参照する | クラス | super |
fn() |
関数呼び出し | 関数と宣言 | 関数 |
fn`xxx` |
[ES2015] タグ関数呼び出し | 文字列 | テンプレートリテラル (テンプレート文字列) |
new X() |
new 演算子でのクラス(コンストラクタ関数をもつオブジェクト)からインスタンスを作成 |
クラス | new 演算子 |
コントロールフロー
コントロールフローの制御構文について。
例 | 説明 | 解説 | MDN |
---|---|---|---|
while(x){} |
whileループ。x がtrue なら反復処理を行う |
ループと反復処理 | while |
do{}while(x); |
do...whileループ。x がtrue なら反復処理を行う。x に関係なく必ず初回は処理が行われる |
ループと反復処理 | do...while |
for(let x=0;x < y ;x++){} |
forループ。x < y がtrue なら反復処理を行う |
ループと反復処理 | for |
for(const p in o){} |
for...inループ。オブジェクト(o )のプロパティ(p )に対して反復処理を行う |
ループと反復処理 | for...in |
for(const x of iter){} |
[ES2015] for...ofループ。イテレータ(iter )の反復処理を行う |
ループと反復処理 | for...of |
if(x){/*A*/}else{/*B*/} |
条件式。x がtrue ならAの処理を、それ以外ならBの処理を行う |
条件分岐 | if...else |
switch(x){case "A":{/*A*/} "B":{/*B*/}} |
switch文。x が"A" ならAの処理を、"B"ならBの処理を行う |
条件分岐 | switch |
x ? A: B |
条件 (三項) 演算子。x がtrue ならA の処理を、それ以外ならB の処理を行う |
条件分岐 | 条件 (三項) 演算子 |
break |
break文。現在の反復処理を終了し、ループから抜け出す。 | 条件分岐 | break |
continue |
continue文。現在の反復処理を終了し、次のループに行く。 | 条件分岐 | continue |
try{}catch(e){}finally{} |
try...catch 構文 |
例外処理 | try...catch |
throw new Error("xxx") |
throw 文 |
例外処理 | throw |
モジュール
ECMAScriptモジュールについて。
コード | 説明 | 解説 | MDN |
---|---|---|---|
import x from "./x.js" |
[ES2015] デフォルトインポート | ECMAScriptモジュール | Import |
import { x } from "./x.js" |
[ES2015] 名前付きインポート | ECMAScriptモジュール | Import |
import { x as y } from "./x.js" |
[ES2015] 名前付きインポートのエイリアス | ECMAScriptモジュール | Import |
import * as x from "./x.js" |
[ES2015] すべての名前付きエクスポートをインポートしてエイリアス | ECMAScriptモジュール | Import |
import "./x.js" |
[ES2015] 副作用のためのインポート | ECMAScriptモジュール | Import |
export default x |
[ES2015] デフォルトエクスポート | ECMAScriptモジュール | Export |
export { x } |
[ES2015] 名前付きエクスポート | ECMAScriptモジュール | Export |
export { x as y } |
[ES2015] 名前付きエクスポートのエイリアス | ECMAScriptモジュール | Export |
export { x } from "./x.js" |
[ES2015] 名前付きエクスポートの再エクスポート | ECMAScriptモジュール | Export |
export * from "./x.js" |
[ES2015] すべての名前付きエクスポートの再エクスポート | ECMAScriptモジュール | Export |
export * as ns from "./x.js" |
[ES2020] すべての名前付きエクスポートをインポートしてns という名前で再エクスポート |
ECMAScriptモジュール | Export |
その他
コード例 | 説明 | 解説 | MDN |
---|---|---|---|
x; |
文 | 文と式 | 字句文法 |
{ } |
ブロック文 | 文と式 | ブロック |
ガイド
プロジェクト構造
JavaScriptにおける基本的なプロジェクトレイアウト、ファイル、フォルダ構造について。
名前 | 説明 |
---|---|
src/ | プロジェクトのソースコード |
アプリケーションのデフォルトエントリーポイント | |
test/ | テストコード。src/ に対するユニットテストを置くことが多い |
アプリケーションのユニットテストファイル。例) index-test.js 、indexSpec.js など |
|
node_modules/ | プロジェクトが依存するnpmモジュールのインストール先 |
package.json | プロジェクトの設定ファイル。名前、説明、スクリプト、依存モジュールなど |
package-lock.json | npmが扱う依存モジュールのロックファイル |
参考