若我們想將 Object 直接解構成變數,若變數不多,可直接使用 Object Destructuring,但若變數很多,可改用 eval()
動態解構出多個變數。
Version
ECMAScript 2015
Object Destructuring
let obj = { a: 1, b: 2, c: 3, d: 4 }
let { a, b, c, d } = obj
a // ?
b // ?
c // ?
d // ?
若變數不多,直接使用 Object Destructuring 解構出變數。
eval()
let obj = { a: 1, b: 2, c: 3, d: 4 }
Object
.keys(obj)
.forEach(x => eval(`let ${x} = obj.${x}`))
a // ?
b // ?
c // ?
d // ?
但若變數很多,使用 Object Destructuring 將很麻煩。此時可使用 eval()
產生 code,無論變數再多也不怕。
記得
eval()
的 String 必須有let
,否則會建立 global variable
Conclusion
- 大部分人覺得
eval()
很邪惡而不敢用,事實上eval()
只要用對地方也是很巧妙