Firefox と Chrome のコンソールで何が起こったかについては、以下を参照してください。
> var f = function() {}
undefined
> f.name = 'f'
"f"
> f.name
""
> f.id = 1
1
> f.id
1
なぜf.name = 'f'
ノーオペレーションなのですか?
Firefox と Chrome のコンソールで何が起こったかについては、以下を参照してください。
> var f = function() {}
undefined
> f.name = 'f'
"f"
> f.name
""
> f.id = 1
1
> f.id
1
なぜf.name = 'f'
ノーオペレーションなのですか?
おそらく実装に依存します。
一部の実装でname
は、関数オブジェクトのプロパティが関数名として使用されます (関数名がある場合)。これらの場合、これはおそらく読み取り専用です。
これは非標準の機能です。
例えば:
var foo = function bar() {};
alert(foo.name); // will give "bar" in some cases.
Firefox や Chrome で、いじってみたら変わらない…
var foo = function bar() {};
foo.name = "baz";
alert(foo.name); // still "bar" in Firefox and Chrome
name
プロパティの MDN ドキュメント。ここにドキュメントのいくつかの重要なポイントがあります...
「規格外」
「名前プロパティは、関数の名前、または無名関数の空の文字列を返します」
「関数の名前は変更できません。このプロパティは読み取り専用です」