这是我经常使用的模式
const bus = this.state.channels[name] =
this.state.channels[name] || new EventEmitter()
理想情况下,我想使用类似Ruby的运算符(这是一个被拒绝的功能请求)
const bus = this.state.channels[name] ||= new EventEmitter()
任务是这样的:
我看过babel插件提交支持这样的东西,但是他们被删除了。
是否可以在没有代码重复的情况下执行此任务?
答案 0 :(得分:2)
JavaScript中没有||=
。
您问题中的第一个代码段是可用的最短选项:
const bus = this.state.channels[name] =
this.state.channels[name] || new EventEmitter()
换句话说,你做得对。
也就是说,如果你想稍微缩短作业,你可以将this.state.channels
分配给一个临时变量:
const channels = this.state.channels;
const bus = channels[name] = channels[name] || new EventEmitter()
答案 1 :(得分:0)
你也可以这样做,但它仍然是两步:
const bus = this.state.channels[name] || new EventEmitter();
this.state.channels[name] = bus;