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