基本上,代码行curr = curr[ch] = curr[ch] || {}
将变量ch
设置为对象的键并将{}
设置为对象的值,然后指向其子引用。JavaScript在JavaScript中如何连续工作?
但有人可以详细解释它是如何工作的?由于
http://jsbin.com/gokapoc/1/edit?js,console
let root = {};
let curr = root;
let ch = 'a';
curr = curr[ch] = curr[ch] || {};
ch = 'b';
curr = curr[ch] = curr[ch] || {};
ch = 'c';
curr = curr[ch] = curr[ch] || {};
console.log(root);
它会显示结果:
{ a: { b: { c: {} } } }
赋值运算符是正确关联的,'||'具有[更高优先级](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table),所以重写这样的行:'curr =(curr [ch] =(curr [ch] || {}));'并且应该清楚。 – 2016-09-25 18:01:59