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编码字符串时,注意返回的数组长度。