这是对链式无效运算符的适当使用吗?
Is this an appropriate use of chained nullish operators?
文档说空运算符 (??) 是运算中倒数第五的优先级。
我正在尝试以这种方式使用它们
const accountNumber = optionsA?.accountNumber ?? optionB?.accountNo ?? '7202705382';
我希望是指
按降序分配 accountNumber
优先级:
optionsA?.accountNumber
optionB?.accountNo
'7202705382'
我很担心,因为我想确保顺序是从左到右,并且前两项中对象中的 elvis 运算符不会干扰空值运算符的估值或优先级。
为了 Javascript 中的清晰和简洁,这是完成此作业的最合适方法吗?
我发现用正常甚至俚语来思考它很有帮助。
敲敲,optionsA?.accountNumber
...?你在吗?你是不是无意义的东西......?如果是,您现在 accountNumber
!
要不,我们去敲optionB?.accountNo
的门吧。如果 optionB?.accountNo
应门(如果它不是无效的),那么它现在是 accountNumber
否则,你得满足于'7202705382'
这样可以吗? 是的,它会起作用的。 但是...
综上所述(这完全基于我多年来在我工作过的库和其他代码库中看到其他人的代码的经验),我强烈建议不要这样做。它会使可读性变得超级困难。在我看来,它类似于 nested ternaries,这不会让你成为世界上最受欢迎的开发者。
文档说空运算符 (??) 是运算中倒数第五的优先级。
我正在尝试以这种方式使用它们
const accountNumber = optionsA?.accountNumber ?? optionB?.accountNo ?? '7202705382';
我希望是指
按降序分配 accountNumber
优先级:
optionsA?.accountNumber
optionB?.accountNo
'7202705382'
我很担心,因为我想确保顺序是从左到右,并且前两项中对象中的 elvis 运算符不会干扰空值运算符的估值或优先级。
为了 Javascript 中的清晰和简洁,这是完成此作业的最合适方法吗?
我发现用正常甚至俚语来思考它很有帮助。
敲敲,optionsA?.accountNumber
...?你在吗?你是不是无意义的东西......?如果是,您现在 accountNumber
!
要不,我们去敲optionB?.accountNo
的门吧。如果 optionB?.accountNo
应门(如果它不是无效的),那么它现在是 accountNumber
否则,你得满足于'7202705382'
这样可以吗? 是的,它会起作用的。 但是...
综上所述(这完全基于我多年来在我工作过的库和其他代码库中看到其他人的代码的经验),我强烈建议不要这样做。它会使可读性变得超级困难。在我看来,它类似于 nested ternaries,这不会让你成为世界上最受欢迎的开发者。