三・JS演算子

6464 ワード

JavaScriptの演算子は主に簡単な表現を接続するために用いられ、複雑な表現を構成します.一般的には、演算式、比較式、論理式、賦値式などがあります.単眼演算子もあります.元の表現を操作します.ほとんどの演算子は句読点で構成されます.また、typeof、delete、instance ofなどのキーワードで表される演算子もあります.
いくつかの演算子は、任意のデータタイプ(typeof)に作用することができますが、ほとんどの演算子は、特定のタイプであり、ほとんどの演算子は、特定のタイプの値(typeofが返しているとよく言われています)を計算します.JavaScriptでは演算子は通常、必要に応じて操作数をタイプ変換し、乗算演算子の希望操作数は数字であるが、「3」*「5」も合法的であり、JavaScriptは自動的にそれをデジタル計算に変換し、Number 15に戻る.いくつかのオペレータは異なるデータタイプに対して異なる意味を持っています.
  • は、両方の操作数が数字の場合、足し算をします.
  • 両のパラメータは文字列であり、パラメータが文字列である場合、もう一つのパラメータを文字列に変換して文字列をスティッチングします.
  • は、パラメータにオブジェクトがある場合には、そのvalueOfまたはtoStringを呼び出す.
  • は、文字列パラメータが一つしかないときに、それを数値に変換しようと試みる.
  • は、1つの数値パラメータだけが正の値を返します.
  • console.log(2+4);//6
    console.log("2"+"4");//"24"
    console.log(2+"4");//"24"
    console.log(2+new Date());//"2Mon Jan 20 2014 17:15:01 GMT+0800 (China Standard Time)"
    console.log(+"4");//4 
    
    遠演算子タイプ
    演算子演算子
    -      (Addition):x + y
    -      (Subtraction): x - y
    -      (Multiplication): x * y
    -      (Division):x / y
    -      (Remainder):x % y
    -      (Increment):++x    x++
         (Decrement):--x    x--
         (Negate):-x
         (Convert to number): +x
    
    割り当て演算子
    変数に値を割り当てるための演算子です.最も一般的な演算子はもちろん、等号です.式x=yはyをxに割り当てます.このほか、JavaScriptは他の11の割当演算子を提供します.
    - 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
    - x |= y //     x = x | y
    - x ^= y //     x = x ^ y
    
    比較演算子
    演算子を比較して2つの値を比較し、ブール値を返します.比較条件が満たされているかどうかを表します.JavaScriptは8つの比較演算子を提供します.
    - ==   
    - ===     
    - !=   
    - !==      
    - <   
    - <=      
    - >   
    - >=      
    
    ブール演算子
    - !      
    - &&     
    - ||     
    - condition? true case : false case        
    
    ビット演算子
    -    (or):   |,             1,    1,   0。
    -    (and):   &,          1,    1,   0。
    -    (not):   ~,              。
    -     (xor):   ˆ,                1 ,   1,   0。
    -     (left shift):   <<
    -     (right shift):   >>
    -          (zero filled right shift):   >>>
    
    その他
    小かっこ
    JavaScriptでは、丸括弧は演算子であり、2つの使い方があります.式を括弧の中に入れると、値を求める役割があります.関数の後に付いている場合、関数は呼び出しです.式を丸括弧に入れると、式の値が返されます.
    void
    void演算子は、式を実行してundefinedに戻ります.
    コンマ演算子
    コンマ演算子は、2つの表式の値を求めて、次の表式の値を返します.
    演算子の優先度と結合性
    演算子
    操作
    結合性
    タイプ
    ++
    自己増加する
    R
    lval->num
    --
    自滅する
    R
    lval->num
    を選択します.
    反逆を求める
    R
    num->num

    (一つの操作数)を数字に変換します.
    R
    num->num
    ~
    位によって逆を求める
    R
    int->int
    !
    論理的でない
    R
    ブック
    delete
    属性を削除
    R
    lval->book
    typeof
    検出データタイプ
    R
    any->str
    void
    undefinedを返します
    R
    any->undefined
    *、/、%
    暇をかける
    L
    num->num
    +、-
    プラス・マイナス
    L
    num->num

    文字列スティッチング
    L
    str
    、>=
    数字のサイズまたはアルファベットの順序
    L
    num/str,num/str->book
    instance of
    オブジェクトの種類
    L
    obj,function->book
    in
    属性の有無をテストします.
    L
    str,obj->book
    ==
    判断が等しい
    L
    any、any->book
    !=
    判断がまちまちである
    L
    any、any->book
    ==
    恒久判断
    L
    any、any->book
    !==
    判断は恒常ではない
    L
    any、any->book
    &&&
    論理和
    L
    any、any->any
    二本の縦
    論理または
    L
    any、any->any
    ?:
    条件演算子
    R
    book,any,any->any
    =賦値*===、+=、-=
    値を演算し、かつ値を割り当てます.
    R
    lval,any->any
    を選択します.
    最初の操作数を無視して、2番目の操作数を返します.
    L
    any、any->any
    優先度の意味は分かりますが、結合は同じ優先度を持つ演算子式の演算順を指します.ある演算子は左結合で、つまり演算は左から右にかけて行われます.下の二つの演算は同じです.w=(x+y)+zある演算子は右結合のw=x=y=zです.w=(x=(y=z)w=a:b:cd:ef:gw=ab:(c?d:(e?f:g);演算子の優先順位は「JavaScript権威ガイド」の中によく述べられています.ここでR/Lは結合性が右結合か左結合かを表します.num->numはオペレータの期待するデータタイプと計算結果タイプを表します.lvalは左値を指します.
    演算子
    操作
    結合性
    タイプ
    ++
    自己増加する
    R
    lval->num
    --
    自滅する
    R
    lval->num
    を選択します.
    反逆を求める
    R
    num->num

    (一つの操作数)を数字に変換します.
    R
    num->num
    ~
    位によって逆を求める
    R
    int->int
    !
    論理的でない
    R
    ブック
    delete
    属性を削除
    R
    lval->book
    typeof
    検出データタイプ
    R
    any->str
    void
    undefinedを返します
    R
    any->undefined
    *、/、%
    暇をかける
    L
    num->num
    +、-
    プラス・マイナス
    L
    num->num

    文字列スティッチング
    L
    str
    、>=
    数字のサイズまたはアルファベットの順序
    L
    num/str,num/str->book
    instance of
    オブジェクトの種類
    L
    obj,function->book
    in
    属性の有無をテストします.
    L
    str,obj->book
    ==
    判断が等しい
    L
    any、any->book
    !=
    判断がまちまちである
    L
    any、any->book
    ==
    恒久判断
    L
    any、any->book
    !==
    判断は恒常ではない
    L
    any、any->book
    &&&
    論理和
    L
    any、any->any
    二本の縦
    論理または
    L
    any、any->any
    ?:
    条件演算子
    R
    book,any,any->any
    =賦値*===、+=、-=
    値を演算し、かつ値を割り当てます.
    R
    lval,any->any
    を選択します.
    最初の操作数を無視して、2番目の操作数を返します.
    L
    any、any->any
    注意:
    1.typeofの優先度はかなり高く、加減乗除などよりも高いので、演算子ですが、複雑な表現の場合はかっこをつけるのが習慣です.例を見ます.
    typeof 2*3;//NaN
    typeof (2*3);//"number"
    typeof 2+3;// "number3"
    
    2.+、--は右結合のオペレータであり(一番高い優先度のいくつかは右結合である)、しかも加減乗除の優先度より高い.同時に、自己増加、自己減算演算子の演算数は、左の値(与えられた記号の左にある値)であり、定数ではありません.
    4++; //ReferenceError: Invalid left-hand side expression in postfix operation
    var a=0,b=0;
    a+++b;//0
    a;//1,++    + ,     (a++)+b
    b;//0
    
    3.分配演算子の優先度はかなり低いです.
    a = b == c; //   a = (b==c)
    
    4.非論理優先キューの先端にも加減乗除より高いが、論理和、論理または優先度が低いので、加減乗除の方がいいです.
    !2*0; //0,    (!2)*0
    
    5.論理演算子に関する面白いところは「短絡」の機能です.皆さんは知っていると思いますが、いくつかの問題はそんなに単純ではなく、式計算値と合わせて考察します.
    1 && 3;
    1 && "foo" || 0;
    1 || "foo" && 0
    
    論理演算子の「短絡」の特徴を知ると、元の表式の「戻り値」自体が分かりやすくなります.
    五分五分
    五分五分
    私達は知っています.この二つの値の等しい性を判断します.その違いは分かります.==厳格な意味の等しいです.NaNとNaNなどに注意すればいいです.使用する時、javascriptは私達にタイプ転換をしてくれます.いくつかの不思議な結果をもたらします.では、使用する時はどのような状況でタイプ転換をしますか?1.2つの値のタイプが同じであれば、厳密に等しい演算を行います.2つの値の種類が異なる場合は3.null、一つはundefinedであれば、等しい4.一つは数字で、一つは文字列であれば、まず文字列を数字に変えて、5を比較します.一つの値がtrue/falseであれば、1/0比較6にします.一つの値が対象であれば、値は対象です.一つは数字または文字列で、valueOfとtoString変換を使って7を比較してみます.他は同じではありません.