JavaScript入門の書籍を読んで書いてあったこと+自分で調べたことのメモ書きその1。演算子、変数、データ型、prompt。
算術演算子
| 演算子 | 説明 |
|---|---|
| + | 加算 |
| - | 減算 |
| * | 乗算 |
| / | 除算 |
| % | 剰余 |
| ** | べき乗 |
演算子の優先順位
| 優先順位 | 演算子の種類 | 結合性 | 演算子 |
|---|---|---|---|
| 19 | グループ化 | なし | (…) |
| 18 | メンバーへのアクセス | 左から右 | ….… |
| - | new(引数リスト付き) | なし | new …(…) |
| - | 関数呼び出し | 左から右 | …(…) |
| - | オプショナルチェーン | 左から右 | ?. |
| 17 | new(引数リストなし) | 右から左 | new … |
| 16 | 後置インクリメント 後置デクリメント |
なし |
…++ …--
|
| 15 | 論理NOT | 右から左 | !… |
| - | 単項+、単項- (正負の符号) |
右から左 |
+… -…
|
| - | 前置インクリメント 前置デクリメント |
右から左 |
++… --…
|
| 14 | べき乗 | 右から左 | …**… |
| 13 | 乗算、除算、剰余 | 左から右 |
…*… …/… …%…
|
| 12 | 加算、減算 | 左から右 |
…+… …-…
|
| 10 | 小なり、小なりイコール | 左から右 |
…<… …<=…
|
| - | 大なり、大なりイコール | 左から右 |
…>… …>=…
|
| - | in (プロパティの存在確認) |
左から右 | … in … |
| - | instanceof (型の確認) |
左から右 | … instanceof … |
| 9 | 等価、不等価 | 左から右 |
…==… …!=…
|
| - | 厳密等価、厳密不等価 | 左から右 |
…===… …!==…
|
| 8~6 | ビットAND,XOR,OR | 左から右 |
…&… …^… …|…
|
| 5 | 論理AND | 左から右 | …&&… |
| 4 | 論理OR | 左から右 | …||… |
| - | Null合体演算子 | 左から右 | …??… |
| 3 | 条件(三項)演算子 | 右から左 | …?…:… |
| 2 | 代入 | 右から左 |
= += -= *= /= %= **=
|
わかりづらいと思ったら括弧でくくって明確にしておくべき。
結合性
左から右(左結合性)
・を演算子とすると、 A・B・C = (A・B)・C が成り立つ。
右から左(右結合性)
・を演算子とすると、 A・B・C = A・(B・C) が成り立つ。
JavaScriptの三項演算子は右結合なので
a ? b : c ? d : e = a ? b : (c ? d : e)
である。
※例にあげておいてなんだが、三項演算子をネストして使うのは可読性の観点からやめておいた方がいいと思う。
変数
変数名は半角英数字とアンダースコアの組み合わせで命名するのを推奨する。他にも使える文字はあるが特に使う必要がない。更に言えばアンダースコアも使わずにローワーキャメルケースで命名するのを推奨する。
データの型
プリミティブ型
値の中に1つのデータしか持てない型を プリミティブ型 という。下記はプリミティブ型である。
- 数値型(Number):
-1.5042 - 文字列型(String):
"Hello"'こんにちは' - 真偽型(Boolean):
truefalse - Null型:
null - Undefined型:
undefined
オブジェクト
プリミティブ型に対してオブジェクトがある。詳細は後日。
prompt
prompt(message[, default]) は文字列の入力を受け取る関数。
PCのchromeではテキストフィールド、OKボタン、キャンセルボタンを備えてダイアログが表示され、テキストフィールドに入力された値を文字列として返す。
let str = prompt("入力してください。");
console.log(str, typeof str);
【実行結果:"abc"と入力した場合】
abc string
【実行結果:キャンセルボタンを押した場合】
null 'object'
※typeof null の戻り値は "object" である。
参考情報
書籍
解きながら学ぶJavaScriptつみあげトレーニングブック | マイナビブックス 1章
WEBページ
演算子の優先順位 - JavaScript | MDN
演算子の右結合性、左結合性とは - Panda Noir
Window.prompt() - Web API | MDN
typeof - JavaScript | MDN