【发布时间】:2020-10-26 18:37:51
【问题描述】:
我有一个循环的函数,在该函数内部我调用了另一个函数(它应该改变“newArray[x]”的值,但它没有做任何事情)。
function UTF8() {
newArray = ["0011", "0001"]
newArray.forEach(x => {
binaryToHexadecimal(newArray[x]);
console.log(newArray[x])
});
console.log(newArray[0])
}
function binaryToHexadecimal(string) {
if (string === "0000") {
return string = "0";
}
else if (string ==="0001") {
return string = "1";
}
else if (string ==="0010") {
return string = "2";
}
else if (string ==="0011") {
return string = "3";
}
else if (string ==="0100") {
return string = "4";
}
}
UTF8();
【问题讨论】:
-
参数是按值调用的。为参数 never 分配新值会更改您作为参数传递的变量或属性。
-
1.
newArray[x]是undefined因为x要么是0011要么是0001并且两者都是newArray["0011"]和newArray["0001"]不要存在。 2. 这不是从数组中替换值的方式 -
1) 你正在使用 forEach,所以
x不是索引,它是数组元素本身 2) 你必须使用newArray[x] = binaryToHexadecimal(newArray[x]);3) 这正是.map()是为了 -
["0011", "0001"].map(b => parseInt(b, 2).toString(16).toUpperCase());
标签: javascript function loops