0x0b
js_about_02
最終更新:
0x0b
-
view
式(Expressions)
リテラル、変数、演算子、そして単一の値に評価する式からなる有効なセットです
この値には数値、文字列、論理値が使用できます
この値には数値、文字列、論理値が使用できます
概念的に、式は 2 つの種類
ある値を変数に代入するものと、単純にある値を持つもの
例えば、x = 7 という式は x に 7 という値を代入する式です。この式自体の評価結果は 7 です。このような式では代入演算子を用います。一方、3 + 4 という式では単純に評価結果が 7 になります。この式は代入を行いません。このような式で用いられる演算子は単に演算子と呼ばれます。
ある値を変数に代入するものと、単純にある値を持つもの
例えば、x = 7 という式は x に 7 という値を代入する式です。この式自体の評価結果は 7 です。このような式では代入演算子を用います。一方、3 + 4 という式では単純に評価結果が 7 になります。この式は代入を行いません。このような式で用いられる演算子は単に演算子と呼ばれます。
JavaScript には以下の種類の式があります。
算術式:数値に評価する。例えば 3.14159。(一般に 算術演算子 を使用)
文字列式:文字列に評価する。例えば "Fred" や "234"。(一般に 文字列演算子 を使用)
論理式:true または false に評価する。(よく 論理演算子 を用いる)
オブジェクト式:オブジェクトに評価する。(オブジェクトに評価するさまざまな例については 特殊演算子 を参照)
算術式:数値に評価する。例えば 3.14159。(一般に 算術演算子 を使用)
文字列式:文字列に評価する。例えば "Fred" や "234"。(一般に 文字列演算子 を使用)
論理式:true または false に評価する。(よく 論理演算子 を用いる)
オブジェクト式:オブジェクトに評価する。(オブジェクトに評価するさまざまな例については 特殊演算子 を参照)
演算子(Operators)
JavaScript は以下の種類の演算子を使うことができます。このセクションでは演算子について説明します。また、演算子の優先順位にも触れます。
代入演算子
比較演算子
算術演算子
ビット演算子
論理演算子
文字列演算子
特殊演算子
JavaScript には単項演算子も 2 項演算子もあります。さらには唯一の特殊な 3 項演算子である条件演算子があります。2 項演算子では、演算子の前後に 1 つずつ、計 2 つのオペランドが必要です。
比較演算子
算術演算子
ビット演算子
論理演算子
文字列演算子
特殊演算子
JavaScript には単項演算子も 2 項演算子もあります。さらには唯一の特殊な 3 項演算子である条件演算子があります。2 項演算子では、演算子の前後に 1 つずつ、計 2 つのオペランドが必要です。
operand1 operator operand2
例えば 3+4 や x*y。
単項演算子では、演算子の前か後ろどちらかに 1 つのオペランドが必要です。
operator operand
または
operand operator
例えば x++ や ++x。
演算子の優先順位
演算子の優先順位が高い順
|は|
演算子の優先順位が高い順
|は|
演算子の種類 | 個々の演算子 |
メンバ | . [] |
インスタンスの呼び出し/作成 | () new |
否定/インクリメント | ! ~ - + ++ -- typeof void delete |
乗算/除算 | * / % |
加算/減算 | + - |
ビットシフト | << >> >>> |
関係 | < <= > >= in instanceof |
等価 | == != === !== |
ビットごとのand | & |
ビットごとのxor | ^ |
ビットごとの or | | |
論理積 | && |
論理和 | || |
条件 | ?: |
代入 | = += -= *= /= %= <<= >>= >>>= &= ^= |= |
コンマ | , |
代入演算子(Assignment Operators)
代入演算子は、右のオペランドの値に基づいた値を左のオペランドに代入します。基本的な代入演算子はイコール (=) ですが、これは右のオペランドの値を左のオペランドに代入します。すなわち、x = y では y の値を x に代入します。
他の代入演算子は標準的な演算をするための短縮表記があります。次の表でそれを示します。
短縮表記した演算子 意味
短縮表記した演算子 意味
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 |
比較演算子(Comparison Operators)
比較演算子は、オペランドを比較し、比較結果に基づいた論理値を返します。オペランドには数値、文字列、論理値、オブジェクトが使用できます。文字列は、Unicode 値を用いて標準的な辞書順に基づいて比較されます。ほとんどの場合、2 つのオペランドが異なる型ならば JavaScript はそのオペランドを比較に適した型に変換しようとします(このルールの唯一の例外は === および !== であり、これらは厳密に等値か否かを判断し、等値性をチェックする前にオペランドを適合する型に変換するということはありません)。これは一般に数値の比較が実行されることになります。次の表では比較演算子について説明します。次のコードで考えます。
var var1 = 3, var2 = 4;
演算子 | 説明 | true を返す例 |
等しい (==) | オペランドが等しい場合に true を返す | 3 == var1 "3" == var1 3 == '3' |
等しくない (!=) | オペランドが等しくない場合に true を返す | var1 != 4 var2 != "3" |
厳密に等しい (===) | オペランドが等しく、かつ同じ型である場合に true を返す | 3 === var1 |
厳密には等しくない (!==) | オペランドが等しくなく、かつ/または同じ型でない場合に true を返す | var1 !== "3" 3 !== '3' |
より大きい (>) | 左のオペランドが右のオペランドよりも大きい場合に true を返す | var2 > var1 "12" > 2 |
以上 (>=) | 左のオペランドが右のオペランド以上である場合に true を返す | var2 >= var1 var1 >= 3 |
より小さい (<) | 左のオペランドが右のオペランドよりも小さい場合に true を返す | var1 < var2 "12" < "2" |
以下 (<=)|左のオペランドが右のオペランド以下である場合に true を返す|var1 <= var2
var2 <= 5|
var2 <= 5|
算術演算子(Arithmetic Operators)
算術演算子は、そのオペランドに数値(リテラルか変数)をとり、1 つの数値を返します。標準的な算術演算子は、加算 (+)、減算 (-)、乗算 (*)、除算 (/) です。これらの演算子は他のほとんどのプログラミング言語と同じように機能しますが、そのときの数値は、浮動小数点数として扱われます(0 で除算した結果は、NaN になることにも注意してください)。
1 / 2 // JavaScript では 0.5 を返す 1 / 2 // Java では 0 を返す(どちらの数も浮動小数点数として明記されていない) 1.0 / 2.0 // JavaScript でも Java でも 0.5 を返す
さらに、JavaScript では以下の表で示された算術演算子も使用できます。
演算子 | 説明 | 例 |
%(モジュロ) | 2 項演算子。2 つのオペランドで除算したときの整数の余りを返す | 12 % 5 は 2 を返す。 |
++(インクリメント) | 単項演算子。オペランドに 1 を加える。前置演算子 (++x) を使った場合、オペランドに 1 を加えた後にその値を返す。後置演算子 (x++) を使った場合、オペランドに 1 を加える前にその値を返す。 | x が 3 のとき、++x は x に 4 をセットし、4 を返す。一方、x++ は x に 4 をセットし、3 を返す。 |
--(デクリメント) | 単項演算子。オペランドから 1 を引く。戻り値はインクリメント演算子のものと同様。 | x が 3 のとき、--x は x に 2 をセットし、2 を返す。一方、x-- は x に 2 をセットし、3 を返す。 |
-(符号反転) | 単項演算子。オペランドの符号を反転してその値を返す | x が 3 のとき、-x は -3 を返す |
ビット演算子(Bitwise Operators)
ビット演算子ではそのオペランドを 10 進数や 16 進数や 8 進数ではなく、32 ビットの集合(0 と 1)として扱います。例えば、10 進数の 9 の 2 進表現は 1001 です。ビット演算子はこのように 2 進表現にした上で演算を行いますが、標準の JavaScript の数値を返します。
次の表で JavaScript のビット演算子について説明します。
演算子 | 使用法 | 説明 |
ビットごとの AND | a & b | オペランドの対応するビットがともに 1 である各ビットについて 1 を返す |
ビットごとの OR | a|b | オペランドの対応するビットがどちらかまたはともに 1 である各ビットについて 1 を返す |
ビットごとの XOR | a ^ b | オペランドの対応するビットがどちらか一方のみ 1 である各ビットについて 1 を返す |
ビットごとの NOT | ~ a | オペランドの各ビットを反転する |
左シフト | a << b | 2 進表現の a を b ビット分だけ左にシフトする。右から 0 を詰める |
符号を維持した右シフト | a >> b | 2 進表現の a を b ビット分だけ右にシフトする。溢れたビットは破棄する |
0 埋め右シフト | a >>> b | 2 進表現の a を b ビット分だけ右にシフトする。溢れたビットは破棄し、左から 0 を詰める |
ビットごとの論理演算子
概念的にビットごとの論理演算子は以下のように機能します。
オペランドは 32 ビット整数に変換され、ビット列(0 と 1)として表現される。
第 1 のオペランドの各ビットは第 2 のオペランドの対応するビットと対にされる。第 1 ビットと第 1 ビット、第 2 ビットと第 2 ビット、というように対にされる。
演算子は各ビットのペアに適用され、結果はビットごとに組み立てられる。
例えば、9 の 2 進表現は 1001 で、15 の 2 進表現は 1111 です。ここで、ビット演算子がこれらの値に対して適用されたときの結果は以下のようになります。
第 1 のオペランドの各ビットは第 2 のオペランドの対応するビットと対にされる。第 1 ビットと第 1 ビット、第 2 ビットと第 2 ビット、というように対にされる。
演算子は各ビットのペアに適用され、結果はビットごとに組み立てられる。
例えば、9 の 2 進表現は 1001 で、15 の 2 進表現は 1111 です。ここで、ビット演算子がこれらの値に対して適用されたときの結果は以下のようになります。
15 & 9 の結果は 9 (1111 & 1001 = 1001)
15 | 9 の結果は 15 (1111 | 1001 = 1111)
15 ^ 9 の結果は 6 (1111 ^ 1001 = 0110)
ビットシフト演算子
15 | 9 の結果は 15 (1111 | 1001 = 1111)
15 ^ 9 の結果は 6 (1111 ^ 1001 = 0110)
ビットシフト演算子
ビットシフト演算子は 2 つのオペランドをとります。第 1 のオペランドはシフトされる数を指定し、第 2 のオペランドは、第 1 のオペランドをシフトさせるビット数を指定します。シフト演算の方向は使用する演算子によって決まります。
シフト演算子はそのオペランドを 32 ビット整数に変換し、左のオペランドと同じ型の結果を返します。
シフト演算子は次の表のとおりです
演算子 | 説明 | 例 |
<<(左シフト) | 第 1 オペランドを指定したビット数分だけ左にシフトする。左に溢れたビットは破棄される。0 のビットを右から詰める | 9<<2 の結果は 36 となる。1001 を 2 ビット左にシフトすると 100100 となり、これは 36 であるため |
>>(符号を維持した右シフト) | 第 1 オペランドを指定したビット数分だけ右にシフトする。右に溢れたビットは破棄される。左端のビットのコピーを左から詰める | 9>>2 の結果は 2 となる。1001 を 2 ビット右にシフトすると 10 となり、これは 2 であるため。同様に、-9>>2 の結果は符号が維持されるために -3 となる |
>>>(0 埋め右シフト) | 第 1 オペランドを指定したビット数分だけ右にシフトする。右に溢れたビットは破棄される。0 のビットを左から詰める | 19>>>2 の結果は 4 となる。10011 を 2 ビット右にシフトすると 100 になり、これは 4 であるため。非負数では 0 埋め右シフトと符号を維持した右シフトは同じ結果になる |
論理演算子(Logical Operators)
論理演算子では基本的に真偽(論理)値を用います。そのような値があると真偽値を返します。しかし、&& および || 演算子は実際には指定されたオペランドの一方の値を返します。そのため、非真偽値とともに論理演算子が使われると非真偽値を返します。論理演算子について次の表で説明します。
演算子 | 使用法 | 説明 |
&& | expr1 && expr2 | (論理 AND)expr1 を false と見ることができる場合は expr1 を返す。そうでない場合は expr2 を返す。したがって、真偽値が使われた場合、両オペランドが true の場合は && は true を返し、そうでない場合は false を返す |
|| | expr1||expr2 | (論理 OR)expr1 を true と見ることができる場合は expr1 を返す。そうでない場合は expr2 を返す。したがって、真偽値が使われた場合、どちらかのオペランドが true の場合は||は true を返し、両方とも false の場合は false を返す |
! | !expr | (論理 NOT)オペランドを true と見ることができる場合は false を返す。そうでない場合は true を返す |
false と見ることができる式とは、null、0、空文字列 ("")、または undefined に評価される式のことです。
以下のコードで &&(論理 AND)演算子の例を示します。
a1=true && true // t && t は true を返す a2=true && false // t && f は false を返す a3=false && true // f && t は false を返す a4=false && (3 == 4) // f && f は false を返す a5="Cat" && "Dog" // t && t は Dog を返す a6=false && "Cat" // f && t は false を返す a7="Cat" && false // t && f は false を返す
以下のコードで ||(論理 OR)演算子の例を示します。
o1=true || true // t || t は true を返す o2=false || true // f || t は true を返す o3=true || false // t || f は true を返す o4=false || (3 == 4) // f || f は false を返す o5="Cat" || "Dog" // t || t は Cat を返す o6=false || "Cat" // f || t は Cat を返す o7="Cat" || false // t || f は Cat を返す
以下のコードで !(論理 NOT)演算子の例を示します。
n1=!true // !t は false を返す n2=!false // !f は true を返す n3=!"Cat" // !t は false を返す
ショートサーキット評価
論理式は左から右に評価されるため、以下のルールを用いることで「ショートサーキット」評価ができるようになっています。
論理式は左から右に評価されるため、以下のルールを用いることで「ショートサーキット」評価ができるようになっています。
false && anything は false にショートサーキット評価する。
true || anything は true ショートサーキット評価する。
論理のルールはこれらの評価が常に正確であることを保証しています。上記の式の anything の部分は評価されないため、何らかの副作用が生じないように注意してください
true || anything は true ショートサーキット評価する。
論理のルールはこれらの評価が常に正確であることを保証しています。上記の式の anything の部分は評価されないため、何らかの副作用が生じないように注意してください
文字列演算子(String Operators)
比較演算子は文字列に使用できますが、これに加えて 2 つの文字列を結合する結合演算子 (+) も使用できます。これは 2 つのオペランドの文字列を結合した文字列を返します。例えば、"my " + "string" は "my string" という文字列を返します。
短縮表記した代入演算子 += も文字列の結合に使用できます。例えば、変数 mystring に "alpha" という値が格納されているとき、式 mystring += "bet" の評価結果は "alphabet" となり、この値を mystring に代入します。
特殊演算子(Special Operators)
JavaScript は以下の特殊演算子があります。
- 条件演算子
- コンマ演算子
- delete
- in
- instanceof
- new
- this
- typeof
- void
条件演算子
条件演算子は JavaScript では唯一の 3 つのオペランドをとる演算子です。演算子は条件に基づいて 2 つの値のうち、1 つを選択します。構文は次のとおりです。
条件演算子は JavaScript では唯一の 3 つのオペランドをとる演算子です。演算子は条件に基づいて 2 つの値のうち、1 つを選択します。構文は次のとおりです。
condition ? val1 : val2
condition が true の場合、演算子は val1 の値を選択します。そうでない場合は val2 の値を選択します。標準的な演算子が使用できる場所でならどこででも条件演算子を使用することができます。
例えば、
status = (age >= 18) ? "adult" : "minor"
この文では、age が 18 以上の場合 "adult" という値を変数 status に代入します。そうでない場合は "minor" という値を status に代入します。
コンマ演算子
コンマ演算子 (,) は単に両方のオペランドを評価し、第 2 のオペランドの値を返します。この演算子は主に for ループ内で使用されます。このことでループのたびに複数の変数を更新できるようになります。
コンマ演算子 (,) は単に両方のオペランドを評価し、第 2 のオペランドの値を返します。この演算子は主に for ループ内で使用されます。このことでループのたびに複数の変数を更新できるようになります。
例えば、a が一辺が 10 要素の 2 次元配列のとき、以下のコードではコンマ演算子を用いることで 2 変数を同時にインクリメントしています。このコードでは配列の対角成分の値を出力します。
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 文内でのみ有効
ここで、objectName はオブジェクトの名前を、property は既存のプロパティを、index は配列の要素の位置を表す整数をそれぞれ表しています。
4 番目の形式は with 文内でのみ有効で、これはあるオブジェクトからプロパティを削除します。
delete 演算子を使うことで暗黙的に宣言された変数を削除することができますが、var 文を用いて宣言された変数は削除できません。
delete 演算子が成功すると、そのプロパティや要素には undefined がセットされます。また、演算が可能な場合は delete 演算子は 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 を返す(暗黙的に宣言されているならば削除可能)
配列要素の削除
配列要素を削除したとき、配列の長さには影響を及ぼしません。例えば a[3] を削除したとき、a[4] は依然 a[4] のままで、a[3] は undefined になります。
配列要素を削除したとき、配列の長さには影響を及ぼしません。例えば a[3] を削除したとき、a[4] は依然 a[4] のままで、a[3] は undefined になります。
delete 演算子で配列要素を除去すると、もうその要素はその配列からなくなります。次の例では tree[3] は delete によって除去されます。
trees=new Array("redwood","bay","cedar","oak","maple") delete trees[3] if (3 in trees) { // ここは実行されない }
配列要素は存在させたいが、値は未定義にしたいという場合は、delete 演算子の代わりに undefined キーワードを使用してください。次の例では trees[3] には undefined という値が代入されますが、その配列要素は存在したままになります。
trees=new Array("redwood","bay","cedar","oak","maple") trees[3]=undefined if (3 in trees) { // ここは実行される } in
in 演算子は、指定されたプロパティが指定されたオブジェクトにある場合に true を返します。構文は以下のとおりです。
propNameOrNumber in objectName
ここで、propNameOrNumber はプロパティ名か配列のインデックスを表す文字列式または数値式を、objectName はオブジェクトの名前をそれぞれ表しています。
ここで、propNameOrNumber はプロパティ名か配列のインデックスを表す文字列式または数値式を、objectName はオブジェクトの名前をそれぞれ表しています。
次の例では in 演算子の使用法を示します。
// 配列 trees=new Array("redwood","bay","cedar","oak","maple") 0 in trees // true を返す 3 in trees // true を返す 6 in trees // false を返す "bay" in trees // false を返す(インデックスの指す値ではなく、 // インデックスの数字を指定しなければならない) "length" in trees // true を返す(length は Array のプロパティ) // 定義済みオブジェクト "PI" in Math // true を返す myString=new String("coral") "length" in myString // true を返す // ユーザ定義オブジェクト mycar = {make:"Honda",model:"Accord",year:1998} "make" in mycar // true を返す "model" in mycar // true を返す instanceof
instanceof 演算子は、指定されたオブジェクトが指定されたオブジェクトの種類である場合に true を返します。構文は次のとおりです。
objectName instanceof objectType
ここで、objectName は objectType と比較するオブジェクトの名前を、objectType は Date や Array のようなオブジェクトの種類をそれぞれ表しています。
実行時にオブジェクトの種類を確認する必要があるときは instanceof を使用してください。例えば、例外を受け取るとき、投げられた例外の種類によって別々の例外を扱うコードに分岐させることができます。
例えば、次のコードでは instanceof を使用することで theDay が Date オブジェクトであるかどうかを決定しています。theDay は Date オブジェクトなので if 文の中の文は実行されます。
theDay=new Date(1995, 12, 17) if (theDay instanceof Date) { // 実行される文 } new
new 演算子は、ユーザ定義オブジェクトや、Array、Boolean、Date、Function、Image、Number、Object、Option、RegExp、String といった定義済みオブジェクトのインスタンスを作成するのに使用します。サーバでは DbPool、Lock、File、SendMail といったオブジェクトも使用できます。new の使用法は以下のとおりです。
objectName = new objectType ( param1 [,param2] ...[,paramN] )
オブジェクト初期化子を使用してもオブジェクトを作成することができます。オブジェクト初期化子の使用 にて説明しています。
詳しくはコア JavaScript リファレンスの new 演算子 のページを参照してください。
this
this キーワードを使うことでカレントオブジェクトを参照することができます。一般に this はあるメソッド内でそのメソッドを呼び出したオブジェクトを参照します。使用法は以下のとおりです。
this キーワードを使うことでカレントオブジェクトを参照することができます。一般に this はあるメソッド内でそのメソッドを呼び出したオブジェクトを参照します。使用法は以下のとおりです。
this[.propertyName]
例 1
あるオブジェクトの value プロパティの妥当性を確認する validate という関数を想定します。関数にはそのオブジェクトと、上限および下限の値を渡します。
あるオブジェクトの value プロパティの妥当性を確認する validate という関数を想定します。関数にはそのオブジェクトと、上限および下限の値を渡します。
function validate(obj, lowval, hival) { if ((obj.value < lowval) || (obj.value > hival)) alert("Invalid Value!") }
各フォーム要素の onChange イベントハンドラにおいて validate を呼び出します。this を使うことでフォーム要素を渡すことができます。次の例をご覧ください。
<B>Enter a number between 18 and 99:</B> <INPUT TYPE = "text" NAME = "age" SIZE = 3 onChange="validate(this, 18, 99)">
例 2
form プロパティと組み合わせると this でカレントオブジェクトの親のフォームを参照できます。次の例では、myForm というフォームに Text オブジェクトとボタンが格納されています。ユーザがボタンをクリックすると、Text オブジェクトの値にフォーム名がセットされます。ボタンの onClick イベントハンドラは this.form を利用して親のフォームである myForm を参照します。
form プロパティと組み合わせると this でカレントオブジェクトの親のフォームを参照できます。次の例では、myForm というフォームに Text オブジェクトとボタンが格納されています。ユーザがボタンをクリックすると、Text オブジェクトの値にフォーム名がセットされます。ボタンの onClick イベントハンドラは this.form を利用して親のフォームである myForm を参照します。
<FORM NAME="myForm"> Form name:<INPUT TYPE="text" NAME="text1" VALUE="Beluga"> <P> <INPUT NAME="button1" TYPE="button" VALUE="Show Form Name" onClick="this.form.text1.value=this.form.name"> </FORM> typeof
typeof 演算子は次の方法のうち、どちらかの方法で使用します。
1. typeof operand
2. typeof (operand)
typeof 演算子は、未評価のオペランドの型を指す文字列を返します。operand は返される型を調べる対象となる文字列、変数、キーワード、オブジェクトです。括弧はあってもなくてもかまいません。
1. typeof operand
2. typeof (operand)
typeof 演算子は、未評価のオペランドの型を指す文字列を返します。operand は返される型を調べる対象となる文字列、変数、キーワード、オブジェクトです。括弧はあってもなくてもかまいません。
以下の変数を定義することを想定します。
var myFun = new Function("5+2") var shape="round" var size=1 var today=new Date() typeof 演算子はこれらの変数に対して以下の結果を返します。 typeof myFun is function typeof shape is string typeof size is number typeof today is object typeof dontExist is undefined
true や null というキーワードに対して、typeof 演算子は以下の結果を返します。
typeof true is boolean typeof null is object
数値や文字列に対して、typeof 演算子は以下の結果を返します。
typeof 62 is number typeof 'Hello world' is string
プロパティ値に対して、typeof 演算子はプロパティ値の型を返します。
typeof document.lastModified is string typeof window.length is number typeof Math.LN2 is number
メソッドや関数に対して、typeof 演算子は以下の結果を返します。
typeof blur is function typeof eval is function typeof parseInt is function typeof shape.split is function
定義済みオブジェクトに対して、typeof 演算子は以下の結果を返します。
typeof Date is function typeof Function is function typeof Math is function typeof Option is function typeof String is function
void
void 演算子は次の方法のうち、どちらかの方法で使用します。
1. void (expression)
2. void expression
void 演算子は値を返さずに評価する式を指定します。expression は評価する JavaScript の式です。式の周りの括弧はあってもなくてもかまいませんが、使用したほうが見た目はいいです。
void 演算子は次の方法のうち、どちらかの方法で使用します。
1. void (expression)
2. void expression
void 演算子は値を返さずに評価する式を指定します。expression は評価する JavaScript の式です。式の周りの括弧はあってもなくてもかまいませんが、使用したほうが見た目はいいです。
void 演算子を使用することで式をハイパーテキストリンクとして指定することができます。式は評価されますが、開いている文書の代わりに読み込まれるということはありません。
以下のコードはユーザがクリックしても何も起こらないハイパーテキストリンクを作成します。ユーザがリンクをクリックすると void(0) は undefined に評価され、JavaScript としては影響を及ぼしません。
<A HREF="javascript:void(0)">Click here to do nothing</A>
以下のコードはユーザがクリックするとフォームが送信されるハイパーテキストリンクを作成します。
<A HREF="javascript:void(document.form.submit())">
Click here to submit</A>