【发布时间】:2017-02-25 00:27:51
【问题描述】:
这是我以前从未见过的错误。
这是一个简单的复制:https://jsfiddle.net/jakelauer/qr0ysmst/3/
const x = myVar => {
console.log(myVar);
for(let myVar of [1,2,3]){
console.log(myVar);
}
};
x(10);
Chrome 中的输出:10、1、2、3
在 Safari 中输出:SyntaxError: Cannot declare a let variable twice: 'myVar'.
想法?这是 Safari 中的错误吗?
编辑 - 值得注意的是,我不会故意这样做。我注意到它是因为我使用了 ASP.NET 捆绑和缩小系统,并且该系统做到了这一点(所以我的网站在 Safari 中崩溃了)
编辑 2 - 有趣的是,这适用于两种浏览器
let x = 10;
for(let x of [1,2,3])
{
console.log(x);
}
【问题讨论】:
-
我不确定这应该是否是一个错误,但我认为隐藏这样的参数是不好的编码。您应该在循环中调用
myVar变量。 -
@Frxstrem 我当然同意 - 我永远不会故意这样做。我注意到它是因为我使用了 ASP.NET 捆绑和缩小系统,并且该系统做到了这一点(所以我的网站在 Safari 中崩溃了)。
-
什么 Safari 版本?
-
@AndrewLi 我正在使用 10.0.3
-
对我来说绝对像是一个 Safari 错误。循环中的
let应该在其自己的特定于迭代的环境中运行。
标签: javascript google-chrome safari ecmascript-6