2011-01-26 9 views
0

新しい機能の直後にかっこを続けなければならないのはなぜですか?なぜこれがエラーであるのか、MSDNのWebサイトでは不明な点がありました。関数オブジェクトの新しいインスタンスとして変数を宣言するときに、IE6が "Function expected"エラーを表示するのはなぜですか?

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

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

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

IE6を使用しているため –

答えて

1

私はコードがあなたが思うとは思いません。このようにそれを試してみてください:

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

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

あなたは「こんにちは」警告が表示されます最初に、私はあなたが期待するものとは逆だと思う警告、「コンストラクタを呼び出す」newオペレータがコンストラクタを呼び出してアラートを生成しています。 greetings()行は、実際にはグリーティングが単なるオブジェクト(SayHelloのインスタンス)なので、実際にはタイプエラーをスローします。私は推測している(私はコピーを持っていないので)IE6はコンストラクタをコールしていないので、括弧が欠けているので別の方法で壊れているようだ。