1 运行环境

平台 逻辑层 渲染层
iOS JavaScriptCode WKWebView
Android V8 Mobile Chrome
开发工具 NW.js Chromiun WebView
PC Chrome Chrome
MAC JavaScriptCode WKWebView

1.1 平台差异

  • js 语法和 API 支持不一致

    • es6 转 es5

    • 小程序基础库内置了必要的 polyfill 来弥补 API 差异

  • wxss渲染表现不一致

    • 样式补全

2 js支持情况

2.1 运行限制

不支持动态执行 js 代码

new Function('return this') 除外

2.2 标准 ECMAScript 支持

  • 基础库内置 core-js Polyfill

  • 代码转换工具

2.3 无法被 polyfill 的 API

  • Proxy 对象

2.4 Promise 时序差异

  • iOS 环境下的 Promise 是一个使用 setTimeout 模拟的 Polyfill -> 宏任务而非微任务 -> 在 iOS 下的 Promise 时序会和标准存在差异