我有這樣的代碼:使用Javascript - 與===和字符串奇怪的問題
...
var id1 = playerTick.gameId;
var id2 = that.gameId;
if(id1 === id2)
{}else{
throw "GameController instantiated with gameId '" + id2 + "' but tick has gameId '" + id1 + "'";
}
當我運行它,我得到的消息:
GameController與遊戲ID「的Game1」實例化,但是蜱gameId'game1'
如果打印正確的'game1'作爲兩個屬性的值,它會如何失敗?作爲測試,我做了這其中工程:
var g = "game1";
var g2 = "game1"
alert(g === g2); // Alerts true
任何人不會有我的===如何失敗,但錯誤信息打印相同的文本theoritical解釋的想法?這兩個值的類型都是對象。
提前謝謝。
UPDATE:
技術問題
原來,作爲所有答覆指出的(和三江源爲該),該類型是不相同的。其中一個不是導致===評估爲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;
}
THE 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