8

可能重复:
JavaScript 函数语法说明:function object.myFunction(){..}

我最近看到了一些(遗留)javascript代码,如下所示:

function window.onload(){
  // some code
}

对我来说,这看起来不像是有效的 javascript,因为标识符中不能有句点,但它似乎在 IE8 中工作。我认为它相当于:

window.onload = function(){}

我在 Chrome 和 IE9 中尝试了相同的代码,它们都引发了语法异常,所以我认为 IE8 的这个“特性”是一些应该被替换的非标准函数定义是否正确?有问题的代码只发送到 IE 浏览器,所以这可能是我以前没有遇到过这个问题的原因。

4

2 回答 2

2

对于最近浏览器上的 Javascript,您通常可以参考ECMAScript,显然,这在 ECMAScript 中是不允许的:

ECMAScript 函数定义规范

产生 FunctionDeclaration : function Identifier ( FormalParameterListopt ){ FunctionBody } [...]

使用名称 Identifier 创建当前变量对象的属性(如 10.1.3 中指定)

所以在有效名称上(以防有人认为“window.onload”是函数的名称,因此应该是window.window.onload

于 2012-10-08T15:25:34.910 回答
0

您可以使用以下语法定义新函数:

function myFunc(args)
{
  ...
}

window.onload函数由浏览器定义,可能是null. 句点表示该onload值是window对象的成员。以下语法将采用一个函数并将其分配给onload成员的值:

window.onload = function()
{
  ...
};

不要忘记结尾的分号,因为这是一个赋值语句。

于 2012-10-08T15:35:16.303 回答