JavaScript:通过对象传参后自动创建变量的快捷方法问询
解决方法
首先,最直接且符合JS最佳实践的捷径,是直接在函数的参数列表里做解构,不用在函数内部再重复写解构语句:
function test() { let parameter1 = 'something'; let parameter2 = 'something else'; let parameter3 = 'this'; doSomething({ parameter1, parameter2, parameter3 }) } // 直接在参数里完成解构,函数内部可直接使用变量 function doSomething({ parameter1, parameter2, parameter3 }) { Logger.log(parameter1); Logger.log(parameter2); Logger.log(parameter3); }
哪怕参数有30个,也只需要在函数参数里列一次,省去了函数内部单独解构的步骤,写法更简洁。
至于你问的类似unpack(parameters)的原生函数,JS里没有这样的内置方法。因为直接把对象的所有属性注入当前作用域会引发很多问题:比如变量名冲突、代码可读性下降、难以追踪变量来源,所以JS语言本身不支持这种操作。
如果你实在不想逐个列参数名,有个不推荐的写法是用with语句,但它的问题很多:严格模式下会报错、性能低下、代码逻辑容易混乱,绝对不建议在生产代码里使用,仅作示例参考:
function doSomething(parameters) { with(parameters) { Logger.log(parameter1); Logger.log(parameter2); Logger.log(parameter3); } }
还有个折衷方案:如果这些参数是一组相关配置,可以把整个参数对象赋值给一个简短变量,比如const p = parameters;,之后用p.parameter1访问,既不用解构,又比写全名称简短,可读性也不错。
总结下来,参数列表里直接解构是最优选择,既符合最佳实践,又能解决参数过多的麻烦。
内容的提问来源于stack exchange,提问作者Edward Wu
相关产品推荐
相关产品推荐

