定义一个常量,在对象中引用这个常量时报错,解决办法

    技术2022-07-10  86

    问题背景

    定义了一个常量,然后在一个对象中的属性名中引用该常量中的某个键,然后控制台报错。如下

    const {log} = console; const STATUS = { OK: 1, ERROR: 2 } const handle = { STATUS.OK: () => {log("it's ok")}, STATUS.ERROR: () => {log("it's error")} } let status = 0; handle[status]();

    错误如下:

    分析原因

    v8引擎解析会将STATUS.OK: () => {log("it's ok")}解析为STATUS: STATUS,OK: () => {log("it's ok")},所以它会告诉你语法错误,此处的"."为不期待的运算符,应该为“,”

    解决办法

    给该属性值添加中括号[]

    const {log} = console; const STATUS = { OK: 1, ERROR: 2 } const handle = { [STATUS.OK]: () => {log("it's ok")}, [STATUS.ERROR]: () => {log("it's error")} } let status = 1; handle[status](); 结果

    提示:对象中如果要使用变量做属性名的话,需要给其添加中括号[],否则js解析引擎解析出来的只是个字符串。

    Processed: 0.018, SQL: 9