在JavaScript权威指南(中文第六版P58)有一行演示:
var truevar =1;
fakevar = 2;
this.fakevar2 =3;
delete truevar
delete fakevar
delete fakevar2
照书上说,应该分别返回false true true;但是在IE8的调试器上,返回的确是:对象不支持此操作。仔细看看,是删除fakevar2出错。那就先不尝试这一句,结果删除truevar 返回的竟然也是true;并且测试也确实把这个号称为不可删除的全局变量给删除了~
到Chrome下尝试,删除一个var声明的全局变量也完全没有问题。所谓的不可配置从何而来~
function f(){var scope=10;console.log(scope);scope=1000;console.log(window.scope); } f();
chrome下返回10和undefined
function f(){scope=10;console.log(scope);scope=1000;console.log(window.scope); } f();
返回10 和1000
说明在处理作用域的问题上,var还是起到了一定的效果的。
连权威指南都这样了~还有没有个靠谱的玩意啊~