在这个打字稿/ Javascript代码中:
var v= {
x: 1,
y: {
z: v.x,
}
}
const c = {
x: 1,
y: {
z: c.x,
}
}
v是可以的,因为var
是JavaScript并且它没有抱怨,但是当在c中分配z时,由于在声明之前使用了z,因此存在错误。
我的问题:有没有办法获得它? (我知道我可以用c声明另一个x并在其中分配它的值,但我的意思是更直接的东西)
答案 0 :(得分:1)
两个示例都会抛出一个错误,因为在评估表达式v
时v.x
尚不存在:
<强> VAR 强>
var v= {
x: 1,
y: {
z: v.x, // TypeError
}
}
&#13;
<强>常量强>
const c = {
x: 1,
y: {
z: c.x, // TypeError
}
}
&#13;
在初始化 c
之后,您不得不求助于添加对象:
const c = {
x: 1
}
c.y = { z: c.x };
console.log(c.y.z);
&#13;
答案 1 :(得分:1)
一种可能性是让z
懒惰:
var v = {
x: 1,
y: {
z: () => v.x,
}
}
const c = {
x: 1,
y: {
z: () => c.x,
}
}
console.log(v.y.z());
console.log(c.y.z());