请告诉我,出于什么原因,当使用这个公式时x=300*Math.sqrt(1-(y*y/40000));
,x 变量返回 NaN,并且这种情况发生了几次,然后它开始返回一个数字。
var x=0;
var y=300;
var timer = setInterval(function(){
y--;
x=300*Math.sqrt(1-(y*y/40000));
pig.style.left = x+"px";
pig.style.top = y+"px";
}, 10);
*{
margin:0;
padding:0;
}
.block {
width:600px;
height:600px;
background:Teal;
}
#pig {
position:absolute;
width:20px;
height:20px;
background:red;
}
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div id="pig"></div>
<div class="block">
</div>
</body>
</html>
NaN
(负数的平方根) 被返回,直到y * y
它小于40000
。也就是说,直到y
它减少到200
。也就是说,前一百次,或者大约在第一秒之内。因为