JavaScript-nanwierdness
代码如下:JavaScript-nanwierdness,javascript,Javascript,代码如下: console.log( "r=" + r + "; " + "a=" + a + "; " + "cx=" + cx + "; " + "Math.cos(a)=" + Math.cos(a) + "; " + "r * Math.cos(a)=" + (r * Math.cos(a)) + "; " +
console.log(
"r=" + r + "; " +
"a=" + a + "; " +
"cx=" + cx + "; " +
"Math.cos(a)=" + Math.cos(a) + "; " +
"r * Math.cos(a)=" + (r * Math.cos(a)) + "; " +
"cx.x + r * Math.cos(a)=" + (cx.x + r * Math.cos(a)) + "; "
);
结果:
r=0; a=0; cx=451; Math.cos(a)=1; r * Math.cos(a)=0; cx.x + r * Math.cos(a)=NaN;
对于r和a的所有值,NaN都是NaN,只是不想发布冗余结果
为什么会发生这种情况以及如何修复它?从输出来看,
cx
似乎是一个数字,这意味着cx.x
将未定义。因此,最后一个公式是undefined+…
,当使用JavaScripts奇怪的规则时(至少在Chrome控制台中),会导致NaN:
如果输出不是一个数字,那么你输入的东西可能也不是一个数字?什么是cx.x
?在另一行中,您使用的是cx
console.log(cx的类型)
。您正在显示cx
的值,但除此之外,您正在使用cx.x
。什么类型的cx
?它是否有名为x
的属性?这是我的第一个猜测,因为您的r
和a
变量显然是数字cx=451
使我产生怀疑,如果cx
是一个具有x
属性的对象,那么cx
的输出就不会是451。是的,这就是我错过的。我从使用点到x和y,忽略了这个变化。这个论坛不应该是“橡皮鸭”吗?反对票怎么了?有人认为有“愚蠢的问题”这样的事情吗
> cx = 451;
451
> cx.x+1
NAN