2012-01-21 9 views
3

ここには私が最後の30分間把握できなかったことがあります。Mozilla Firefox拡張機能が開発中です。 577 <100.これはどのように可能ですか?

var file = Components.classes["@mozilla.org/file/local;1"]. 
         createInstance(Components.interfaces.nsILocalFile); 
file.initWithPath(sPath); 
... 
if (file.fileSize < (offsetContent+bytesToRead)) 
{ 
    wt.BO.log(file.fileSize + "<" + offsetContent + "+" + bytesToRead); 
    bytesToRead = file.fileSize - offsetContent; 
} 

何上記のコードが表示されている: "577 < 50 + 50" ... o.O地獄は577 < 100どのように? ifステートメントはtrueです...理由を理解できないようです。

答えて

6

プラス演算子(+)は、文字列を連結したり、JavaScriptで数値を加算したりするために使用されます。 offsetContent又はbytesToReadので

が文字列であり、両方の変数が連結されている:これらの値を比較するとき

  • "50" + "50" = "5050"
  • を、文字列が数値に変換され、
    "5050" == 5050       - >    もちろん、577 < 5050  も当てはまります。

コードを修正するためのいくつかの方法:

// Substract bytesToRead from both sides 
if (file.fileSize - bytesToRead < offsetContent) 
// Or, Turn the comparison operator, and make the right side negative 
if (file.fileSize >= -bytesToRead - offsetContent) 
+0

'のparseInt()'と 'parseFloatは()'あなたが正しいです – Eopin

+0

haha​​..yesにそれを行うだろう...私を信じることはできません。それについて考えなかった。私はXMLメッセージから値を取得していたので...ええと...もう一度ありがとう。これは9gagになるかもしれません。 haha – AndreiBogdan

+0

さらにはもう1つの方法:file.fileSize <(1 * offsetContent + 1 * bytesToRead):) – AndreiBogdan

関連する問題