123;
}
显然这是个声明,那下面呢
var b=function{ 123};
这个大家就怀疑了,好似不是声明,没有名字,只是个匿名,好,再看
var b=function test{ 123};
这个到底是不是声明呢,好象是,那我回答你"不是"
alert(test);
var b=function test{ 123};
可以在非ie上面任何个js实现去测试,会报告test未定义,那如果这样呢
var b=function test{ 123};
alert(b);
alert(test);
会显示出function test{...}这样toString结果,可以第 2个alert还是异常,为什么呢,也就是说这里function test{ 123}不是声明,而是个对象,把引用放到了b里面而已,所以不会象声明样默认把对象绑定到test名字上,那为什么我不叫用ie测试呢,
alert(test);
var b=function test{ 123};
ie会把显示出来,ie比较笨,不会区分单独function声明和=右面对象区别,另外ie甚至还支持function String.prototype.test{...}这样声明,可见iejs bug还真不少了,难怪wilson不支持es4,非得搞个es3.1出来呢,其实是自己bug修正版
最新评论