当我尝试使用以下代码递归地设置空对象的属性时,我偶然发现了一个奇怪的问题:
简化代码
const birthdays = {};
// Loop -> Passing day, id and birthday
birthdays[day] = day;
birthdays[day][id] = birthday;
Run Code Online (Sandbox Code Playgroud)
一天的例子: '01012017'
id的示例: 1547
生日示例: {name: John}
错误信息
Cannot create property '123' on string '06012017'
Run Code Online (Sandbox Code Playgroud)
我看到一些Angular有这个问题的人,但他们的答案并没有为我解决任何问题(如角度特定语法等).
Pra*_*man 11
在分配值之前,需要单独创建空对象.在这里使用const并不是一个好主意,无论如何,这只是我的建议.
const birthdays = {};
var day = 123;
var id = 21;
var birthday = 2016;
// Loop -> Passing day, id and birthday
birthdays[day] = {};
birthdays[day][id] = birthday;Run Code Online (Sandbox Code Playgroud)
我在 Node 14.3.0 (ES 2019) 中遇到了类似的错误消息TypeError: Cannot create property 'false' on boolean 'false',使用新的 Javascript 无分号语法,在下一行进行变量声明和赋值,然后进行解构赋值。
导致错误的代码:
var a = b ()
[c, d] = e ()
Run Code Online (Sandbox Code Playgroud)
解决方法:
var a = b ()
;
[c, d] = e ()
Run Code Online (Sandbox Code Playgroud)