0

このJavaScriptはどのようにコンパイルされますか?私にとってさえ、それは間違っているように見えます、そして私はかつてperlでプログラムしました。これをGoogleChromeコンソールに入力すると:

window[function () {}] = 42;
>>> 42

何も爆発しませんでした。どのように?

肩をすくめました。財産が明らかに割り当てられなかったかもしれないと考えるか、もしそうなら、少なくとも即座に破壊されるべきでした。しかし、lo:

window[function () {}]
>>> 42
4

1 に答える 1

3

これは実際には型強制の例であり、javscriptは文字列をプロパティ名として使用するため.toString()、関数定義を呼び出します。

これを行うwindow[function () {}]と、javascriptが呼び出して、プロパティ名となるfunction () {}.toString()文字列を取得します。"function () {}"

あなたはそれをすることによってそれを見ることができますalert(function () {});

したがって、最終的にはプロパティになりますwindow["function () {}"]

このシーケンスを試して、次のことを説明してください。

window[function () {x=1;}] = 42;
alert(window["function () {x=1;}"]);    // alerts 42
于 2013-03-26T09:33:57.707 に答える