JavaScript scope bench

模块作用域实验台

同一段变量声明,放进 classic script、IIFE 或 ES module 后,会不会出现在 window 上?切换实验模式,右侧结果由隐藏 iframe 实际运行后回传。

window 全局对象

当前脚本自己的作用域

实验代码

window 可见性

ready

速记对照

classic script

var 和函数声明会成为 window 属性;letconst 仍在全局词法环境中,但不会挂到 window

IIFE

变量被函数作用域包住,默认不泄漏。只有显式写到 window 的桥接对象,外部才能访问。

ES module

模块有自己的顶层作用域,默认严格模式。顶层声明不会成为 window 属性,除非你故意挂载。