定义了一个常量,然后在一个对象中的属性名中引用该常量中的某个键,然后控制台报错。如下
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解析引擎解析出来的只是个字符串。