特殊演算子 (JavaScript)

いくつかの特殊演算子を使用できます。

特殊演算子は以下のとおりです。
演算子 説明
condition ? expr1 : expr2 condition が true の場合は expr1 の値を返し、condition が false の場合は expr2 の値を返します。この演算子は、if ステートメントの簡略な手段として使用できます。
expr1 , expr2 両方の式を評価し、expr2 の値を返します。この演算子は、1 つのステートメント (通常は varfor) に複数の式を置く場合に使用できます。
delete objectName objectName を削除します。 削除が成功した場合は true を返し、それ以外の場合は false を返します。削除されたオブジェクトにアクセスしようとすると、実行時エラーが発生します。オブジェクトには変数が含まれます。
delete objectName.property (事前定義プロパティではなく) ユーザー定義のプロパティ objectName を削除します。 プロパティ値を undefined に設定して、削除が成功した場合は true を返し、それ以外の場合は false を返します。
delete property delete objectName.property と同じですが、with ステートメントの一部として使用されます。
delete objectName[index] 使用しないでください。配列の要素を「削除」するには、値 undefined をその配列要素に割り当てます。
function(param, param, ...) { statements } 式で匿名関数を宣言します。
function name(param, param, ...) { statements } 式で名前付き関数を宣言します。
objectName = new objectType(param, param, ...) 組み込みまたはユーザー定義のオブジェクトタイプに基づいてオブジェクトを作成します。
this 実行を開始したオブジェクトを参照します。関数を呼び出す場合、関数の内部にある this は、呼び出し側オブジェクトを参照します。関数に基づくオブジェクトを作成する場合、関数の内部にある this は、その関数を参照します。
this.propertyName 実行を開始したオブジェクトのプロパティ (変数) を参照します。
typeof operand オペランドの型を示すストリングを返します。オペランドとしては、オブジェクト、プロパティ、変数、リテラルを指定できます。一般的な型は numberstringbooleanobjectfunctionnull です。
typeof(operand) typeof operand と同じです。
void expression 値を返さずに式を評価します。
void(expression) void expression と同じです。
object.property オブジェクトのプロパティ (変数) を参照します。プロパティ名は有効な ID でなければなりません。
object["property"]

object['property']

オブジェクトのプロパティ (変数) を参照します。プロパティ名には、任意のストリングを指定できます。

使用法

オブジェクトタイプを定義するには、その名前、プロパティ、メソッドを指定する、当該オブジェクトタイプ用の関数を作成します。 オブジェクトは、それ自体が別のオブジェクトであるプロパティを持つことができます。

in 演算子と instanceof 演算子は、サーバーサイドではサポートされません。

この例では、条件に応じて、さまざまなストリングを印刷します。
function p(stuff) {
	print("<<<" + stuff + ">>>");
}

// Test true path
var n = 5;
p(n > 0 ? "n is greater than 0" : "n is not greater than 0");

// Test false path
n = -1;
p(n > 0 ? "n is greater than 0" : "n is not greater than 0");

// Same as ...
if(n > 0)
	p("n is greater than 0");
else
	p("n is not greater than 0");

この例は、3 つのカンマのシナリオを示します。最初のシナリオは実用的ではありませんが、あとの 2 つは役に立ちます。

function p(stuff) {
	print("<<<" + stuff + ">>>");
}

p(0, -1, 1); // prints 1

var n = 0, m = -1, o = 1;
p(n); p(m); p(o); // prints 0 -1 1

for(var i = 0, j = 1; i < 5; i++, j++) {
	p("i = " + i + " and j = " + j);
} // prints i = 0-4 and j = 1-5

この例では、Number オブジェクトを削除します。削除後にこのオブジェクトにアクセスしようとすると、実行時エラーが発生します。

function p(stuff) {
	print("<<<" + stuff + ">>>");
}

try {
	var num = new Number(2.4);
	p(num.toFixed(8));
	if(delete num) p("num deleted"); else p("num not deleted");
	p(num.toFixed(8));
} catch(e) {
	p(e);
}

この例では、Number オブジェクトのプロパティを作成し、その後にそのプロパティを削除します。

function p(stuff) {
	print("<<<" + stuff + ">>>");
}

try {
	var num = new Number(2.4);
	p(num.toFixed(8));
	num.myprop = 5;
	p(num.myprop);
	if(delete num.myprop) p("num.myprop deleted");
		else p("num.myprop not deleted");
	p(num.toFixed(8));
	if(num.myprop == undefined) p("undefined"); else ("notundefined");
} catch(e) {
	p(e);
}

この例は、匿名関数を作成して呼び出す方法を示します。

function p(stuff) {
	print("<<<" + stuff + ">>>");
}

foo = function(param1, param2, param3) {
	p("param1 = " + param1);
	p("param2 = " + param2);
	p("param3 = " + param3);
}

foo(1, 2, 3);

この例は、名前付き関数を作成し、その割り当てられた変数とその名前を使用して呼び出す方法を示します。

function p(stuff) {
	print("<<<" + stuff + ">>>");
}

foo = function bar(param1, param2, param3) {
	p("param1 = " + param1);
	p("param2 = " + param2);
	p("param3 = " + param3);
}

foo(1, 2, 3);
bar(1, 2, 3);

この例は、組み込みタイプまたはユーザー定義タイプのオブジェクトを作成する方法を示します。

function p(stuff) {
	print("<<<" + stuff + ">>>");
}

n = new Number(2.4);
p("n = " + n.toFixed(8));

// Create function for user-defined object
// Here "this" means the user-defined object
function myobj(param1, param2, param3) {
	this.prop1 = param1;
	this.prop2 = param2;
	this.prop3 = param3;
}

m = new myobj(1, 2, 3);
p("m.prop1 = " + m.prop1);
p("m.prop2 = " + m.prop2);
p("m.prop3 = " + m.prop3);

この例では、プロパティの点と大括弧の表記を示します。

function p(stuff) {
	print("<<<" + stuff + ">>>");
}

function f() {
	this.s = "DOT_S";
}

var ff = new f();
p("ff.s = " + ff.s); // <<<ff.s = DOT_S>>>
p("ff[¥"s¥"] = " + ff["s"]); // <<<ff["s"] = DOT_S>>>