问题描述
如果不使用 eval(),我无法弄清楚如何在 javascript 中执行以下操作,这对我来说听起来有点矫枉过正。
let sId = "12345678";
let buffer = new Uint8Array(4);
buffer[0] = eval('0x' + sId.substring(6,8) + ";");
buffer[1] = eval('0x' + sId.substring(4,6) + ";");
buffer[2] = eval('0x' + sId.substring(2,4) + ";");
buffer[3] = eval('0x' + sId.substring(0,2) + ";");
解决方法
使用 Number 构造函数代替 eval。
无论您使用 eval、Number() 还是文字,值都是相同的:
const sId = "12345678";
const testA = 0x78;
const testB = Number('0x' + sId.substring(6,8));
const testC = eval('0x' + sId.substring(6,8) + ";");
console.log(testA,testB,testC);
let sId = "12345678";
let buffer = new Uint8Array(4);
buffer[0] = Number('0x' + sId.substring(6,8));
buffer[1] = Number('0x' + sId.substring(4,6));
buffer[2] = Number('0x' + sId.substring(2,4));
buffer[3] = Number('0x' + sId.substring(0,2));
console.log(buffer);