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"+106和它的值与4因此64

随着"5"*3+5; =>"5"*3155被添加到它,因此20

重要事情需要考虑的是:

+0

@AndrewL。 - 更新... – Rayon

JavaScript是弱类型的。解释者将 - (数学运算符)和4个字符串连接起来。这导致字符串“-4”。然后,当您将两个数学运算符放在“-4”字符串后面时,例如你的+10解释器检查“-4”是否可以作为数学表达式来评估。因为它可以,解释器在数学上解析整个表达式,得到6的结果。 “4”。然后它将6转换为一个字符串,并将它与“4”连接起来,结果是(这部分很重要)字符串“64” - 其中六是从加-4得到的(从字符串连接转换得到被转换成数字)为10.

相同的逻辑延伸到你的第二个等式。

+0

这是相当错误的。 'x = - “4”'不会产生字符串'“-4”',它会产生*数字*'-4'。即使它产生了一个字符串,解释器也不检查是否可以将“-4”作为一个数学表达式进行评估,因为它紧挨着一个“+”运算符。它会简单地执行字符串连接:'“-4”+ 10'不是'6',它是字符串'“-410”'。 – meagar