我有点困惑:
let print = console.log.bind(console)
Run Code Online (Sandbox Code Playgroud)
不起作用(给出"不能重新声明块范围变量'print'"),但这完美地起作用:
import { readFileSync } from 'fs' //or even import { } from 'anything'
const print = console.log.bind(console)
Run Code Online (Sandbox Code Playgroud)
更令人费解的是,使用变量的另一个名称(如"printIt")可行.
发生了什么?
根据顶级导入或导出语句的存在,文件中的顶级作用域的处理方式不同.这不是一个错误:
具有一个顶级导入/导出的文件(例如,示例中为test.ts)被视为模块.模块有自己的范围,不与全局范围声明合并.
所以,只要你有顶级进口,print变量现在是在自己的范围内,不与全球冲突print中定义DOM类型声明(在浏览器环境中,有顶级命名全局函数print()是打开打印当前页对话框) .
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |