'\ 352'十进制值的javascript行为

时间:2013-04-20 09:01:07

标签: javascript salt

在检查登录页面时,我发现了以下JS代码

hexMD5('\232' + document.login.password.value + '\305\334\122\134\352');

所以,我问\352它会占用一个字节,从而导致溢出和产生96或java脚本解释器将它提升为short以保留其值?

1 个答案:

答案 0 :(得分:1)

JavaScript没有字节,短路或整数*,它只有Number type,这是一个双精度IEEE-754数字。但这与你所显示的代码并不真正相关,除非在字符串上使用charCodeAt来获取其中一个字符的相应代码点,因为你要定义代码点(松散地,“字符”) )在一个字符串中,而不是数字。 Characters in JavaScript are 16-bit entities,因此八进制转义'\352'对字符234十进制进行编码,这显然很容易适合字符的16位范围。

附注:八进制转义不是主要标准的一部分,在严格模式下是不允许的。它们是规范non-normative annex的一部分。我建议使用十六进制转义符或unicode转义符而不是八进制转义符。

*嗯,在某些与位相关的计算中,JavaScript确实有32位整数作为瞬态事物,例如由&|运算符执行的计算。