我有類似下面的JavaScript代碼:用力不當比較,拋出一個警告/錯誤在JavaScript
var data = {"d": 12345};
for(var i = 0; i < data.length; ++i) {
console.log(i);
}
我知道,因爲data.length將「未定義」 for循環將不執行任何週期和
0 < 'undefined' //false (I think this is false for any int?)
不管怎麼說,而我定我的代碼(在我的代碼,數據包含一個數組,但我不小心被引用data.length代替data.myarr.length)我希望能避免此類問題未來 - 花了我相當長的時間來找到這個錯誤。
我一直在讀strict mode in JavaScript,但在messing around with JSFiddle之後,我無法獲得嚴格的模式將上述內容當作錯誤。我試着將整個劇本都嚴格的考慮在內,然後,考慮到可能存在衝突,在自己的方法中嘗試過,並且一無所獲。
有沒有辦法強制「無意義」的比較,如int <「undefined」引發錯誤(甚至是警告)?我錯過了嚴格模式的東西嗎?或者是語言設計應該允許這樣的事情?
我不知道這是可能的,但我不是那些可以肯定地說任何類似的語言愛好者之一。我第一次嘗試它時,會嘗試創建一些輔助函數,它會爲您執行比較,爲不匹配的輸入或不正確的結果拋出異常。 – ChaseMoskal
是的。我知道如何檢查未定義的,我不需要真的在我的代碼中執行它。我只是想在未來拯救我自己和其他人的時間。 –
是的,我能看到的唯一方法就是制定一個標準化的比較功能,讓您和您的整個團隊都可以使用這種比較功能對所有性質進行比較,將異常事件作爲早期預警系統。對於可能跳出來介紹這樣的事情的邊緣優化案例來說,可能並不是很誇張=/ – ChaseMoskal