JavaScriptで書いてみよう!
(式、演算子)

ここでは式、演算子について説明します。




    式はリテラル、変数、演算子、単独の値を評価する表現の組み合わせです。値は、数、文字列、ブーリアンが許されます。
    概念的に、式には、変数に値を代入する式と単純に値を持つ式の二種類があります。例えば、x = 7はxに7を代入します。また、この式自体は7と評価されます。このような式は代入演算子を使用します。一方で、3 + 4は単純に7と評価され代入は実行されません。このような式で使用される演算子は純粋に演算子として働きます。
    JavaScriptには以下の種類の式があります。
    ・算術式:数として評価されます。例、3.14159
    ・文字式:文字列として評価されます。例、"太郎"、"234"
    ・論理式:trueまたはfalseとして評価されます。


演算子

    JavaScriptには単項演算子、二項演算子、三項演算子、条件演算子があります。

    代入演算子

    代入演算子は左側のオペランドに右側の値を代入します。基本的な代入演算子はEqual(=)です。
    他の代入演算子は標準の演算子の短縮です。

    短縮演算子意味
    x += yx = x + y
    x -= yx = x - y
    x *= yx = x * y
    x /= yx = x / y
    x %= yx = x % y
    x <<= yx = x << y
    x >>= yx = x >> y
    x >>>= yx = x >>> y
    x &= yx = x & y
    x ^= yx = x ^ y
    x |= yx = x | y

    比較演算子

    比較演算子はオペランドを比較し、一致するかどうかをブーリアンで返します。オペランドは数、文字列が許されます。文字列はUnicodeによる標準辞書順により比較されます。

    演算子説明trueを返す例
    Equal (==)値が等しいときtrue3 == var1
    "3" == var1
    3 == '3'
    Not equal (!=)値が等しくないときtruevar1 != 4
    var2 != "3"
    Strict equal (===)値が等しく、型も同じときture3 === var1
    Strict not equal (!==)値が等しくなく、型も違うときtruevar1 !== "3"
    3 !== '3'
    Greater than (>)左側が右側より大きいときtruevar2 > var1
    Greater than or equal (>=)左側が右側より大きいか等しいときtruevar2 >= var1
    var1 >= 3
    Less than (<)左側が右側より小さいときtruevar1 < var2
    Less than or equal (<=)左側が右側より小さい等しいときtruevar1 <= var2
    var2 <= 5

    ★var1は3、var2は4とします。

    算術演算子

    算術演算子はオペランドとして数をとり、数を返します。

    演算子説明
    +
    (Add)
    加算 12 + 5 は 17 を返す。
    -
    (Subtract)
    減算 12 - 5 は 7 を返す。
    *
    (Multiple)
    加算 2 * 3 は 6 を返す。
    /
    (Divide)
    除算 1 / 2 は 0.5 を返す。
    %
    (Modulus)
    除余 12 % 5 は 2 を返す。
    ++
    (Increment)
    インクリメント(+1)する。++xは加算後の値を返す。x++は加算前の値を返す。xが3のとき、++xはxを4にし、4を返すが、x++はxを4にし、3を返す。
    --
    (Decrement)
    デクリメント(-1)する。値の戻りはインクリメントに同じ。xが3のとき、--xはxを2にし、2を返すが、x++はxを2にし、3を返す。
    -
    (Unary negation)
    マイナス演算子。符号を反転した値を返す。xが3のとき、-xは-3を返す。

    ビット演算子

    ビット演算子はオペランドを32ビット(0または1)の組み合わせとして扱います。例えば、10進数の9は2進数で1001となります。

    演算子使用方法説明
    Bitwise ANDa & b ビットごとの論理積を返す。
    Bitwise ORa | b ビットごとの論理和を返す。
    Bitwise XORa ^ b ビットごとの排他的論理和を返す。
    Bitwise NOT~ a ビットごとの反転を返す。
    Left shifta << b aをbビット、左にシフトする。
    Sign-propagating right shifta >> baをbビット右にシフトする。符号は保持する。
    Zero-fill right shifta >>> baをbビット右にシフトする。符号は保持しない。

    ビット論理演算子

    省略

    ビットシフト演算子

    省略

    論理演算子

    論理演算子は、典型的にブーリアンのオペランドに使われ、ブーリアンを返しますが、実際には指定されたオペランドを返しますので、ブーリアンでないものに使用されれば、ブーリアンでないものを返します。

    演算子使用方法説明
    &&式1 && 式2 (Logical AND) 式1がfalseのとき、式1を返す。そうでなければ、式2を返す。つまり、両方がtrueのときのみtrueを返し、そうでなければfalseを返す。
    ||式1 || 式2 (Logical OR) 式1がtrueのとき、式1を返す。そうでなければ、式2を返す。つまり、どちらかがtureのときtrueを返し、両方がfalseのときfalseを返す。
    ! !式 (Logical NOT) 式がtrueのときfalseを返し、そうでなければtrueを返す。

    null、0、空文字列("")、undefinedに評価される式はfalseに変換されます。

    短絡的評価

    省略

    文字列演算子

    比較演算子に加えて、文字列に使用された場合は、連結演算子(+)は二つの文字列を連結し、オペランドの二つの文字列を連結した新しい文字列を返します。例、"my " + "string"は文字列"my string"を返します。
    短縮演算子+=も文字列の連結に使用できます。

    特殊演算子

    条件演算子

    構文:
    condition ? val1 : val2
    
    conditionがtrueのときval1を、そうでなければval2を返します。
    例:
    status = (age >= 18) ? "adult" : "minor"
    
    statusには、ageが18以上なら"adult"が、そうでなければ、"minor"が代入されます。

    コンマ演算子

    コンマ演算子は(,)は単純に二つのオペランドを評価し、二番目のオペランドの値を返します。この演算子は基本的に、forループの中で複数の変数を更新するのに使用されます。
    例)
    for (var i=0, j=9; i <= 9; i++, j--)
       document.writeln("a["+i+","+j+"]= " + a[i,j])
    

    delete演算子

    delete演算子はオブジェクト、プロパティ、配列の特定されたインデックスの要素を削除します。
    構文:
    delete objectName delete objectName.property delete objectName[index] delete property // withステートメントの中だけ
    暗に定義された変数は削除できますが、varステートメントで定義された変数は削除できません。
    削除が成功すると、プロパティまたは要素にundefinedを設定します。設定できればtrueを返し、そうでなければfalseを返します。
    例:
    x=42
    var y= 43
    myobj=new Number()
    myobj.h=4      // hプロパティを定義
    delete x       // trueを返す(暗に定義されていれば削除可能)
    delete y       // falseを返す(varで定義されていれば削除不可)
    delete Math.PI // falseを返す(組込プロパティは削除不可)
    delete myobj.h // trueを返す(ユーザ定義プロパティは削除可能)
    delete myobj   // trueを返す(ユーザ定義オブジェクトは削除可能)
    
    配列の要素の削除
    省略

    new演算子

    new演算子はユーザ定義オブジェクト型または組込オブジェクト型のインスタンスを作成します。組込オブジェクト型には、Array、Boolean、Date、Function、Image、Number、Object、Option、RegExp、Stringがあります。
    構文:
    objectName = new objectType ( param1 [,param2] ...[,paramN] )
    
    オブジェクトイニシャライザによりオブジェクトを作成することもできます。

    thisキーワード

    thisキーワードはカレントオブジェクトを参照します。一般的にthisはメソッドの中で呼び出し元オブジェクトを参照します。
    構文:
    this[.propertyName]
    
    例:
    function validate(obj, lowval, hival) {
       if ((obj.value < lowval) || (obj.value > hival))
          alert("Invalid Value!")
    }
    
    onChangeイベントハンドラから以下のように呼び出します。
    <B>Enter a number between 18 and 99:</B>
    <INPUT TYPE = "text" NAME = "age" SIZE = 3
       onChange="validate(this, 18, 99)">
    

    typeof演算子

    typeof演算子は以下のように使用します。
    構文:
    1. typeof operand
    2. typeof (operand)
    
    typeof演算子は未評価のオペランドの型を表す文字列を返します。オペランドは文字列、変数、キーワード、オブジェクトです。括弧はオプションです。
    例:
    var myFun = new Function("5+2")
    var shape="round"
    var size=1
    var today=new Date()
    
    typeof myFun //object
    typeof shape //string
    typeof size //number
    typeof today //object
    typeof dontExist //undefined
    
    typeof true //boolean
    typeof null //object
    
    typeof 62 //number
    typeof 'Hello world' //string
    
    typeof document.lastModified //string
    typeof window.length //number
    typeof Math.LN2 //number
    
    typeof blur //function
    typeof eval //function
    typeof parseInt //function
    typeof shape.split //function
    
    typeof Date //function
    typeof Function //function
    typeof Math //function
    typeof Option //function
    typeof String //function
    

    void演算子

    void演算子は以下のように使用します。
    構文:
    1. void (expression)
    2. void expression
    
    void演算子は式を戻り値なしで評価することを指定します。
    void演算子は式をハイパーリンクテキストとして指定できます。式は評価されますが、現在のドキュメントにはロードされません。
    例:
    <A HREF="javascript:void(0)">Click here to do nothing</A>
    <A HREF="javascript:void(document.form.submit())">
    Click here to submit</A>
    

    演算子優先度

    演算子優先度は演算子が評価される順序を決定します。演算子優先度を変更するには括弧を使用します。以下の表は優先度の低いものから高いものへの順になっています。

    演算子の型演算子
    comma,
    assignment= += -= *= /= %= <<= >>= >>>= &= ^= |=
    conditional?:
    logical-or||
    logical-and&&
    bitwise-or|
    bitwise-xor^
    bitwise-and&
    equality== !=
    relational< <= > >=
    bitwise shift<< >> >>>
    addition/subtraction+ -
    multiply/divide* / %
    negation/increment! ~ - + ++ -- typeof void delete
    call()
    create instancenew
    member. []




ホームページへ戻る