我从用于计算球体体积的现代 Javascript 练习中获得了以下简单代码,它包含一个检查以确保已为半径输入值的部分。
我输入了一个负数来测试这个功能,它可以工作,但我对控制台中显示的内容很感兴趣,所以我检查了。我最终在日志中看到一个错误闪烁,然后消失 - 阅读速度太快。
当 if 语句评估为 false 时会发生这种情况吗?为什么此错误显示然后几乎立即被清除?我知道我可以使用另一种方式来调试它(也就是使用 console.log 或通过其他方式记录问题),我只是对为什么这个错误消失感兴趣。
HTML:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Volume of a Sphere Calculator</title>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<!-- sphere.html -->
<form action="" method="post" id="theForm">
<fieldset>
<p>Use this form to calculate the volume of a sphere.</p>
<div>
<label for="radius">Radius</label>
<input type="text" name="radius" id="radius" required></div>
<div>
<label for="volume">Volume</label>
<input type="text" name="volume" id="volume"></div>
<div>
<input type="submit" value="Calculate" id="submit"></div>
</fieldset>
</form>
<script src="js/sphere.js"></script>
</body>
</html>
JS:
function calculate() {
'use strict';
var volume;
var radius = document.getElementById('radius');
if (radius && (radius.value > 0)){
volume = (4/3) * Math.PI * Math.pow(radius.value, 3);
}
volume = volume.toFixed(4);
document.getElementById('volume').value = volume;
return false;
}
function init() {
'use strict';
var theForm = document.getElementById('theForm');
theForm.onsubmit = calculate;
}
window.onload = init;