我无法理解这个JS代码的行为。此循环中的d
对象以某种方式嵌套在浏览器控制台中。在浏览器中运行下面的代码段或在http://jsfiddle.net/qhsjyzob/中查看它,然后检查浏览器控制台中的第二个和第三个console.log
。为什么它表明d
对象是这样的:
{
Hello: {
World: {}
}
}
当它必须只是这样时:
{
Hello: {}
}
以下是代码或http://jsfiddle.net/qhsjyzob/:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
'use strict';
var e = ['Hello', 'World'];
var d = {}
for (var g = 0; g < e.length; g++) {
console.log("1: ", d, g, d[e[g]], e[g]);
d[e[g]] = d[e[g]] || {};
console.log("2: ", d, g, d[e[g]], e[g]);
console.log("3: ", d, g, d[e[g]], e[g]);
d = d[e[g]]
console.log("4: ", d, g, d[e[g]], e[g]);
}
</script>
</body>
</html>