这是哈希码(用javascript编写),来源:https://github.com/m3talstorm/hashcode/blob/master/lib/hashcode.js:
const hash = (string) => {
let hash = 0
string = string.toString()
for(let i = 0; i < string.length; i++) {
hash = (((hash << 5) - hash) + string.charCodeAt(i)) & 0xFFFFFFFF
}
return hash
}
我不理解for循环。
1)为什么开发人员将哈希变量向左移5位并从结果中减去哈希值?
2)为什么开发人员使用&#34;&amp; 0xFFFFFFFF&#34;?没有任何数字与之对比只是给出数字吗?
我在另外两个例子中看到了它,所以我假设这是一个非常受欢迎的哈希码实现。如果是这样,我想学习它。