var
test
=
"
wrong
"
Object.prototype.test = " right " ;
var score = 0 ;
void function f0(){
if (test == " right " )score ++ ;
}()
void function (){
if (test == " wrong " )score ++ ;
}()
var e = " right " ;
try {
throw new Error;
} catch (e) {
e = " wrong " ;
if (test == " right " )score ++ ;
}
if (e == " right " )score ++ ;
var f;
void function f(){
}
if ( typeof f == " undefined " )score ++ ;
var err;
function a(){
var m = " right " ;
var n;
return function (){
var err;
return arguments[ 0 ].call( this ,arguments[ 1 ]);
}
}
try {
var b = a();
if (b(eval, " m " ) == " right " )score ++ ;
} catch (err) {
}
alert(score + " /6 " )
Object.prototype.test = " right " ;
var score = 0 ;
void function f0(){
if (test == " right " )score ++ ;
}()
void function (){
if (test == " wrong " )score ++ ;
}()
var e = " right " ;
try {
throw new Error;
} catch (e) {
e = " wrong " ;
if (test == " right " )score ++ ;
}
if (e == " right " )score ++ ;
var f;
void function f(){
}
if ( typeof f == " undefined " )score ++ ;
var err;
function a(){
var m = " right " ;
var n;
return function (){
var err;
return arguments[ 0 ].call( this ,arguments[ 1 ]);
}
}
try {
var b = a();
if (b(eval, " m " ) == " right " )score ++ ;
} catch (err) {
}
alert(score + " /6 " )
完全实现了ECMAScript3的JS引擎应该得到 6/6
然而
InternetExplorer8.0 2/6
FireFox3.0 5/6
Opera9.5 4/6
Safari3.1.1 4/6
浏览器 | IE | FF | Opera | Safari |
一 | █ | █ | █ | █ |
二 | █ | █ | █ | █ |
三 | █ | █ | █ | █ |
四 | █ | █ | █ | █ |
五 | █ | █ | █ | █ |
六 | █ | █ | █ | █ |