var obj ={ name:'nnn', age:22, job:'worker' }; var arr=[ 'name', 'age', 'job' ]; for (var i=0 ;i<arr.length;i++){ document.writeln(arr[i]+':'+obj[arr[i]]); };//有值 for (var i=0 ;i<arr.length;i++){ document.writeln(arr[i]+':'+obj.arr[i]); };//没值,不报错 这两种有什么不同,出现上面的情况的原因是什么,请大神帮我解惑
1 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
你确定不报错? 看看控制台信息
obj.arr[i] 这个调用是错的
obj.arr 不存在, 等于 undefined
undefined[i] 肯定会出错
首先 obj 和 arr 都可以用 [] 的方式来取值:
这个例子的两种做法不同点在于:
obj[arr[i]] 是先取 arr[i] 再赋值给 obj[]:
arr[i]==> 'name' ==> obj['name'] ==> 取值成功
obj.arr.[i] 是先取 obj.arr, 再通过obj.arr取[i]:
obj.arr==> undefined ==> undefined[i] ==> 报错
嵌套的由内而外 链式由左往右
添加回答
举报
0/150
提交
取消