2011-01-11 8 views
2

私はそれが(午後1時は13pmとして表示されないように)12以上になる場合は12で、それを差し引いた後の時間数をカウントしています。以下は私のjavascriptコードの一部です。javascriptで数学演算の後に '+ ""'を追加しないと、なぜ新しい変数の長さが未定義になりますか?

else if (hours[0] >= 13) { 
    hours[0] = hours[0] - 12; 
} 

と:私は配列変数の長さをカウントしようとしているとき、私が代わりにこのコードを持っている場合、その後のコードで

else if (hours[0] >= 13) { 
    hours[0] = hours[0] - 12 + ""; 
} 

は、「時間[0]」は、それが未知表示されますなぜか分からない。誰かが私を助けてくれますか?

答えて

4

減算hours[0] - 12は、数字または数字を含む文字列を含むかどうかにかかわらず、数字を返します(例:hours[0])。 "13"+ ""を追加すると、減算の結果が文字列に変換されます。番号はjavascriptに長さがないので、numberの長さメンバーを呼び出すとundefinedが返されます。

2

式に""を追加すると、結果は文字列に変換され、文字列は.lengthプロパティになります。代わりに数字には.lengthが含まれていないので、実際に発生していることは正常です...

var x = 42;   // this is a number 
var y = x + "";  // y is a string ("42") 
var z1 = x.length; // this is undefined (numbers have no length) 
var z2 = y.length; // this is the lenght of a string (2 in this case) 
関連する問題