Firefox 3.6.13中的Javascript参数

时间:2010-12-23 01:35:31

标签: javascript

我想我知道为什么这会给Firefox带来错误,但为什么它在IE / Chrome中的工作方式不同?

html:

<a id="hello" onclick="go(hello)">Hello World</a>

javascript:

function go() {
  arguments[0] = 'this is my argument';
  alert(arguments[0]);
};

只是想知道为什么在IE&amp;它警告'这是我的论点',但在Firefox中它表示变量undefined。有线索吗?我知道如果我把'hello'这样的引号问好,它将适用于所有浏览器。

这是jsbin.com

4 个答案:

答案 0 :(得分:3)

因为hello未定义而导致代码失败..

使用go('hello')代替..

这不是参数问题,而是每个浏览器如何评估字符串以成为实际代码。

答案 1 :(得分:0)

或者您可以再次传递this.id作为参数:

go(this.id)

答案 2 :(得分:0)

在IE中,由于hello尚未被声明,因此它被视为window.all['hello'],因此在IE上函数调用实际上有效。

答案 3 :(得分:0)

这里的所有答案都是事实上正确的。但是,这里真正的问题是IE自动为所有带有id的节点创建全局变量。由于你的节点的id是'hello',IE创建了一个名为hello的全局变量,它是传递给处理程序的。这是非标准行为,您不应该使用它。从您的代码中,不清楚您需要传递什么。如果你想要点击的对象,只需使用onclick="go(this); return false;"或者甚至更好,使用不引人注目的方法。

如果您将节点ID更改为“hello-mama”,那么您的代码将在所有浏览器中被破坏:)