torikatsu923.dev

サイト内検索

    JSの+について考える

    +new Date()...??? なんじゃこりゃ...と言うことで今回の記事ではjsの+について軽く調べてわかったことをまとめていきます。

    こんにちは、とりかつです。 最近JSのコードを読むことが多いです。 とあるリポジトリのJSのコードを読んでいたら以下のような文がありました。

    var a = +new Date();

    +new Date()…??? なんじゃこりゃ…

    と言うことで今回の記事ではjsの+について軽く調べてわかったことをまとめていきます。

    +の種類

    + 記号を使用する演算子はいくつかの種類があります。

    演算子 名前
    + 単項正値演算子
    ++ インクリメント
    + 加算
    += 加算代入

    それぞれ見ていきます。

    単項正値演算子

    構文は以下のようになります。

    + ○

    この記事の冒頭で出てきた+ は単項正値演算子です。 オペランドが数値以外の場合、数値に変換する役割を持っています。

    例

    + 10 // -> 10

    new Date()は数値変換するとミリ秒を取得できます。

    f:id:torikatsu923:20201204005839p:plain

    なので、冒頭のコードはミリ秒を取得するコードになります。

    f:id:torikatsu923:20201204010021p:plain

    インクリメント

    インクリメントはオペランドに1を加算して返します。 インクリメントはオペランドの前後どちらにもつけることができます。 ですが、動きは異なります。

    前置した場合は、インクリメントしてから値を返していることがわかります。

    f:id:torikatsu923:20201204010511p:plain

    後置した場合は、値を返してからインクリメントしていることがわかります。 f:id:torikatsu923:20201204010657p:plain

    加算

    オペランドを足し合わせた値または文字列連結した結果を返却します。

    f:id:torikatsu923:20201204011213p:plain

    オペランドの型が違う時、JSによって暗黙の型変換が行われます。

    f:id:torikatsu923:20201204011317p:plain

    暗黙の型変換には優先順位?みたいなものがあります。

    対応表

    引用:https://jsprimer.net/basic/implicit-coercion/

    また、加算演算子は左から右に評価されます。 なので、式の項の順序(これは正確な言い回しではないかもしれないです。)によって結果が変わります。 これ覚えとくと、いつか何かに使える気がします。

    f:id:torikatsu923:20201204011838p:plain

    加算代入

    右辺のオペランドを変数の値と加算し、結果を変数に代入します。

    f:id:torikatsu923:20201204012142p:plain

    加算代入は代入系の演算子で優先度が3です。 対して、加算、減算の優先度は14、剰余、乗算、除算の優先度は15です。

    なので+= ( 10 - 3 ) みたいにかかなくても良さそうです。

    f:id:torikatsu923:20201204015351p:plain

    おわりに

    ここまでJSの+についてまとめてきました。 +に限らずJSの演算子による表現は幅が広いです。

    f:id:torikatsu923:20201204012856p:plain

    (どこでこれ使うかわかりませんがこんなこともできちゃいます)

    また、新しい発見があったらまとめてみたいなと思います。

    -––