We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

この翻訳は不完全です。英語から この記事を翻訳 してください。

この章では 代入、比較、算術、ビット、論理、文字列、三項演算子などに関わるJavaScript の式 (expression)  や演算子 (operator) について説明しています。

演算子と式について網羅した詳しいリストはリファレンスでもご覧いただけます。

演算子

JavaScript では以下の種類の演算子を使用できます。この節では演算子の優先順位についての説明も含めて演算子について説明します。

二項演算子、三項演算子も具備しており、さらには三項演算子や条件演算子も備えております。二項演算子は以下のような形で operator を一つ、その前後となるように operand が二つ必要となります。

operand1 operator operand2

例えば 3+4x*y です。

単項演算子は operator の前後いずれかに、一つの operand が必要です。

operator operand

もしくは

operand operator

例えば x++++x です。

代入演算子

代入演算子は右オペランドの値を元に、左のオペランドへ値を代入するものです。簡単なものでは equal (=) があり、右オペランドの値を左オペランドへ代入します。つまり、 x = y では y の値を x へ代入することになります。

以下の表にまとめられているように演算子を省略した複合代入演算子というものもあります。

複合代入演算子
名称 略記演算子 意味
代入 x = y x = y
加算代入 x += y x = x + y
減算代入 x -= y x = x - y
乗算代入 x *= y x = x * y
除算代入 x /= y x = x / y
剰余代入 x %= y x = x % y
べき乗代入 x **= y x = x ** y
左シフト代入 x <<= y x = x << y
右シフト代入 x >>= y x = x >> y
符号なし右シフト代入 x >>>= y x = x >>> y
ビット論理積 (AND) 代入 x &= y x = x & y
ビット排他的論理和 (XOR) 代入 x ^= y x = x ^ y
ビット論理和 (OR) 代入 x |= y x = x | y

分割代入

より複雑な代入方法、分割代入構文は、配列やオブジェクトのリテラル構造を反映した構文を用いて、配列やオブジェクトからデータを抽出することができる  JavaScript の式です。

var foo = ['one', 'two', 'three'];

// 分割を行わない代入
var one   = foo[0];
var two   = foo[1];
var three = foo[2];

// 分割代入
var [one, two, three] = foo;

比較演算子

比較演算子は被演算子を比較して、その結果が真であるかに基づいて論理値を返します。被演算子には数値、文字列、論理値、オブジェクトを使用できます。文字列は Unicode を用い、標準的な辞書順に基づいて比較されます。ほとんどの場合、2つの被演算子が異なる型ならば JavaScript はその被演算子を比較に適した型に変換しようとします。こうした挙動により、一般的に被演算子は数値的に比較される結果となります。このルールの唯一の例外は === および !== で、これらは「厳密に」等値か否かを判断し、等値性をチェックする前に被演算子を適合する型に変換しません。次の表では、以下のサンプルコードで定義された変数を前提として比較演算子を説明していきます。

var var1 = 3;
var var2 = 4;
比較演算子
演算子 説明 true を返す例
等価 (==) 被演算子が等しい場合に true を返します。 3 == var1

"3" == var1

3 == '3'
不等価 (!=) 被演算子が等しくない場合に true を返します。 var1 != 4
var2 != "3"
厳密等価 (===) 被演算子が等しく、かつ同じ型である場合に true を返します。 Object.isJavsScript での等価も参照してください。 3 === var1
厳密不等価 (!==) 被演算子が等しくなく、かつ/または同じ型でない場合に true を返します。 var1 !== "3"
3 !== '3'
より大きい (>) 左の被演算子が右の被演算子よりも大きい場合に true を返します。 var2 > var1
"12" > 2
以上 (>=) 左の被演算子が右の被演算子以上である場合に true を返します。 var2 >= var1
var1 >= 3
より小さい (<) 左の被演算子が右の被演算子よりも小さい場合に true を返します。 var1 < var2
"2" < 12
以下 (<=) 左の被演算子が右の被演算子以下である場合に true を返します。 var1 <= var2
var2 <= 5

メモ: (=>) は演算子ではなく、アロー関数を表す記法です。

算術演算子

算術演算子は被演算子として数値(リテラルまたは変数)をとり、1つの数値を返します。標準的な算術演算子は、加算 (+)、減算 (-)、乗算 (*)、除算 (/) です。これらの演算子は、他のほとんどのプログラミング言語で浮動小数点数を用いた場合と同じように機能します(特に、0で除算をすると Infinity になることに注意してください)。例えば以下のようになります。

1 / 2; // 0.5
1 / 2 == 1.0 / 2.0; // true になります

標準的な算術演算子に加え、さらに JavaScript では、以下の表で示す算術演算子も使用できます。

算術演算子
演算子 説明
剰余 (%) 二項演算子です。2つの被演算子で除算したときの、整数の余りを返します。 12 % 5 は2を返します。
インクリメント (++) 単項演算子です。被演算子に1を加えます。前置演算子 (++x) として用いると、被演算子に1を加えた後にその値を返します。後置演算子 (x++) として用いると、被演算子に1を加える前にその値を返します。 x が3の場合、++xx に4を設定して4を返します。一方、x++ は3を返したあと x に4を設定します。
デクリメント (--) 単項演算子です。被演算子から1を引きます。戻り値はインクリメント演算子のものと同様です。 x が3の場合、--xx に2を設定して2を返します。一方、x-- は3を返したあと x に2を設定します。
単項符号反転 (-) 単項演算子です。被演算子の符号を反転して、その値を返します。 x が3のとき、-x は -3 を返します。
単項プラス (+) 単項演算子です。数値でない被演算子の数値への変換を試みます。 +"3"3 を返します。
+true1 を返します。
指数演算子 (**) 基数部指数部乗したものを計算します、つまり、基数部指数部 となります。 2 ** 38 を返します。
10 ** -10.1 を返します。

ビット演算子

ビット演算子はその被演算子を10進数や16進数や8進数ではなく、32個のビットの集合(0と1)として扱います。例えば、10進数の9の2進表現は1001です。ビット演算子はこのように2進表現にした上で演算を行いますが、JavaScript において標準的な10進数表現の数値を返します。

次の表は JavaScript のビット演算子の概要です。

ビット演算子
演算子 使用法 説明
ビット論理積 (AND) a & b 被演算子の対応するビットがともに1である各ビットについて1を返します。
ビット論理和 (OR) a | b 被演算子の対応するビットがともに0である各ビットについて0を返します。
ビット排他的論理和 (XOR) a ^ b 被演算子の対応するビットが同じ各ビットについて0を返します。
[被演算子の対応するビットが異なる各ビットについて1を返します。]
ビット否定 (NOT) ~ a 被演算子の各ビットを反転します。
左シフト a << b

2進表現の ab ビット分だけ左にシフトします。右から0で詰めます。

符号維持右シフト a >> b 2進表現の ab ビット分だけ右にシフトします。溢れたビットは破棄します。
ゼロ埋め右シフト a >>> b 2進表現の ab ビット分だけ右にシフトします。溢れたビットは破棄し、左から0で詰めます。

ビット論理演算子

概念上、ビット論理演算子は以下のように機能します。

  • 被演算子の値は32ビットの整数に変換され、0もしくは1からなるビット列として表現されます。32 ビットを超える数値は、32 ビットを超えた部分が捨てられます。次の例では、32 ビットを超える整数が、32 ビットの整数に変換されています。
    変換前: 11100110111110100000000000000110000000000001
    変換後:             10100000000000000110000000000001
  • 第1被演算子の各ビットは第2被演算子の対応する各ビットと対になります。第1ビットと第1ビット、 第2ビットと第2ビット、以下同様に。
  • 演算子は各ビットのペアに適用され、結果はビットごとに構成されます。

例えば9の2進表現は1001で、15の2進表現は1111です。したがって、ビット演算子がこれらの値に適用されたときの結果は以下のようになります。

ビット演算子の例
演算式 結果 2進数での説明
15 & 9 9 1111 & 1001 = 1001
15 | 9 15 1111 | 1001 = 1111
15 ^ 9 6 1111 ^ 1001 = 0110
~15 -16 ~00000000...00001111 = 11111111...11110000
~9 -10 ~00000000...00001001 = 11111111...11110110

ビット否定演算子を使うと32ビットすべてが反転し、その値の最上位(最左)ビットは負数を表す1に設定される(2の補数表現)ことに注意してください。 ~x-x - 1 と同じ値に評価されます。

ビットシフト演算子

ビットシフト演算子は2つの被演算子をとります。第1被演算子はシフトされる数を指定し、第2被演算子は、第1被演算子をシフトさせるビット数を指定します。シフト演算の方向は使用する演算子によって決まります。

シフト演算子はその被演算子を32ビット整数に変換し、左の被演算子と同じ型で結果を返します。

シフト演算子の種類は次表のとおりです。

ビットシフト演算子
演算子 説明
左シフト
(<<)
この演算子は、第1被演算子を指定したビット数分だけ左にシフトします。左に溢れたビットは破棄されます。0 のビットを右から詰めます。 9<<2 の結果は36になります。1001を2ビット左にシフトすると100100になり、これは36となるからです。
符号維持右シフト (>>) この演算子は、第1被演算子を指定したビット数分だけ右にシフトします。右に溢れたビットは破棄されます。左端のビットのコピーを左から詰めます。 9>>2 の結果は2になります。1001を2ビット右にシフトすると10であり、これは2となるからです。同様に、-9>>2 の結果は、符号が維持されるため -3 になります。
ゼロ埋め右シフト (>>>) この演算子は、第1被演算子を指定したビット数分だけ右にシフトします。右に溢れたビットは破棄されます。0 のビットを左から詰めます。 19>>>2 の結果は4になります。10011 を2ビット右にシフトすると100になり、これは4となるからです。非負数では、0 埋め右シフトと符号を維持した右シフトは同じ結果になります。

論理演算子

論理演算子では、基本的にブール値 (Boolean value)(論理)値を用います。つまりブール値を取ると、ブール値を返します。しかし && および || 演算子については、実際には指定された被演算子の一方の値を返します。そのため、非ブール値とともに論理演算子が使われた場合、非ブール値を返す可能性があります。次表で論理演算子について説明します。

論理演算子
演算子 使用法 説明
論理積 (AND) (&&) expr1 && expr2 expr1 を false と見ることができる場合は、expr1 を返します。そうでない場合は expr2 を返します。したがってブール値を用いた場合、両被演算子が true であれば && は true を返し、そうでなければ false を返します。
論理和 (OR) (||) expr1 || expr2 expr1 を true と見ることができる場合は、expr1 を返します。そうでない場合は expr2 を返します。したがってブール値を用いた場合、どちらかの被演算子が true であれば || は true を返し、両方とも false であれば false を返します。
論理否定 (NOT) (!) !expr 単一の被演算子を true と見ることができる場合は、false を返します。そうでない場合は true を返します。

false に変換される式としては、 null、0、 NaN、空文字列 ("")、 undefined に評価される式が挙げられます。

以下のコードで && (論理 AND) 演算子の例を示します。

var a1 =  true && true;     // t && t は true を返す
var a2 =  true && false;    // t && f は false を返す
var a3 = false && true;     // f && t は false を返す
var a4 = false && (3 == 4); // f && f は false を返す
var a5 = 'Cat' && 'Dog';    // t && t は Dog を返す
var a6 = false && 'Cat';    // f && t は false を返す
var a7 = 'Cat' && false;    // t && f は false を返す

以下のコードで || (論理 OR) 演算子の例を示します。

var o1 =  true || true;     // t || t は true を返す
var o2 = false || true;     // f || t は true を返す
var o3 =  true || false;    // t || f は true を返す
var o4 = false || (3 == 4); // f || f は false を返す
var o5 = 'Cat' || 'Dog';    // t || t は Cat を返す
var o6 = false || 'Cat';    // f || t は Cat を返す
var o7 = 'Cat' || false;    // t || f は Cat を返す

以下のコードで !(論理 NOT) 演算子の例を示します。

var n1 = !true;  // !t は false を返す
var n2 = !false; // !f は true を返す
var n3 = !'Cat'; // !t は false を返す

短絡評価

論理式は左から右に評価されるため、以下のルールを用いた「短絡 (short-circuit)」評価によるテストが実行できます。

  • false && anything は false へと短絡評価されます。
  • true || anything は true へと短絡評価されます。

論理的なルールにより、これらの評価が常に正確であることが保証されます。上記の式で anything の部分は評価されないため、このようにしても副作用が生じないことに注意してください。

文字列演算子

文字列に対して使用することができる演算子には、比較演算子に加えて、2つの文字列を結合する結合演算子 (+) があり、2つの被演算子の文字列を結合した文字列を返します。

例えば、

console.log('my ' + 'string'); // 文字列 "my string" がログに表示される。

短縮表記した代入演算子 += も文字列の結合に使用できます。

例えば、

var mystring = 'alpha';
mystring += 'bet'; // "alphabet" と評価されて、mystring にその値を代入します。

条件(三項)演算子

条件演算子は JavaScript で唯一3つの被演算子を取る演算子です。条件に基づいて2つの値のうち1つを選択します。構文は以下の通りです。

条件 ? 値1 : 値2

条件が真の場合、演算子は値1の値を選択します。そうでない場合、値2の値を選択します。標準的な演算子を使用できる場所ならどこでも条件演算子を使用できます。

例えば、

var status = (age >= 18) ? 'adult' : 'minor';

この文では、age が18以上の場合、変数 status に "adult" の値が代入されます。そうでない場合 status には "minor" が代入されます。

コンマ演算子

コンマ演算子 (,) は両側の被演算子を単純に評価し、最後の被演算子の値を返します。この演算子は主に for ループ内で使用され、これによりループのたびに複数の変数を更新できます。

例えば、一辺が10要素の2次元配列 a があったとして、以下のコードでコンマ演算子を用いて2つの変数を同時にインクリメントしています。このコードでは配列の対角成分の値を出力します。

var x = [0,1,2,3,4,5,6,7,8,9]
var a = [x, x, x, x, x];

for (var i = 0, j = 9; i <= j; i++, j--)
  console.log('a[' + i + '][' + j + ']= ' + a[i][j]);

単項演算子

単項演算は被演算子を1つだけを取る演算です。

delete

delete 演算子はオブジェクトやオブジェクトのプロパティ、配列の指定された添字の要素を削除します。構文は以下のとおりです。

delete オブジェクト名;
delete オブジェクト名.プロパティ;
delete オブジェクト名[添字];
delete プロパティ; // with 文内でのみ有効

ここでオブジェクト名はオブジェクトの名前を、プロパティは既存のプロパティを、添字は配列の要素の位置を示す整数をそれぞれ表しています。

4番目の形式は with 文内でのみ有効で、これはあるオブジェクトからプロパティを削除します。

delete を用いて暗黙的に宣言された変数を削除できますが、 var 文で宣言された変数は削除できません。

delete 演算が成功すると、そのプロパティや要素には undefined がセットされます。また、演算が可能だった場合に delete 演算子は true を返します。演算が不可能である場合は false を返します。

x = 42;
var y = 43;
myobj = new Number();
myobj.h = 4;    // プロパティ h を作成
delete x;       // true を返す (暗黙的に定義された場合は削除可)
delete y;       // false を返す (var つきで宣言された場合は削除不可能)
delete Math.PI; // false を返す (定義済みプロパティは削除不可能)
delete myobj.h; // true を返す (ユーザー定義プロパティは削除可能)
delete myobj;   // true を返す (暗黙的に宣言された場合は削除可能)
配列要素の削除

配列の要素を削除したとき、配列の長さは影響を受けません。例えば a[3] を削除したとき、a[4] は依然 a[4] のままで、a[3] は undefined になります。

delete 演算子で配列要素を除去すると、もうその要素は配列からなくなります。次の例で trees[3]delete によって除去されます。しかし、trees[3] は依然指し示すことが可能であり、undefined を返します。

var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
delete trees[3];
if (3 in trees) {
  // この部分は実行されません
}

配列要素は存在させたいが値は未定義にしたい場合は、delete 演算子の代わりに undefined キーワードを使用してください。次の例では trees[3]undefined という値が代入されますが、その配列要素は存在したままになります。

var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
trees[3] = undefined;
if (3 in trees) {
  // この部分は実行されます
}

typeof

typeof 演算子は次の方法のうち、どちらかの方法で使用します。

typeof 被演算子
typeof (被演算子)

typeof 演算子は、未評価の被演算子の型を指す文字列を返します。被演算子には返される型を調べる対象となる文字列、キーワード、オブジェクトを指定します。括弧はあってもなくてもかまいません。

以下の変数を定義することにしましょう。

var myFun = new Function('5 + 2');
var shape = 'round';
var size = 1;
var foo = ['Apple', 'Mango', 'Orange'];
var today = new Date();

typeof 演算子は、変数の型に応じて以下の値を返します。

typeof myFun;       // "function" を返す
typeof shape;       // "string" を返す
typeof size;        // "number" を返す
typeof foo;         // "object" を返す
typeof today;       // "object" を返す
typeof doesntExist; // "undefined" を返す

truenull というキーワードに対して、typeof 演算子は以下の結果を返します。

typeof true; // "boolean" を返す
typeof null; // "object" を返す

数値や文字列に対して、typeof 演算子は以下の結果を返します。

typeof 62;            // "number" を返す
typeof 'Hello world'; // "string" を返す

プロパティ値に対して、typeof 演算子はプロパティが持つ値の型を返します。

typeof document.lastModified; // "string" を返す
typeof window.length;         // "number" を返す
typeof Math.LN2;              // "number" を返す

メソッドや関数に対して、typeof 演算子は以下の結果を返します。

typeof blur;        // "function" を返す
typeof eval;        // "function" を返す
typeof parseInt;    // "function" を返す
typeof shape.split; // "function" を返す

定義済みオブジェクトに対して、typeof 演算子は以下の結果を返します。

typeof Date;     // "function" を返す
typeof Function; // "function" を返す
typeof Math;     // "object" を返す
typeof Option;   // "function" を返す
typeof String;   // "function" を返す

void

void 演算子は以下のどちらかの方法で使用します。

void (式)
void 式

void 演算子は、値を返さずに評価する式を指定します。は評価する JavaScript の式となります。式の周りの括弧はあってもなくてもかまいませんが、使用する方が見た目がよいです。

void 演算子を使用することで、式をハイパーリンクとして指定できます。式は評価されますが、開いている文書の代わりに読み込まれることはありません。

以下のコードは、ユーザーがクリックしても何も起こらないハイパーリンクを生成します。ユーザーがリンクをクリックすると void(0)undefined になり、 JavaScript としては影響を及ぼしません。

<a href="javascript:void(0)">Click here to do nothing</a>

以下のコードは、ユーザーがクリックするとフォームが送信されるハイパーリンクを生成します。

<a href="javascript:void(document.form.submit())">
Click here to submit</a>

関係演算子

関係演算子は被演算子を比較し、比較結果が真かどうかに基づいて Boolean の値を返します。

in

in 演算子は、指定したプロパティが指定のオブジェクトにある場合に true を返します。構文は以下のとおりです。

プロパティ名または数値 in オブジェクト名

ここで プロパティ名または数値はプロパティ名または配列の添字を表す文字列式または数値式を、オブジェクト名はオブジェクトの名前をそれぞれ表します。

次の例で in 演算子の使用法を示します。

// 配列
var 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 のプロパティ)

// 定義済みオブジェクト
'PI' in Math;          // true を返す
var myString = new String('coral');
'length' in myString;  // true を返す

// ユーザー定義オブジェクト
var mycar = { make: "Honda", model: "Accord", year: 1998 };
"make" in mycar;  // true を返す
"model" in mycar; // true を返す

instanceof

instanceof 演算子は、指定されたオブジェクトが指定されたオブジェクトの種類である場合に true を返します。構文は以下のとおりです。

オブジェクト名 instanceof オブジェクト型

ここでオブジェクト名オブジェクト型と比較するオブジェクトの名前を、オブジェクト型DateArray のようなオブジェクトの種類をそれぞれ表します。

実行時にオブジェクトの種類を確認する必要があるときは instanceof を使用してください。例えば例外を受け取るとき、発生した例外の種類に応じて、別々の例外を扱うコードに分岐することができます。

例えば次のコードでは、instanceof を使用して theDayDate オブジェクトであるかを判断しています。theDayDate オブジェクトであるため、if 文中の文が実行されます。

var theDay = new Date(1995, 12, 17);
if (theDay instanceof Date) {
  // 実行する文
}

演算子の優先順位

演算子の優先順位によって、式評価の際に演算子が適用される順番が定義されています。括弧を用いることで演算子の優先順位をオーバーライドすることができます。

次の表では演算子の優先順位を、高いものから低い順に並べています。

演算子の優先順位
演算子の種類 対応する演算子
メンバー . []
インスタンスの呼び出し/作成 () new
否定/インクリメント ! ~ - + ++ -- typeof void delete
乗算/除算 * / %
加算/減算 + -
ビットシフト << >> >>>
関係 < <= > >= in instanceof
等値 == != === !==
ビット論理積 &
ビット排他的論理和 ^
ビット論理和 |
論理積 &&
論理和 ||
条件 ?:
代入 = += -= *= /= %= <<= >>= >>>= &= ^= |=
コンマ ,

それぞれの演算子についてのリンクを含むこの表の詳細版に関しては JavaScript リファレンスを参照してください。

とは、ある値へと決定される有効な構成単位からなるコードのことです。

文法的に厳密な式は必ず何らかの値が決定されますが、副作用の有無によって2種類にわけられます。代入演算は副作用のあるものの代表です。副作用の無いものは、式そのものが評価されその値が決定されます。

x = 7 という式がこの最初の例です。この式では x に7という値を代入するのに = 演算子を使っています。この式自体は7と評価されます。

3 + 4 という式は2つ目の例です。この式では計算結果の7を変数に代入することなく3と4を加算するのに + 演算子を使っています。

JavaScript には、以下の種類の式があります。

  • 算術式 : 評価結果は数値になります。例えば3.14159など。(一般に算術演算子を使用します)
  • 文字列式 : 評価結果は文字列になります。例えば "Fred" や "234" など。(一般に文字列演算子を使用します)
  • 論理式 : 評価結果は true または false になります。(よく論理演算子を用います)
  • 基本式 : JavaScript にある基本のキーワードと一般的な式です。
  • 左辺式 : 左辺の値が代入先になるような式です。

基本式

JavaScript における基本のキーワードと一般的な式です。

this

this キーワードを使用することで現在のオブジェクトを参照できます。一般的に this は、あるメソッド内で呼び出されるオブジェクトを参照します。this の使用法は以下のとおりです。

this['propertyName']
this.propertyName

オブジェクトと上限および下限の値を渡し、そのオブジェクトの value プロパティを検証する validate という関数があるとしましょう。

function validate(obj, lowval, hival) {
  if ((obj.value < lowval) || (obj.value > hival))
    console.log('Invalid Value!');
}

次の例のように、各フォーム要素の onChange イベントハンドラにおいて validate を呼び出し、その関数にフォーム要素を渡すのに this を使うことができます。

<p>Enter a number between 18 and 99:</p>
<input type="text" name="age" size=3 onChange="validate(this, 18, 99);">

グループ化演算子

グループ化演算子 ( ) は式内での評価の優先順位を制御します。例えば、加算が最初に評価されるよう、最初に行われる演算を乗算と除算から加算と減算へとオーバーライドすることができます。

var a = 1;
var b = 2;
var c = 3;

// デフォルトの優先順位
a + b * c     // 7
// デフォルトではこのように評価される
a + (b * c)   // 7

// 優先順位をオーバーライドし、
// 乗算の前に加算を行う
(a + b) * c   // 9

// この式と同等となる
a * c + b * c // 9

内包表記

内包表記は ECMAScript の今後のバージョンで導入予定の JavaScript における実験段階の機能です。内包表記には2つのバージョンがあります。

[for (x of y) x]
配列内包表記。
(for (x of y) y)
ジェネレーター内包表記。

内包表記は多くのプログラミング言語に存在し、例のようにすでに存在する配列を元に新しい配列を即座に構成することができます。

[for (i of [1, 2, 3]) i * i]; 
// [1, 4, 9]

var abc = ['A', 'B', 'C'];
[for (letter of abc) letter.toLowerCase()];
// ["a", "b", "c"]

左辺式

左辺値は、代入する宛先です。

new

new 演算子は、ユーザー定義オブジェクトやビルトインオブジェクトのインスタンス作成に使用します。new の使用法は以下のとおりです。

var オブジェクト名 = new objectType([引数1, 引数2, ..., 引数N]);

super

super キーワードは自分の親のオブジェクトに関数を呼び出すのに使います。これは下の例のように、クラスと共に使って親のコンストラクタを呼び出すのに便利です。

super([引数]); // 親のコンストラクタを呼び出す。
super.親の関数([引数]);

展開演算子

展開演算子によって、複数の引数(関数を呼び出す時)や要素(配列リテラルを書く場合)がくるべき場所にそれらを展開できる式を書くことができます。

例えば現在のところ、ある配列があってその配列を一部分とする新しい配列を作りたい場合、配列リテラル構文だけでは不十分で、pushspliceconcat などを組み合わせた必要不可欠なコードに頼らなければなりません。展開演算子を使えば、これをより簡単に行なえます。

var parts = ['shoulder', 'knees'];
var lyrics = ['head', ...parts, 'and', 'toes'];

同様に、展開演算子は関数の呼び出しでも機能します。

function f(x, y, z) { }
var args = [0, 1, 2];
f(...args);

ドキュメントのタグと貢献者

最終更新者: Dar-Ishi,