1# ArkCompiler子系统Changelog
2
3## cl.arkcompiler.1 JSON.parse解析非法字符串行为变更
4
5**访问级别**
6
7公开接口
8
9**变更原因**
10
11JSON.parse解析非法字符串未抛JS异常,表现与预期及ECMA规范不一致
12
13**变更影响**
14
15该变更为不兼容性变更。
16
17```
18const strData = `{"k1": "hello", "k2": 3}`;
19const strErr = strData.substring(0, strData.length - 2); // `{"k1": "hello", "k2": `
20JSON.parse(strErr);
21```
22
23变更前:JSON.parse解析非法字符串`strErr`能够正常解析,未抛出JS异常。
24
25变更后:JSON.parse解析非法字符串`strErr`抛出JS异常。
26
27**起始API Level**
28
2912
30
31**变更发生版本**
32
335.0 Beta3
34
35**变更的接口/组件**
36
37JSON.parse/ASON.parse/util.json.parse
38
39**适配指导**
40
41针对JSON.parse解析非法字符串的异常场景,开发者需要保证传入的字符串为合法字符串,或者使用try-catch捕获异常。
42
43## cl.arkcompiler.2 JSON.parse解析浮点数下溢或-0行为变更
44
45**访问级别**
46
47公开接口
48
49**变更原因**
50
51JSON.parse相关接口解析字符串含有浮点数下溢或-0的情况,表现与规范不一致。
52
53**变更影响**
54
55该变更为不兼容性变更。
56
57变更前:
58`JSON.parse('123.456e-789');` 返回 `-Infinity`,是错误结果。
59`1/JSON.parse('-0');` 返回 `Infinity`,是错误结果。
60
61变更后:
62`JSON.parse('123.456e-789');` 返回 `0`,是正确结果。
63`1/JSON.parse('-0');` 返回 `-Infinity`,是正确结果。
64
65**起始API Level**
66
6712
68
69**变更发生版本**
70
715.0 Beta3
72
73**变更的接口/组件**
74
75JSON.parse/ASON.parse/util.json.parse
76
77**适配指导**
78
79对于开发者,排查代码中是否存在对JSON.parse相关接口传入下溢的浮点数字符串与-0的情况,如果存在该现象,则排查代码逻辑是否能适配正确的值。
80
81## cl.arkcompiler.3 TextEncoder.encodeInto()接口变更
82
83**访问级别**
84
85公开接口
86
87**变更原因**
88
89TextEncoder.encodeInto编码字符串,当字符串中每多一个'\0'字符,返回的数组长度会增加2,长度异常。
90
91**变更影响**
92
93该变更为不兼容性变更。
94
95```
96const arr = encoder.encodeInto('\0ab');
97arr.length;
98```
99
100变更前:arr = [0x00, 0x61, 0x62, 0x00], arr.length 为4
101
102变更后:arr = [0x00, 0x61, 0x62], arr.length 为3
103
104**起始API Level**
105
1069
107
108**变更发生版本**
109
1105.0 Beta3
111
112**变更的接口/组件**
113
114TextEncoder.encodeInto
115
116**适配指导**
117
118针对TextEncoder.encodeInto编码字符串时,注意返回的数组长度。