您已經構建你的代碼的方式,可以最小化到下面的等效代碼。請注意,如果this.user.customSetting.themePicker
是保證始終是真實的,當this.user.customSetting
是真實的,你可以在一個單一的if語句,其中條件是field.name == 'themeColor'
設置field.disabled = true
:
if (field.name == 'themeColor' && this.user.customSetting) {
field.disabled = !this.user.customSetting.themePicker;
} else if (field.name == 'themeColor') {
field.disabled = false;
}
甚至以下switch語句,這取決於你如何想你的代碼結構化。他們都是一樣的。
switch (field.name) {
case 'themeColor':
if (this.user.customSetting) {
field.disabled = !this.user.customSetting.themePicker;
}
break;
default:
field.disabled = false;
}
這些答案大多打破了三元語句可讀性的基本規則。如果你的目標是簡單的可讀性,將其分解成簡單的if/else if
聲明就可以了。如果您試圖儘可能減少代碼,並且不在乎它是不可維護還是難以閱讀,則應該將其簡化爲遞歸三元語句。就我個人而言,我發現冗長的三元陳述並不能提供顯着的節省空間,阻礙可讀性,並且在它們不是非常簡單的情況下應避免(即:var x = statement? 1 : 0;
)
爲什麼? (他想簡單地問,但是StackOverflow需要更多的字符) – CBroe
_「如果isV1User爲true,那麼該字段被禁用。如果用戶有customSetting,那麼不要禁用該字段。如果用戶沒有,禁用它。「_ - 所以,簡單地說,禁用它,如果用戶是V1用戶或用戶沒有自定義設置...? – CBroe
你應該發佈你的問題到https://codereview.stackexchange.com/ –