所以我正在製作一個使用canvas API的小遊戲,而且我對Javascript還是比較新的。但是,當我正在做的性格特徵能在我下面的代碼跨錯誤來了一個360度的拍攝(這個功能應該返回鼠標位置和球員的位置沒有別的之間的夾角)javascript typeof/NaN混淆
calculateAngle : function(x,y){
var opp = 0; //opposite
var adj = 0; //adjecent
var rad = 0; //radian
var ang = 0; //angle
//side lengths
var x1 = gfx.player_center_x //the player x position
var x2 = mouse_x; //the mouse x position
var y1 = gfx.player_center_y; //the player y position
var y2 = mouse_y; //the mouse y position
//find 2 lengths of the triangle
opp = (y2 - y1);
adj = (x2 - x1);
//find the missing angle between the adjecent and hypotenuse
rad = Math.atan2(adj, opp);
ang = rad * 180/Math.PI;
//-------------------------//
console.log(ang); //prints: NaN
console.log(typeof ang); //prints: number
//------------------------//
return ang;
}
當執行它返回NaN但ang是一個數字! 爲什麼javascript認爲變量ang不是數字?它聲明爲0哪種類型的返回數字,請幫忙!
UPDATE:由粗心的錯誤,X1和Y1 ECT改變了位置,我忘了實現它,感謝您的回答雖然
你從哪裏得到'mouse_x'和'mouse_y'? – Steve
變量沒有類型。 'ang'不一定是一個數字 - 它最初存儲一個數字('0')......'typeof'表示是一個數字。 'NaN'表示'ang'的最近值(計算)的結果被確定爲不是數字。計算確定它不是一個數字,所以它返回'NaN'。看着這個計算('rad * 180/Math.PI'),我假設用'rad'有一個「問題」,以便使計算出錯 – Ian
rad可能是NaN – juvian