我在Javascript中有一段代碼,它在明顯不應該的情況下回傳true。為了說明情況。我有一個mindmap,為了找到地圖上最極端的坐標,我在所有節點中回圈,并檢查這個節點的值是否比當前最高/最低值高/低。當運行代碼時,該方法回傳錯誤的值,通過 console.log() 我想我發現了一些奇怪的東西,但不知道如何解決。
findMaxX(maxX){
console.log("this.x before test:" this.x) 。
console.log("maxX before test:"/span> maxX)。
if (this.x > maxX){
console.log("this.x:" this.x) 。
console.log("maxX before:"/span> maxX)。
maxX = this.x。
console.log("maxX after:"/span> maxX)。
}
this.children.forEach(element => {
maxX = element.findMaxX(maxX)。
})
return maxX;
}
我在控制臺中發現的情況是這樣的:
maxX before test: 360
this.x before test:288
在test之前的maxX:360。
this.x before test:64
測驗前的maxX:360。
this.x:64.
maxX before:360。
maxXafter:64
this.x before test:65
在test之前的maxX:64。
它似乎作業得很好,但在某些時候,條件似乎對一個明顯錯誤的陳述句回傳了真。我是不是犯了什么無知的錯誤?我在哪里可以搜索到錯誤?我的代碼看起來很好,我看不出與觀察到的錯誤有什么聯系。我很高興得到所有的提示! 謝謝你
。uj5u.com熱心網友回復:
在我看來,this.x和maxX可能是字串。這就是為什么你會得到這些結果。
。let xNumber = 64, yNumber = 360;
let xString = "64"/span>, yString = "360"/span>;
console.log(xNumber > yNumber)。
console.log(xString > yString);
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
并閱讀一些關于JavaScript中不同型別的比較的資訊 這里
。if (parseFloat(this. x) > parseFloat(maxX) ) {
//這里是你的代碼。
}
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/331076.html
標籤:
