带字符串的左移数字

Left shift number with string

本文关键字:数字 左移 字符串      更新时间:2023-09-26
10000<<"5daz"

我在数字和字符串之间应用左移,结果是 10000,在 JavaScript 中如何解释?

<!DOCTYPE html>
<html>
    <body>
        <h1>JavaScript Variables</h1>
        <p>In this example, x, y, and z are variables</p>
        <p id="demo"></p>
        <script>
            var x = 5;
            var y = 6;
            var z = x + y;
            var bvalue=true;
            document.getElementById("demo").innerHTML = 10000<<"5daz";
        </script>
    </body>
</html>

Javascript 通常尝试将参数的类型解析为其运算符,以便它们"有意义"。 在这种情况下,它将String转换为Uint32,以便它可以执行左移。 当将String转换为Uint32时,它首先将其转换为Number。 如果数字为 NaN ,则 UInt32 根据规范为 0。

10000<<"5daz"10000<<0相同,10000

如需更多阅读,请参阅规范。

在其他操作中,NaN的处理方式不同,这可能就是为什么这对<<操作员来说让您感到惊讶的原因。 例如,加法将参数视为 Number s,而不是 Uint32 。 出于这个原因10000 + "5daz" = NaN10000 << "5daz" = 10000