老师您好!我用Node.js运行了一下您提到的“var yz=obj&&obj.y&&obj.y.z;”代码和运行结果如下 没有起到获取obj.y.z的效果,是不是我哪里弄错了
这样子
var obj={x:1}
obj.y={z:3}
obj.y.z
这个问题的关键点在于若var y=2
y.z=3这个赋值语句过后y.z是否存在。
y.z实际验证之后是不存在的为undefined,可能因为 y的值是基本数据类型 而非对象,
var obj2 = {
x:1,
y:2,
o: {
z:3,
n:4
}
};
这样定义就可以了
我的理解是, 对于obj.y.z,如果y只是一个属性的话,这种写法本身就是错误的,y.z代表的是对象y里面的一个z属性,所以y本身必须也是一个对象,这样才会有意义啊~~
试了一下 即使一开始将obj实例化为字符串 var obj = new Object("123aaa"); 最终结果依然为undefined