1

Chrome 開発ツールで関数名を悪用しようとしていました:

window["hello world"] = function () { console.log("Hello World!"); }

上記の行はhello worldグローバル関数を作成します。

オートコンプリートの提案にも表示されます。

このように呼び出すと ( hello world())、構文エラーが発生します。

SyntaxError: Unexpected identifier

window["hello world"]()しかし、引用符 ( )を使用せずにこの関数を呼び出すにはどうすればよいでしょうか。

4

1 に答える 1

2

関数に名前を付けていません。windowオブジェクトのプロパティに割り当てられる無名関数です。

プロパティ名にはスペースが含まれているため、識別子を使用してアクセスすることはできません。そのため、プロパティにアクセスする唯一の方法は、window オブジェクトを明示的に使用することです。

window["hello world"]();

quotes を使用せずに関数を実行したい場合は、次のようにします。これはひねくれたハックであり、製品コードで行うべきものではないことに注意してください。

window["hello world"] = function () { console.log("Hello World!"); }
// No quotes for any of the code used to access the above.
window[
    [ 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100 ].map(
        function (currentValue) {
            return String.fromCharCode(currentValue);
        }
    ).join(new String)
]();
于 2014-10-09T10:16:36.553 に答える