creator 3.8.6 editor 和 preview 生成的 js 代码似乎存在一些差异

用 creator 3.8.6 新建了一个空的工程
我写了一段简单例子用来测试

test.ts

let strs = {
a: ‘a’,
b: ‘b’,
c: ‘c’
}
let fns = {}
for (let key in strs) {
let localName = key
fns[localName] = function () {
console.log(localName)
}
}
for (let e in fns) {
fnse
}
export { }

发现编辑器打印的结果是 c c c

但是 浏览器运行的结果是 a b c

对比 editor 和 preview 的js 文件
editor 会将 var 声明提前,preview 并不会,所以 localName 作用域并不相同

这是默认设置的原因么?为什么会存在这种差异呢?
对于 editor 和 preview 不同环境需要注意什么来避免这种问题么?

重新下了cocos creator 3.8.6 空的工程,确实 编辑器 和 浏览器 是不一致的

let input = {

a: 'a',

b: 'b',

c: 'c',

}

let fns = {}

for (const key in input) {

let localKey = key

fns[key] = () => {

    console.log(localKey)

}

}

for (const key in fns) {

fns[key]()

}

export { };

这段在 编辑器 输出打印
3 [Scene] c
浏览器是
a b c

是 cocos creator 禁止再用这种写法么

cocos creator 2.4.3 两边表现是一致的,都是 a b c
有些疑惑

原来是 3 的编辑器 生成 es5 没有降级了 ,学到了,3Q