読者です 読者をやめる 読者になる 読者になる

関数リテラルがうまく動作しない

JavaScript

JavaScriptの関数リテラルが動作しません。

[sourcecode language="JavaScript"] x = -1;

var f = function fact(x){ return x; };

var z = x - f; document.write("z =" + z);

--- 実行結果 z =NaN

[/sourcecode]

本来であれば 0 が表示されるのですが、なぜかNaNとなっています。

ならばということで、それぞれの変数を取得すると…

[sourcecode language="JavaScript"] x = -1;

var f = function fact(x){ return x; };

document.write("x = " + x + " "); document.write("f = " + f + " ");

--- 実行結果 x =-1 f =function fact(x) { return x; } [/sourcecode]

となっています。関数として実行されているわけではなく、文字列として値を取得していることになります。

謎です…。