との奇妙な問題は、私はこのコードを持っている:Javascriptを - ===と文字列
...
var id1 = playerTick.gameId;
var id2 = that.gameId;
if(id1 === id2)
{}else{
throw "GameController instantiated with gameId '" + id2 + "' but tick has gameId '" + id1 + "'";
}
をそして、私はそれを実行したとき、私はメッセージを取得します:gameId「game1」はダニでインスタンス化
GameControllerがありgameId「game1」
それはどのように両方のプロパティの値として正しく「game1」を印刷したときに失敗する===ことができますか?テストとして、私が働くこれを作っています
var g = "game1";
var g2 = "game1"
alert(g === g2); // Alerts true
誰もが私の===は失敗することができますが、エラーメッセージは同じテキストを出力する方法のいずれかtheoritical説明のアイデアを持っていますか?両方の値の型はobjectです。
ありがとうございます。
UPDATE:すべての応答が指摘(及びそのためのありがとう)として
PROBLEM
これは種類が同一ではなかったことが、判明しました。 1つは文字列ではなく、= falseと評価される文字列ではありませんでした。
問題はクエリパラメータを取得するために、この機能を使用した後に発生しました:
function querystring(key) {
var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
var r=[], m;
while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
return r;
}
FIX
function querystring(key) {
var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
var r=[], m;
while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
return r.toString(); // Ensures that a string is returned
}
は、同じタイプの両方の変数はありますか?それは '==='があることを確認するためです –
g2のセミコロンを忘れました。私はちょうど編集して、それを追加しました。コピーして元のコードから貼り付けてもわかりません。 – Dave
あなたは両方ともストリングだと確信していますか? – Cameron