Skip to content

Commit d890089

Browse files
committed
feat(opreator): Logical assignment operatorsの追加
1 parent 2402d46 commit d890089

File tree

1 file changed

+85
-70
lines changed

1 file changed

+85
-70
lines changed

source/basic/operator/README.md

+85-70
Original file line numberDiff line numberDiff line change
@@ -696,76 +696,6 @@ console.log((-9) >>> 2); // => 1073741821
696696

697697
<!-- textlint-enable eslint -->
698698

699-
## 代入演算子(`=`) {#assignment-operator}
700-
701-
代入演算子(`=`)は変数に対して値を代入します。
702-
代入演算子については「[変数と宣言](../variables/README.md)」の章も参照してください。
703-
704-
{{book.console}}
705-
```js
706-
let x = 1;
707-
x = 42;
708-
console.log(x); // => 42
709-
```
710-
711-
また、代入演算子は二項演算子と組み合わせて利用できます。
712-
`+=``-=``*=``/=``%=``<<=``>>=``>>>=``&=``^=``|=`のように、演算した結果を代入できます。
713-
714-
```js
715-
let num = 1;
716-
num += 10; // num = num + 10; と同じ
717-
console.log(num); // => 11
718-
```
719-
720-
### [ES2015] 分割代入(Destructuring assignment) {#destructuring-assignment}
721-
722-
今まで見てきた代入演算子は1つの変数に値を代入するものでした。
723-
分割代入を使うことで、配列やオブジェクトの値を複数の変数へ同時に代入できます。
724-
分割代入は短縮記法のひとつでES2015から導入された構文です。
725-
726-
分割代入は、代入演算子(`=`)を使うのは同じですが、左辺のオペランドが配列リテラルやオブジェクトリテラルとなります。
727-
728-
次のコードでは、右辺の配列の値を、左辺の配列リテラルの対応するインデックスに書かれた変数名へ代入します。
729-
730-
{{book.console}}
731-
```js
732-
const array = [1, 2];
733-
// aには`array`の0番目の値、bには1番目の値が代入される
734-
const [a, b] = array;
735-
console.log(a); // => 1
736-
console.log(b); // => 2
737-
```
738-
739-
これは、次のように書いたのと同じ結果になります。
740-
741-
```js
742-
const array = [1, 2];
743-
const a = array[0];
744-
const b = array[1];
745-
```
746-
747-
同様にオブジェクトも分割代入に対応しています。
748-
オブジェクトの場合は、右辺のオブジェクトのプロパティ値を、左辺に対応するプロパティ名へ代入します。
749-
750-
{{book.console}}
751-
```js
752-
const obj = {
753-
"key": "value"
754-
};
755-
// プロパティ名`key`の値を、変数`key`として定義する
756-
const { key } = obj;
757-
console.log(key); // => "value"
758-
```
759-
760-
これは、次のように書いたのと同じ結果になります。
761-
762-
```js
763-
const obj = {
764-
"key": "value"
765-
};
766-
const key = obj.key;
767-
```
768-
769699
## 論理演算子 {#logical-operator}
770700

771701
論理演算子は基本的に真偽値を扱う演算子でAND(かつ)、OR(または)、NOT(否定)を表現できます。
@@ -1061,6 +991,91 @@ console.log(addPrefix("文字列")); // => "デフォルト:文字列"
1061991
console.log(addPrefix("文字列", "カスタム:")); // => "カスタム:文字列"
1062992
```
1063993

994+
## 代入演算子(`=`) {#assignment-operator}
995+
996+
代入演算子(`=`)は変数に対して値を代入します。
997+
代入演算子については「[変数と宣言](../variables/README.md)」の章も参照してください。
998+
999+
{{book.console}}
1000+
```js
1001+
let x = 1;
1002+
x = 42;
1003+
console.log(x); // => 42
1004+
```
1005+
1006+
また、代入演算子は二項演算子と組み合わせて利用できます。
1007+
`+=``-=``*=``/=``%=``<<=``>>=``>>>=``&=``^=``|=`のように、演算した結果を代入できます。
1008+
1009+
{{book.console}}
1010+
```js
1011+
let num = 1;
1012+
num += 10; // num = num + 10; と同じ
1013+
console.log(num); // => 11
1014+
```
1015+
1016+
また、ES2021から代入演算子と論理演算子の組み合わせもできるようになっています。
1017+
`&&=``||=``??=`のように、論理演算子の評価に基づいて代入できます。
1018+
1019+
{{book.console}}
1020+
<!-- doctest:meta:{ "ECMAScript": 2021 } -->
1021+
```js
1022+
// `a`がtrueのときに、`a``b`を代入する
1023+
a &&= b;
1024+
// `a`がfalseのときに、`a``b`を代入する
1025+
a ||= b;
1026+
// `a`がnullishのときに`a``b`を代入する
1027+
a ??= b;
1028+
```
1029+
1030+
### [ES2015] 分割代入(Destructuring assignment) {#destructuring-assignment}
1031+
1032+
今まで見てきた代入演算子は1つの変数に値を代入するものでした。
1033+
分割代入を使うことで、配列やオブジェクトの値を複数の変数へ同時に代入できます。
1034+
分割代入は短縮記法のひとつでES2015から導入された構文です。
1035+
1036+
分割代入は、代入演算子(`=`)を使うのは同じですが、左辺のオペランドが配列リテラルやオブジェクトリテラルとなります。
1037+
1038+
次のコードでは、右辺の配列の値を、左辺の配列リテラルの対応するインデックスに書かれた変数名へ代入します。
1039+
1040+
{{book.console}}
1041+
```js
1042+
const array = [1, 2];
1043+
// aには`array`の0番目の値、bには1番目の値が代入される
1044+
const [a, b] = array;
1045+
console.log(a); // => 1
1046+
console.log(b); // => 2
1047+
```
1048+
1049+
これは、次のように書いたのと同じ結果になります。
1050+
1051+
```js
1052+
const array = [1, 2];
1053+
const a = array[0];
1054+
const b = array[1];
1055+
```
1056+
1057+
同様にオブジェクトも分割代入に対応しています。
1058+
オブジェクトの場合は、右辺のオブジェクトのプロパティ値を、左辺に対応するプロパティ名へ代入します。
1059+
1060+
{{book.console}}
1061+
```js
1062+
const obj = {
1063+
"key": "value"
1064+
};
1065+
// プロパティ名`key`の値を、変数`key`として定義する
1066+
const { key } = obj;
1067+
console.log(key); // => "value"
1068+
```
1069+
1070+
これは、次のように書いたのと同じ結果になります。
1071+
1072+
```js
1073+
const obj = {
1074+
"key": "value"
1075+
};
1076+
const key = obj.key;
1077+
```
1078+
10641079
## グループ化演算子(`(``)`) {#group-operator}
10651080

10661081
グループ化演算子は複数の二項演算子が組み合わさった場合に、演算子の優先順位を明示できる演算子です。

0 commit comments

Comments
 (0)