У меня есть объект, который выглядит примерно так:
const CONVERT = {
a: 1,
b: 2,
c: 100,
};
, и я использую его так:
let x = 'a';
// some logic that may change x
const value = CONVERT[x];
Скажите, что я знаю, что когда x = 'c 'это условие ошибки. Я хотел бы console.error ('значение ограничено пределом 100') , когда x = 'c'.
Существует ли элегантный способ сделать это внутри CONVERT назначение объекта? Я надеялся, что смогу сделать что-то вроде этого:
const CONVERT = {
a: 1,
b: 2,
c: ( ()=> { console.error( 'value clamped at the limit of 100' ); return 100; )(),
};
... но это не утешает сообщение об ошибке при вызове CONVERT ['c']. Вместо этого это происходит сразу же, когда создается объект CONVERT.
Единственная альтернатива, о которой я могу подумать, это:
let x = 'a';
// some logic that may change x
const value = CONVERT[x];
if( value === 100 ) {
console.error( 'value clamped at the limit of 100' );
}
, но это означает, что независимо от того, где я использую CONVERT, мне теперь нужно делать это, если проверьте, чтобы я мог console.error желаемое сообщение. Я бы хотел избежать полной проверки if, если я знаю, что x не равен 'c'.
Мой другой выбор - избавиться от объекта CONVERT и вместо этого использовать жесткий код. if-else или переключатель, подобный следующему:
let value;
if( x === 'a' ) {
value = 1;
} else if( x === 'b' ) {
value = 2;
} else if( x === 'c' ) {
value = 100;
console.error( 'value clamped at the limit of ', value );
}
Это тоже, я надеюсь, я могу обойтись с использованием lookup-объекта вместо этого.