Javascript 节点中数组解构的奇怪行为
我遇到过以下情况:抛出未定义的错误: 因此,我将其转换为以下内容:Javascript 节点中数组解构的奇怪行为,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,我遇到过以下情况:抛出未定义的错误: 因此,我将其转换为以下内容: ... (str) => { const temp = str.split('.'); const first = temp[0]; const second = temp[1]; } ... ... (str) => { let temp = str.split('.'); let [first, second] = temp; } ... 奇怪的是,如果我将常量转换为let,它会工作: .
...
(str) => {
const temp = str.split('.');
const first = temp[0];
const second = temp[1];
}
...
...
(str) => {
let temp = str.split('.');
let [first, second] = temp;
}
...
奇怪的是,如果我将常量转换为let,它会工作:
...
(str) => {
const temp = str.split('.');
const first = temp[0];
const second = temp[1];
}
...
...
(str) => {
let temp = str.split('.');
let [first, second] = temp;
}
...
节点v6.9.1这工作正常
在节点上测试:
6.0.0
6.9.0
6.9.1
6.9.5
6.11.1
7.0.0
7.10.1
8.0.0
8.1.4
请参阅GitHub上的项目:
见Travis上的测试结果:
原始海报多次被要求提供显示这种行为的实际数据示例,但没有这样做。我和其他人特别要求提供节点版本和输入示例,当const更改为let时,哪些节点会发生错误,哪些节点不会发生错误。由于没有提供这样的例子,我会认为这个问题是误导性的,它描述的事实并没有发生。什么节点版本?它适用于节点v8.x.node v6.9.1。在什么情况下它会抛出未定义的异常?它为const而不是let抛出异常的输入是什么?我刚刚用节点v6.5.0和v6.10.0进行了测试,它也适用于这些情况。是的,我们在应用程序之外做了大量测试,它似乎可以工作。同样,我们也看到了这种变化,并选择了传统的数组访问器语法。我将在我们的应用程序中记录一个会话以供审阅。。。