Javascript:这个输出将如何为64和20?
问题描述:
这个输出将如何为64和20?Javascript:这个输出将如何为64和20?
我从我的评估中得到了一个问题,需要知道答案。
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<p id='test'></p>
<p id='test1'></p>
<script>
document.getElementById('test').innerHTML = -"4"+10+"4";
document.getElementById('test1').innerHTML = "5"*3+5;
</script>
</body>
</html>
答
随着-"4"+10+"4";
=>-"4"+10
是6
和它的值与4
因此64
随着"5"*3+5;
=>"5"*3
是15
和5
被添加到它,因此20
重要事情需要考虑的是:
-
Unary negation (-)尝试把它转换成一个
number
,如果它是不是已经。
答
JavaScript是弱类型的。解释者将 - (数学运算符)和4个字符串连接起来。这导致字符串“-4”。然后,当您将两个数学运算符放在“-4”字符串后面时,例如你的+10解释器检查“-4”是否可以作为数学表达式来评估。因为它可以,解释器在数学上解析整个表达式,得到6的结果。 “4”。然后它将6转换为一个字符串,并将它与“4”连接起来,结果是(这部分很重要)字符串“64” - 其中六是从加-4得到的(从字符串连接转换得到被转换成数字)为10.
相同的逻辑延伸到你的第二个等式。
+0
这是相当错误的。 'x = - “4”'不会产生字符串'“-4”',它会产生*数字*'-4'。即使它产生了一个字符串,解释器也不检查是否可以将“-4”作为一个数学表达式进行评估,因为它紧挨着一个“+”运算符。它会简单地执行字符串连接:'“-4”+ 10'不是'6',它是字符串'“-410”'。 – meagar
@AndrewL。 - 更新... – Rayon