参数能否用作默认值?能否用已定义参数为其他参数设默认值?
参数默认值相关问题解答
嘿,这就来帮你理清这两个问题,顺便搞定你的Device类方法优化需求~
核心问题解答
参数能否被用作默认值?
完全可以!不过有个小前提:你要用来做默认值的参数,必须在参数列表里出现在当前参数的前面(也就是已经被声明过),这样JavaScript引擎才能正确找到并使用它。能否使用已定义的参数为其他参数设置默认值?
必须能!这其实就是第一个问题的典型应用——后面的参数可以直接用前面已经定义好的参数来作为自己的默认值,只要保证参数顺序正确就行。
针对你的Device类的解决方案
你想要让index参数可选,自动用data.index作为默认值?调整一下参数顺序,再给index设置默认值就搞定了:
class Device { constructor() { this.systems = [new System()]; // ... 其他构造逻辑 } update(data, index = data.index) { this.systems[index].update(data); } }
这样调用起来就方便多了:
- 只传
data:new Device().update(data)—— 此时index会自动取data.index的值 - 手动指定
index:new Device().update(data, 2)—— 会优先使用你传入的2作为索引
是不是正好匹配你的需求?
内容的提问来源于stack exchange,提问作者ParadoxonModding
相关产品推荐
相关产品推荐

