为什么IE6在将变量声明为函数Object的新实例时会出现“函数预期”错误?

时间:2011-01-26 19:17:18

标签: internet-explorer internet-explorer-6 javascript

为什么括号必须在新函数后立即跟随? MSDN网站不清楚为什么这是一个错误。

// Fails but only in IE6
var greetings = new SayHello;
greetings();

// This works in IE6
var salutations = new SayHello();

function SayHello() {
 alert("Hello");
};

1 个答案:

答案 0 :(得分:1)

我认为代码不会按照您的想法执行。试试这种方式:

var greetings = new SayHello;
alert('calling the constructor');
greetings();

function SayHello() {
 alert("Hello");
};

您将首先看到“Hello”警报,然后是“调用构造函数”警报,我认为这与您的预期相反。 new运算符正在调用构造函数并生成警报。 greetings()行实际上会抛出一个类型错误,因为此时问候只是一个对象(SayHello的一个实例)。我猜测(因为我没有副本)IE6只是在括号丢失时没有调用构造函数,所以它似乎以不同的方式被破坏了。