javascript - 奇数数组格式化

标签 javascript arrays

我正在参加 CTF 锦标赛,问题之一是此行的一些 js 代码:

result[(j * LEN) + i] = bytes[(((j + shifter) * LEN) % bytes.length) + i]

忽略所有变量。我很困惑数组 results 中的某些内容与值中的某些内容相同。本质上,我对此感到困惑:

Array[a = b]

有人能解释一下为什么这样有效吗?

最佳答案

您混淆了嵌套级别。

result[(j * LEN)   + i] = bytes[(((j + shifter) * LEN) % bytes.length) + i]
// original code above: it's equivalent to below:
result[(j * LEN)   + i] = rightHandSide
result[(jTimesLen) + i] = rightHandSide
result[jTimesLenPlusI ] = rightHandSide

这只是对对象或数组索引的普通赋值。

不过,arr[a = b] 也是合法的,只是令人困惑;赋值解析为表达式,因此 arr[a = b]b 赋值给(已经存在的)变量 a,然后访问 >b arr 的索引(但访问索引后不执行任何操作)。

a = 3;
b = 5;
arr = [];

arr[a = b];

console.log(a);
console.log(arr);

关于javascript - 奇数数组格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151326/

相关文章:

javascript - 在 Canvas 上渲染文本不起作用

java - 将文本文件中的数据输入动态数组对象时出现 NullPointerException

javascript - 数组在 jquery 中给出了一个未定义的

Java 字符串分割/操作

c++ - 删除数组

php - 循环遍历php数组问题

javascript - 从 JavaScript 数组中获取随机值

javascript - 当 Android 软键盘处于事件状态时,防止网页视口(viewport)调整大小

javascript - 将 JsUnit 与 Hudson 一起使用时出错

javascript - 有没有办法在没有 WebRTC 的情况下连接两个浏览器?