[英]Left shift number with string
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
,而不是Uint32
。 因此, 10000 + "5daz" = NaN
而10000 << "5daz" = 10000
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.