Javascript函数定义中的句点(函数window.onload(){})

时间:2012-10-08 15:20:48

标签: javascript

  

可能重复:
  JavaScript Function Syntax Explanation: function object.myFunction(){..}

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

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

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

window.onload = function(){}

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

2 个答案:

答案 0 :(得分:2)

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

ECMAScript spec on function definition

  

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

     

创建当前变量对象的属性(如   10.1.3)名称标识符

SO on valid names(以防万一有人会认为“window.onload”是函数的名称,因此会window.window.onload

答案 1 :(得分:0)

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

function myFunc(args)
{
  ...
}

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

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

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