uniapp使用的是vue写法,直接赋值
let a = {};
let b = 'c.d.e';
a[b]='result';
this.a = a;
微信小程序原生代码如下
let a = {};
let b = 'c.d.e';
a[b]='result';
this.setData({
a: a
})
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows10
HBuilderX类型: 正式
HBuilderX版本号: 3.0.5
第三方开发者工具版本号: 1.05.2110110
基础库版本号: 2.16.1
项目创建方式: HBuilderX
uniapp使用的是vue写法,直接赋值
let a = {};
let b = 'c.d.e';
a[b]='result';
this.a = a;
微信小程序原生代码如下
let a = {};
let b = 'c.d.e';
a[b]='result';
this.setData({
a: a
})
把上面的示例代码放到对应编译器中执行即可
编译后的代码运行结果与小程序原生代码运行结果一致
编译后的代码运行结果有偏差,高版本编译器可能会导致小程序直接扑街
如题,操作对象时如果键名中带有 '.' 点号时,使用HbuilderX打包uniapp项目到小程序,编译结果与表现不符合预期。
在一个键名有2个 '.' 号的情况时,高版本HbuilderX编译运行后的结果会引起赋值上的报错【有可能导致开发工具或者真机内存溢出直接卡死】
因报错仅发生在赋值这一步骤,怀疑是编译器针对 setData 方法实现的兼容方案有缺漏之处
导致了 xxx['a.b.c.d']='result' 这种操作被解析成 xxx.a.b.c.d='result' 【'a.b.c.d'为字符串类型值】
此处仅为个人猜测,具体还待各位大哥小姐姐们排查
附上预期结果与实际结果截图