JavaScript对象能否返回值和控制台日志?

JavaScript对象能否返回值和控制台日志?,javascript,object,console,lookup,Javascript,Object,Console,Lookup,我有一个对象看起来像这样: const CONVERT = { a: 1, b: 2, c: 100, }; const CONVERT = { a: 1, b: 2, c: ( ()=> { console.error( 'value clamped at the limit of 100' ); return 100; )(), }; let value; if( x === 'a' ) { value = 1; } else if( x === 'b'

我有一个对象看起来像这样:

const CONVERT = {
  a: 1,
  b: 2,
  c: 100,
};
const CONVERT = {
  a: 1,
  b: 2,
  c: ( ()=> { console.error( 'value clamped at the limit of 100' ); return 100; )(),
};
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 );
}
我是这样使用它的:

let x = 'a';
// some logic that may change x
const value = CONVERT[x];
假设我知道当x='c'时,这是一个错误条件。我想控制台。错误('value clipped in limit of 100')当x='c'时

在CONVERT对象指定中是否有一种优雅的方法来实现这一点?我希望我能做这样的事情:

const CONVERT = {
  a: 1,
  b: 2,
  c: 100,
};
const CONVERT = {
  a: 1,
  b: 2,
  c: ( ()=> { console.error( 'value clamped at the limit of 100' ); return 100; )(),
};
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 );
}
…但这不会在调用CONVERT['c']时显示console.error消息,而是在实例化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,我现在都需要执行这个额外的if检查,这样我就可以对所需的消息进行console.error。如果我知道x不等于‘c’,我想避免在完全检查的情况下这样做

我的另一个选择是去掉CONVERT对象,而是硬编码if-else或switch,如下所示:

const CONVERT = {
  a: 1,
  b: 2,
  c: 100,
};
const CONVERT = {
  a: 1,
  b: 2,
  c: ( ()=> { console.error( 'value clamped at the limit of 100' ); return 100; )(),
};
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对象来绕过它。

您似乎需要一个,这是一个可以在属性访问上执行的函数。从getter返回的值是
CONVERT['c']
计算为的值:

const CONVERT={
答:1,,
b:2,
获取c(){
控制台错误(‘值限制在100’);
返回100;
}
};
设x='a';
x='c';//一些可能改变x的逻辑
常量值=转换[x];

console.log(值)看起来您可能正在使用,这是一个可以在属性访问上执行的函数。从getter返回的值是
CONVERT['c']
计算为的值:

const CONVERT={
答:1,,
b:2,
获取c(){
控制台错误(‘值限制在100’);
返回100;
}
};
设x='a';
x='c';//一些可能改变x的逻辑
常量值=转换[x];
console.log(值)