各浏览器关键字/保留字作为对象属性的差异
最近记录了各种各样的标识符 “同名” 现象,有 Javascript中同名标识符优先级 和 有name为action的表单元素时取form的属性action杯具了 。
最近又碰到一个,后台同事返回了如下的JSON结构:
{default:{name:'jack'}}
在IE6/7/8中出错了,调试了很久才发现原因。
细心的朋友获取已经发现了,default不是JS的关键字吗?可以作为属性吗?有的或许说绝对不行。
测试下:
var obj = {default:555}; alert(obj.default);
可看到在IE6/7/8/Safari/Opera中提示语法错误,无法正常运行。但IE9/Firefox/Chrome则弹出了“555”,正常。
如果改成[]方式获取,各浏览器表现同上。
虽然在IE9/Firefox/Chrome中关键字可作为对象属性(Reserved words as property names),但坚决杜绝此类写法...
相关: