tencent cloud

腾讯云超级应用服务

动态与公告
【2025年1月2日】关于腾讯云小程序平台更名为腾讯云超级应用服务的公告
控制台更新动态
Android SDK 更新动态
iOS SDK 更新动态
Flutter 更新动态
IDE 更新动态
基础库更新动态
产品简介
产品概述
产品优势
应用场景
购买指南
计费概述
按量计费(后付费)
续费指引
停服说明
快速入门
套餐管理
概述
控制台账号管理
存储配置
加速配置
品牌化配置
平台功能
控制台登录
用户和权限体系
小程序管理
小游戏管理
应用管理
商业化
平台管理
用户管理
团队管理
运营管理
安全中心
代码接入指引
Demo 及 SDK 获取
Android
iOS
Flutter
App 服务端接入指南
GUID 生成规则
小程序开发指南
小程序介绍与开发环境
小程序代码组成
指南
框架
组件
API
服务端
JS SDK
基础库
IDE 使用指南
小游戏开发指南
指南
API
服务端
实践教程
小程序登录实践教程
小程序订阅消息实践教程
支付相关实践教程
广告接入实践教程
小游戏订阅消息实践教程
相关协议
数据处理和安全协议

JS 支持情况

PDF
聚焦模式
字号
最后更新时间: 2025-02-24 17:10:37

运行限制

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

标准 ECMAScript 支持

小游戏的 JS 执行环境 在不同平台上的执行环境存在差异,因此导致不同平台对 ECMAScript 标准的支持存在差异。
小游戏基础库为了尽量抹平这些差异,内置了一份 core-js Polyfill。core-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 运行时环境



帮助和支持

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

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

文档反馈