javascriptの0

他の方のスクリプトに、
newX?newX>=0?1:-1:0;
というのがあった。

?を使った条件文だが、?が2つある。
初心者なので、よく分からなかった。
下記のようにして確認してみた。


window.onload = function(){
//var newX = 0; //ans0
//var newX = 2; //ans1
var newX = -2; //ans-1

//var ans = newX?newX>=0?1:-1:0;
var ans = newX?newX>0?1:-1:0;
//>も>=も同じ答え
alert(ans);
}

分かったのは、0は、nullみたいに見なされていること。
あと、複数の?を使った条件分岐は、おそらく、真真なら1個目の回答、真偽なら2個目の回答、偽偽なら3個目の回答らしい。

newX?newX>=0?1:-1:0;で、0の場合だと、そもそもnullかundefinedのような扱いだからなのか、偽偽で0を返しているような。

違うかな?

newX?newX>=0?1:-1:0;を
newX?newX>=1?1:-1:0;とかにすると挙動が違う気がしました。

ややこしい。