在this JsFiddle看看:如何減少我的代碼中這些錯誤的頻率?
var requests = [
$.ajax("http://search.twitter.com/search.json", { data: { q: 'ashishnjain' }, dataType: 'jsonp' })
.done(function() {console.log("request");}),
$.ajax("http://search.twitter.com/search.json", { data: { q: 'ashishnjain' }, dataType: 'jsonp' })
.done(function() {console.log("request");})
];
$.when(requests).done(console.log("alldone"));
的預期結果是:request request alldone
,但在現實中這種打印alldone request request
。
這段代碼中實際存在兩個錯誤(如果你喜歡這種事情,留作練習),但最終我認爲會發生這種情況,因爲當給出沒有任何意義的參數時,JavaScript和jQuery都非常寬鬆。在這種環境下,「正確」的事情似乎是「做什麼也不做,只是不要犯錯誤!」。
看到,因爲這代碼通過JSLint的,並且剛剛花了我幾個小時的調試(真正的代碼是當然的幅度更復雜的幾個數量級),我不知道還有什麼我可以做減少浪費時間在這種毫無根據的寬大。這不是一個孤立的例子;它似乎一遍又一遍地發生。有什麼建議麼?
根據你的論點是沒有意義的。據引擎,我相信他們這樣做。你會從你的「bug」中期望哪些錯誤?像「無效論證」? – bzlm
@bzlm我很想討論這個問題,但是我擔心這會使問題偏離正軌。我無法更改JavaScript,並且我無法更改jQuery(很多),所以我想知道如何避免這種情況。 –
我感到你的痛苦。令人難以置信的是這種容易出錯的編程風格是多麼受歡迎。幾乎沒有一天,沒有我必須瀏覽我自己的JS代碼,並盯着最細微的語法的每個細節,找到一個合適的編譯器可以找到並在一秒鐘內標記的錯誤。我不知道其他人如何享受這種令人沮喪的經歷,但是他們這樣做,他們不可能以這種方式提高生產力。 – Timwi