2017-04-01 13 views
0

ここでは非常に奇妙な結果が得られます。文字列を整数に変換しようとしています。以下のコードを考えてみましょう。文字列をint型にキャストしようとしたときにNaNを取得する

戻ってクライアントにデータを送信している
  //Send back to client. 
      io.emit('returned message', { 
       'message': message, 
       'chatid': chatid, 
       'userid': userid 
      }); 
      console.log("Returning the data to chat " + chatid); 

、コンソールログは次のようになります。チャット「5」

にデータを返す

とクライアントに私が

を持っています
alert(typeof msg.chatid); 
alert(msg.chatid) 
var test = Number(msg.chatid); 
alert(typeof test) 
alert(test); 

次の結果が得られます。

文字列と '5' 番号やNaNの

注意してください、私が試した番号()とのparseInt()は

しかし、Jsfiddle内のコードにしようと、それが正常に動作します。なぜ私がNaNを得ているのか分かりません。何か案は?

var num = '5'; 
 

 
alert(Number(num));

+0

がmsg.chatid.charCodeAt(0) '' ' – 4castle

+1

出力msg.chatid.length'と試してみてください提供することができます私はchatidの実際の内容が「5」ではなく「5」であるという気持ちがあります。なぜなら、それは数に解析できないからです。それ以外の場合は、あなたのconsole.logに引用符を付ける理由はありません。 *編集*:次のコメントで確認しました。 '''の文字コードは39です。 – JCOC611

+1

@ 4castle 'msg.chatid.length'が3を返し、' msg.chatid.charCodeAt(0) 'が返されました39 – Tony

答えて

1

あなたはあなたの "int型" 値の周りの単一quotationmarksを持っています。それはあなたのソケットの送信前に脱出しているようにチャット「5」

にデータを返す

が見えますか?

+0

あなたはそうです!それはすでにエスケープされていた...良いキャッチ!私は許可されたときにあなたを2分で答えさせるでしょう。ありがとうございました! – Tony

+0

ようこそ。そして、将来:それがNaNだと言うなら、それはNaNです;) – Ben

-3

parseInt()を使用してみてください。

var num = '5'; 
 

 
alert(parseInt(num));

+1

私の投稿全体を読むと、私はすでにそれを試したことがわかります。そのも太字。 – Tony

+0

chatidの値は常に数値文字列ですか? – four

0

あなたは数に迅速に変換するには+を使用して、フォールバック

var getNum = (n) => (+n) ? +n : -1 
 

 
var chatid = '5' 
 
var chatidinvalid = '5test' 
 
var chatidnan = NaN 
 

 
console.log("Returning the data to chat ", getNum(chatid)); 
 
console.log("Returning the data to chatidinvalid: ", getNum(chatidinvalid)); 
 
console.log("Returning the data to chatidinvalid: ", getNum(chatidnan));

関連する問題