PhantomJS 1.9.8解析错误排查:动态键名嵌套对象语法问题
解决PhantomJS 1.9.8中动态对象键名的SyntaxError问题
问题根源
PhantomJS 1.9.8基于的是较旧版本的WebKit JavaScript引擎,它不支持ES6引入的计算属性名语法——也就是你代码里用[contactId]直接作为对象字面量键名的写法。这种动态定义键名的方式是ES6才新增的特性,旧版引擎无法识别,因此会抛出SyntaxError。至于报错行号指向注释行,大概率是旧引擎的语法错误行号识别存在偏差,真正的问题核心还是出在不兼容的动态键名写法上。
另外提个小细节:你代码里的ContactContactId:contactId后面缺少逗号,不过这不是引发错误的核心原因,哪怕补上逗号,计算属性名的语法依然不被PhantomJS 1.9.8支持。
兼容ES5的解决方案
改用PhantomJS 1.9.8能识别的ES5语法实现动态键名:先创建空对象,再通过方括号语法赋值。修改后的代码如下:
var contactId='53d6e7ce-a874-4f35-a7ad-49373d0a56ae' var localDBData = { ContractContacts: {} }; // 通过方括号语法动态添加键值对 localDBData.ContractContacts[contactId] = { ContactContactId: contactId, ContactName: 'sam', IsInactive: false };
这样调整后,代码就能在PhantomJS 1.9.8环境中正常运行了。
内容的提问来源于stack exchange,提问作者Palanivelu Samudi
相关产品推荐
相关产品推荐

