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"]();

如果您真的想在不使用引号的情况下运行该函数,那么您可以执行以下操作。请注意,这是一种不正当的黑客行为,而不是您应该在生产代码中执行的操作。

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 回答