不同JS环境use strict对重复属性处理的差异
来源:互联网 发布:手机软件显示网络异常 编辑:程序博客网 时间:2024/06/10 10:28
昨天改一个Bug不小心属性名重复了,引出了一个很有意思的小Bug。导致Bug产生的是一段JS对象声明的代码,其结构与如下代码等价。
var fn = function() { 'use strict'; var obj = { a: 1, a: 2 // 因为声明的属性比较多,后面添加的属性不小心与已有的属性重复了 }; return obj};fn();
当时自己在PC的chrome中测试了程序,运行没问题,也在安卓机上做了测试,也没问题。但在iphone中却报错了,导致页面无法正常渲染。通过Safari连接手机进行调试很容易的定位到了出错的代码,从而发现这个很有意思的问题:不同的JS运行环境下严格模式对重复属性的处理策略各有不同。下面我们看下各个运行环境对这段代码的执行情况
- chrome
- safari
- Firefox
- nodejs
从上面的实验结果可以看出,即使在严格模式下,各个运行环境对部分细节的处理也是不尽相同的。safari和nodejs的严格模式下对象字面量禁止重复属性声明,而chrome和Firefox则没有这方面的限制。chrome和nodejs按说用的同一个脚本引擎,理应表现一致才对,出现这个的差异有点让人费劲。所以即使严格模式下运行通过的代码也不是100%保险的,多做测试还是非常必要的。
0 0
- 不同JS环境use strict对重复属性处理的差异
- 不同浏览器对与js处理时间的方式会有差异
- JS "use strict"
- JS-use strict
- js中的"use strict";
- js 'use strict' & plupload
- 'use strict'-->校验js
- use strict 的用法
- js--严格模式 'use strict'
- IE6与IE7对使用不同版本的XMLHttpRequest对像的处理有差异。
- Js中的严格模式use strict
- js中的严格模式use strict
- 浅谈js严格模式 use strict
- use strict
- use strict
- "use strict";
- "use strict";
- HTML、CSS、JS对unicode字符的不同处理
- hdu 1374 求三角形外接圆的半径
- memcache
- UIScrollerView和UITableView下拉刷新,上拉加载更多
- 黑马程序员_java复习笔记1-面向对象
- 【转】hash_map 与 hash_set 详解
- 不同JS环境use strict对重复属性处理的差异
- 好题flag--(6.7)
- 第二章第21题
- CSS3 icon font完全指南(CSS3 font 会取代icon图标)
- Java NIO系列教程(三) Buffer
- ZigBee初探
- webfont 平台推荐
- 完美世界手游《圣斗士星矢》lua逻辑框架分析
- Python装饰器有趣实例探究