Part5:演算子

海未「今回はJavaScriptの演算子を見てみましょう。たくさんありますから覚悟してください」
穂乃果「えー」


代入演算子

海未「まずは代入演算子です。var kosaka = "honoka";みたいな文を何の説明もなく使ってきましたが、これは代入演算子=を使った代入演算です」
ことり「左辺の変数に、右辺の値を入れる、だよね?」
海未「そうです。これが一番シンプルな代入の方法ですが、例えばn += 1;のような加算代入など、様々なバリエーションがあります。個別の演算子のところで説明しますね」

海未「分割代入というやり方があります。これは、リストの中身を個別の変数に代入する場合などに使います」

kosaka
minami
sonoda


比較演算子

海未「比較演算子は左右の値を比較して、truefalseを返す演算子です」

海未「=====は左右の値が等しければtrue!=!==は左右の値が等しくなければtrueになります。===!==は型まで比較するのが特徴です」
穂乃果「==だと"252" == 252;trueになっちゃうんだ。ちょっと変な感じ」
海未「ものの本によれば==は使うべきではない機能とされていますね」


算術演算子

海未「算術演算子は名前の通り数値計算をするものです」

ことり「海未ちゃん、悪あがきはやめよう?」
海未「ええ。自分でやってて虚しくなってきました」

海未「前半はいいでしょう。普通の算術演算です。後半、++をインクリメント、--をデクリメントと呼びますが、これらは変数の値を1増やすもしくは1減らすものです」
ことり「一昔前にはumichan++みたいなネット文化があったよね」
海未「・・・ファーストシングルの時期であれば、まあ。いえ、そんな話がしたかったわけではなくて」
ことり「後置インクリメントもできるんだよね」
海未「そうですね。++umiumi++はどちらも有効ですが、結果が少し異なります」
穂乃果「どっちも77じゃないの?」
海未「変数umiの値は77になります。ただ、その式が返す値が異なってきます」

76
77

海未「後置インクリメントは増加前の値を、前置インクリメントは増加後の値を返すという違いがあるので気を付けてください」
穂乃果「なんか間違えそうだよー」
海未「インクリメント演算子とデクリメント演算子は、他の式の一部として使わず単独で使うのがよいとされています」

海未「最初に出てきた加算~べき乗については、代入と組み合わせることができます」

海未「n += 1n = n + 1と同じ意味です。加算以外の計算についてもn -= 1のように同じことができます」


ビット演算子

海未「ビット演算は2進数の演算です」
穂乃果「・・・えーと、穂乃果は帰っても・・・」
海未「駄目です」
穂乃果「2進数とかわかんないよー!」
海未「これはそんなに難しくありませんから」

海未「&はビット論理積、|はビット論理和、^はビット排他的論理和、~は否定です」
ことり「数学で習うのに似てるね」
穂乃果「習ったっけ?」
海未「・・・穂乃果への補習はまたの機会にするとして」
穂乃果「うえ~っ!?」
海未「数学で習う論理演算と基本的な考え方は同じです。2進数の桁ごとに、&であれば両方が1であれば1、|であればどちらかが1であれば1、^であれば値が異なっていれば1になります」
ことり「否定は全部反転なんだね」
海未「はい。2進数で書けば桁ごとに計算していくだけですから、さほど難しくないかと」
穂乃果「そんなことないよう・・・」

海未「ビットシフト演算子もあります」

海未「<<は左へ、>>は右へそれぞれ右辺で指定した桁数だけシフトします」
ことり「これはさっきより分かりやすいね」

海未「これらのビット演算子も、代入と組み合わせることができます。例えばx &= yx = x & yです」
ことり「n += 1とかと同じだよね。理屈ではわかるよ・・・使いこなす自信はあんまりないけど」
海未「まあ、JavaScriptでビット演算もあまり使わないと思いますから・・・」


論理演算子

海未「論理演算は、数学で習うそのものですね。真偽値の演算です」
穂乃果「・・・」

海未「&&が論理積、||が論理和、!が否定です。この説明はもういいですね?」
ことり「ことりは大丈夫だけど・・・」
穂乃果「・・・頑張って復習してくる」

海未「真偽値以外にも論理演算子は使うことができます。どんな値も基本的にはtrueと見なされますが、いくつかfalseになる値があるので気を付けてください」

  • null
  • 0
  • 空文字列
  • undefined

文字列演算子

海未「文字列の演算には++=が使用できます」

海未「+は連結、+=は追加です」
穂乃果「よかった、これは簡単だ・・・」


三項演算子

海未「三項演算子は、ちょっとした条件分岐をするものです」

海未「?の前は真偽値を返す式です。その結果がtrueであれば:の前が、falseであれば:の後が評価結果になります」
ことり「これはわかりやすいね」
海未「これは条件演算子と呼ぶこともあります。入れ子もできますが、やりすぎると読めなくなるので避けた方がいいでしょう」


単項演算子

海未「単項演算子といって、一見すると命令文のように見える演算子がいくつかあります」

海未「delete演算子はオブジェクトのプロパティや配列の要素を削除するものです」

海未「typeof演算子は、データの型を調べるものです」

海未「このように、型が文字列として返ってきます」
穂乃果「数値の252なのか文字列の”252″なのかとかはこれで見分ければいいんだね」

海未「void演算子は、対象の式が値を返さないようにするものです」

穂乃果「このn++ってさっきやったのだと252を返すはずだよね」
海未「はい。それをundefinedにできるのです。主な使い道はクライアントサイドJavaScriptでaタグにスクリプトを書くときでしょうか」


関係演算子

海未「さあ、最後です」
穂乃果「な、長かった・・・」
海未「関係演算子は、左辺と右辺を比較した結果に応じて真偽値を返すものです」

海未「in演算子は、オブジェクトが指定された名前のプロパティを持っているかを調べます」

海未「これは特に難しいところはないですね」

海未「最後はinstanceofです。まだ説明していない内容ですが、JavaScriptには組み込みのArrayDateなどのオブジェクトが用意されています。左辺がそれらのオブジェクトかどうかを判定します」

海未「後々必要になってから復習すればいいでしょう」


海未「これで演算子の説明は終わりです」
穂乃果「長かった、長かったよ・・・」
ことり「ほんとにたくさんあるんだね・・・」
海未「・・・正直、今回は私もかなり疲れました」


LINEで送る
Pocket


返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です