tencent cloud

JS 支持情况

PDF
聚焦模式
字号
最后更新时间: 2025-07-04 16:48:09

运行限制

基于安全考虑,小程序中不支持动态执行 JS 代码,即:
不支持使用 eval 执行 JS 代码。
不支持使用 new Function 创建函数。

标准 ECMAScript 支持

小程序的 JS 执行环境 在不同平台上的执行环境存在差异,因此导致不同平台对 ECMAScript 标准的支持存在差异。
小程序基础库为了尽量抹平这些差异,内置了一份 core-js Polyfillcore-js 可以将平台环境缺失的标准 API 补齐。
需要注意的是,平台对 ECMAScript 语法的支持差异无法抹平,当你需要使用一些高级语法时,如 async/await 时,则需要借助开启 ES6 转 ES5 的功能来支持这些语法。

无法被 Polyfill 的 API

以下 API 在部分低版本客户端中无法使用,请注意尽量避免使用:Proxy 对象。

与标准的差异

Promise 时序差异

由于 iOS JavaScriptCore 的限制,iOS 15 及以下的 Promise 是一个使用 setTimeout 模拟的 Polyfill。这意味着 Promise 触发的任务为普通任务,而非微任务,进而导致在 iOS15 及以下的 Promise 时序会和标准存在差异
iOS 16 及以上不存在差异。
var arr = []

setTimeout(() => arr.push(6), 0)
arr.push(1)
const p = new Promise(resolve => {
arr.push(2)
resolve()
})
arr.push(3)
p.then(() => arr.push(5))
arr.push(4)
setTimeout(() => arr.push(7), 0)

setTimeout(() => {
// 应该输出 [1,2,3,4,5,6,7]
// 在 iOS15 小程序环境,这里会输出 [1,2,3,4,6,5,7]
console.log(arr)
}, 1000)
关于普通任务和微任务的区别请参见 深入:微任务与 JavaScript 运行时环境

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈