我正在尝试用javascript进行数组解构并遇到一些令人费解的行为
这是我的代码-
let res = {
start: {},
end: {},
};
[res.start.hour, res.start.minute] = [7, 20]
[res.end.hour, res.end.minute] = [17, 30]
console.log(res)
输出为
{ start: { hour: 17, minute: 30 }, end: {} }
由于某种原因,[17,30]被分配给res.start,而不是res.end。
此外,如果我添加如下的console.log语句
let res = {
start: {},
end: {},
};
[res.start.hour, res.start.minute] = [7, 20]
console.log(JSON.stringify(res));
[res.end.hour, res.end.minute] = [17, 30]
console.log(res)
然后它起作用。 res.end将获得正确的值。 输出-
{"start":{"hour":7,"minute":20},"end":{}}
{ start: { hour: 7, minute: 20 },
end: { hour: 17, minute: 30 } }
我进行了搜索,并通过MDN页面阅读了有关分解的内容,但是找不到对此的解释。 提前感谢您的帮助。
答案 0 :(得分:1)
尝试一下:
jupyter nbconvert --to script object_detection_tutorial.ipynb
我将您的代码从第一个块复制粘贴到VS Code中,并使用了“ Alt + Shift + F”(自动格式化)。它将代码固定为以下代码,表明明显有问题:
let res = {
start: {},
end: {}
};
[res.start.hour, res.start.minute] = [7, 20]; // Notice the semicolons.
[res.end.hour, res.end.minute] = [17, 30];
console.log(res);
事实证明,分号有时在JavaScript中确实很重要。