代码沙箱是为小程序提供的一项功能,用于隔离不同运行环境之间的差异,确保代码在不同平台(IDE、安卓/iOS、审核工具)上表现一致。
设置路径:
小程序在从开发、测试到上线的整个生命周期中,会经历多个运行环境,例如:
这些 JavaScript 运行环境存在差异。例如,
// 在非 WebView 环境中执行会报错 window; // Uncaught ReferenceError: window is not defined
代码沙箱旨在抹平这些环境差异,提供一个更可控、更一致的开发与运行环境。
沙箱提供三种模式:
// 读取这些变量会抛出错误。 console.log(window); // Uncaught ReferenceError: window is not defined
// 错误示例:这将破坏小程序的核心功能
globalThis.createRenderer = () => { /* ... */ };
// a.js
console.log(window); // 输出: undefined
globalThis.window = { msg: 'my window' };
console.log(window); // 输出: undefined
// b.js
console.log(window); // 输出: undefined
// a.js
globalThis.window = { msg: 'my window' };
// b.js
console.log(window); // 输出: { msg: 'my window' }
// 在严格模式下,这不会影响小程序运行
globalThis.createRenderer = () => {};
// 不推荐的方式
var global = new Function("return this")();
var global = (function() { return this })();
// 推荐
globalThis;