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 并花了我几个小时的调试时间(实际代码当然要复杂几个数量级),我想知道我还能采取什么措施来减少浪费的时间如此宽容的宽大处理。这不是一个孤立的例子。它似乎一遍又一遍地发生。有什么建议?
最佳答案
实际上,可以在Javascript中的运行时使用check types,只是严格不是Javascript中的首选样式。 JS黑客喜欢将其挂起。
其他黑客可以应付这个,对吗?因此,我建议不要研究其他方法来减少调试工作,而应该将大量时间花在调试该问题上,而不是指责该语言或jQuery。
我可以想到以下几点建议: