所以我一直在探索不同的方法来清理和测试我的JavaScript.我认为就像任何其他语言一样,改善的一种方法就是阅读好的代码.jQuery非常受欢迎,所以它必须具有一定程度的良好编码.
那么为什么当我通过JSLint的验证运行jQuery时,它给了我这样的信息:
错误:
第18行的问题字符5:预期标识符,而不是"未定义"(保留字).
不确定的,
第24行问题27:缺少分号.
jQuery = window.jQuery = window.$ = function(selector,context){
第24行的问题28:预期的标识符,而不是'='.
jQuery = window.jQuery = window.$ = function(selector,context){
第24行问题28: 停止,无法继续.(扫描0%).
这是使用JSLint和jquery-1.3.1.js完成的
JSLint测试了一个特定的人(道格拉斯克罗克福德)关于什么是好的JavaScript代码的意见.Crockford非常好,但他的一些观点充其量只是肛门保留,如下划线规则,或使用增量/减量运算符.
JSLint在上面的输出中标记的许多问题都是Crockford认为导致难以维护代码的问题,或者他认为这些问题导致他过去做了一些难以维护的"聪明"事情.
有一些东西Crockford认为是我同意的错误,比如丢失的分号.删除分号会强制浏览器猜测插入语句结束标记的位置,这有时会很危险(它总是较慢).其中一些错误与JSLint有关,而不是期望或支持jQuery在第24行上执行的多个赋值.
如果你有一个关于JSLint错误的问题,请发送电子邮件给Crockford,他非常擅长回复,并且通过他的回复,你至少会知道为什么JSLint会以这种方式实现.
哦,只是因为图书馆很受欢迎并不意味着它的代码是好的.JQuery很受欢迎,因为它是一个相对快速,易于使用的库.它实施得很好,在很多人中很受欢迎.但是,您当然应该阅读更多代码,我们都应该.
即使JQuery没有通过它所希望的标准,JSLint在识别代码问题方面也非常有用.
JSLint可以帮助您发现问题,它不是对有效性的测试,也不是思维的替代.随着js的发展,jQuery非常先进,这使得这样的结果变得可以理解.我的意思是前几行是速度黑客,难怪最严格的js解析器会有几个错误.
在任何情况下,流行代码完全正确的代码甚至"好"的假设是有缺陷的.JQuery代码很好,你可以从阅读中学到很多东西.你仍然应该通过JSLint运行你的东西,只是因为听到你写的东西的另一个意见是好的.
从JSLint的描述:
JSLint接受JavaScript源并对其进行扫描.如果发现问题,则会返回描述问题的消息以及源中的大致位置.问题不一定是语法错误,尽管通常是这样.JSLint着眼于一些样式约定以及结构问题.它并不能证明您的程序是正确的.它只是提供另一组眼睛来帮助发现问题.
JSLint定义了JavaScript的专业子集,这是一种比ECMAScript语言规范第3版定义的更严格的语言.该子集与JavaScript编程语言的代码约定中的建议相关.
"jQuery很受欢迎,所以它必须有一定程度的良好编码."
人们希望jQuery可以这样,但不幸的是,这并不是真的.jQuery非常有用且受欢迎,但它不是一个编写良好的JavaScript库.David Mark最近在comp.lang.javascript中发布了对jQuery的严厉批评,它检查了jQuery中发现的大量代码的大量示例:
http://groups.google.com/group/comp.lang.javascript/msg/37cb11852d7ca75c?hl=en&