基本上,代碼行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