zoukankan      html  css  js  c++  java
  • JSLint检测Javascript语法规范

    前端javascript代码编写中,有一个不错的工具叫JSLint,可以检查代码规范化,压缩JS,CSS等,但是他的语法规范检查个人觉得太“苛刻”了,会提示各种各样的问题修改建议,有时候提示的信息我们看的莫名其妙,这里,先转载一下携程UED的一个技术文章(原文链接http://ued.ctrip.com/blog/?p=2733),看看JSLint的错误提示都是什么意思:

    “Missing semicolon.” : “缺少分号.”,
    “Use the function form of ”use strict”.” : “使用标准化定义function.”,
    “Unexpected space after ‘-’.” : “在’-'后面不应出现空格.”,
    “Expected a JSON value.” : “请传入一个json的值.”,
    “Mixed spaces and tabs.”: “空格和TAB重复.”,
    “Unsafe character.” : “不安全的字符.”,
    “Line too long.”: “本行中的字符超过设定的最大长度.”,
    “Trailing whitespace.”: “本行末尾有过多无用空格.”,
    “Script URL.” : “脚本URL.”,
    “Unexpected {a} in ‘{b}’.” : “在 ‘{b}’ 中不该出现 {a}.”,
    “Unexpected ‘{a}’.” : “不该在此出现’{a}’.”,
    “Strings must use doublequote.” : “字符串需要用双引号”,
    “Unnecessary escapement.” : “不需要转义”,
    “Control character in string: {a}.” : “在字符串中出现了Control的字符”,
    “Avoid \’.” : “避免 \”,
    “Avoid \v.” : “避免 \v”,
    “Avoid \x-.” : “避免 \x-”,
    “Bad escapement.” : “错误的转义字符”,
    “Bad number ‘{a}’.” : “错误的数字 ‘{a}’”,
    “Missing space after ‘{a}’.” : “在’{a}’之后缺少空格”,
    “Don’t use extra leading zeros ‘{a}’.” : “不要再’{a}’的前面用多余的0″,
    “Avoid 0x-. ‘{a}’.” : “避免使用 0x-. ‘{a}’.”,
    “A trailing decimal point can be confused with a dot ‘{a}’.” : “在’{a}’中使用点尾随小数点”,
    “Unexpected comment.” : “不该在此处出现注释”,
    “Unescaped ‘{a}’.” : “没有转义 ‘{a}’”,
    “Unexpected control character in regular expression.” : “在正则表达式中出现了control字符”,
    “Unexpected escaped character ‘{a}’ in regular expression.” : “在正则表达式中出现了没有转义的字符 ‘{a}’”,
    “Expected ‘{a}’ and instead saw ‘{b}’.” : “应该用 ‘{a}’代替’{b}’”,
    “Spaces are hard to count. Use {{a}}.” : “空格难以统计,请使用 {{a}}”,
    “Insecure ‘{a}’.” : “不安全的 ‘{a}’”,
    “Empty class.” : “空的class”,
    “Expected a number and instead saw ‘{a}’.”:“应该用数字代替’{a}’”,
    “‘{a}’ should not be greater than ‘{b}’.”:“‘{a}’不应该比’{b}’大”,
    “‘hasOwnProperty’ is a really bad name.”: “‘hasOwnProperty’是关键字”,
    “‘{a}’ was used before it was defined.”:“‘{a}’未定义就已经使用了.”,
    “‘{a}’ is already defined.”:“‘{a}’被重复定义”,
    “A dot following a number can be confused with a decimal point.”:“数字后面的一个点会被误认为是十进制的小数点”,
    “Confusing minusses” : “容易混淆的负数表达-”,
    “Confusing plusses.” : “容易混淆的正数表达+”,
    “Unmatched ‘{a}’.” : “无法匹配的’{a}’”,
    “Expected ‘{a}’ to match ‘{b}’ from line {c} and instead saw ‘{d}’.”:“在行{c}中需要用’{a}’和’{b}’匹配,用来代替’{d}’”,
    “Unexpected early end of program.”:“程序不可预期的提前终止”,
    “A leading decimal point can be confused with a dot: ‘.{a}’.”:“‘{a}’前的点容易混淆成小数点”,
    “Use the array literal notation [].”:“使用数组的符号 []“,
    “Expected an operator and instead saw ‘{a}’.”:“需要用一个符号来代替’{a}’”,
    “Unexpected space after ‘{a}’.”:“在’{a}’之后不能出现空格”,
    “Unexpected space before ‘{a}’.”:“在’{a}’之前不能出现空格”,
    “Bad line breaking before ‘{a}’.”:“在’{a}’之前错误的换行”,
    “Expected ‘{a}’ to have an indentation at {b} instead at {c}.”:“‘{a}’需要在{c}而不是{b}处缩进”,
    “Line breaking error ‘{a}’.”:“换行错误 ‘{a}’”,
    “Unexpected use of ‘{a}’.”:“此处不能用’{a}’”,
    “Bad operand.”:“错误的操作数”,
    “Use the isNaN function to compare with NaN.”:“使用isNaN来与NaN比较”,
    “Confusing use of ‘{a}’.”:“容易混淆的’{a}’的使用”,
    “Read only.”:“只读的属性”,
    “‘{a}’ is a function.”:“‘{a}’是一个函数”,
    ‘Bad assignment.’:“错误的赋值”,
    “Do not assign to the exception parameter.”:“不要给额外的参数赋值”,
    “Expected an identifier in an assignment and instead saw a function invocation.”:“在赋值的语句中需要有一个标识符,而不是一个方法的调用”,
    “Expected an identifier and instead saw ‘{a}’ (a reserved word).”:“需要有一个标识符,而不是’{a}’(保留字符)”,
    “Missing name in function declaration.”:“在方法声明中缺少名称”,
    “Expected an identifier and instead saw ‘{a}’.”:“需要有一个标识符,而不是’{a}’”,
    “Inner functions should be listed at the top of the outer function.”:“内部函数的声明应该放在此函数的顶部。”,
    “Unreachable ‘{a}’ after ‘{b}’.”:“在’{b}’之后无法获取’{a}’”,
    “Unnecessary semicolon.”:“不必要的分号”,
    “Label ‘{a}’ on {b} statement.”:“将’{a}’放在{b}的声明中”,
    “Label ‘{a}’ looks like a javascript url.”:“‘{a}’看上去像一个js的链接”,
    “Expected an assignment or function call and instead saw an expression”:“需要一个赋值或者一个函数调用,而不是一个表达式.”,
    “Do not use ‘new’ for side effects.”:“不要用’new’语句.”,
    “Unnecessary ”use strict”.”:“不必要的”use strict”.”,
    “Missing ”use strict” statement.”:“缺少”use strict”的声明”,
    “Empty block.”:“空的模块”,
    “Unexpected /*member ‘{a}’.”:“不应出现 /*元素 ‘{a}’.”,
    “‘{a}’ is a statement label.”:“‘{a}’是一个声明”,
    “‘{a}’ used out of scope.”:“‘{a}’使用超出范围”,
    “‘{a}’ is not allowed.”:“不允许使用’{a}’”,
    “‘{a}’ is not defined.”:“‘{a}’没有被定义”,
    “Use ‘{a}’ to compare with ‘{b}’.”:“使用’{a}’与’{b}’相比”,
    “Variables should not be deleted.”:“变量需要被删除”,
    “Use the object literal notation {}.”:“使用对象的文字符号 {}”,
    “Do not use {a} as a constructor.”:“不要使用{a}作为一个构造对象”,
    “The Function constructor is eval.”:“The Function constructor is eval.”,
    “A constructor name should start with an uppercase letter.”:“一个构造对象的名称必须用大写字母开头.”,
    “Bad constructor.”:“错误的构造对象”,
    “Weird construction. Delete ‘new’.”:“构造对象有误,请删除’new’”,
    “Missing ‘()’ invoking a constructor.”:“缺少括号()”,
    “Avoid arguments.{a}.”:“避免参数.{a}.”,
    “document.write can be a form of eval.”:“document.write是eval的一种形式”,
    ‘eval is evil.’:“尽量不要使用eval”,
    “Math is not a function.”:“Math不是一个函数”,
    “Missing ‘new’ prefix when invoking a constructor.”:“此处缺少了’new’”,
    “Missing radix parameter.”:“缺少参数”,
    “Implied eval is evil. Pass a function instead of a string.”:“传递一个函数,而不是一个字符串”,
    “Bad invocation.”:“错误的调用”,
    “['{a}'] is better written in dot notation.”:“['{a}']最好用点.的方式”,
    “Extra comma.”:“多余的逗号”,
    “Don’t make functions within a loop.”:“不要用循环的方式创建函数”,
    “Unexpected parameter ‘{a}’ in get {b} function.”:“在{b}方法中不该用到参数’{a}’”,
    “Duplicate member ‘{a}’.”:“重复的’{a}’”,
    “Expected to see a statement and instead saw a block.”:“此处应该是语句声明.”,
    “Too many var statements.”:“过多var的声明”,
    “Redefinition of ‘{a}’.”:“‘{a}’被重复定义”,
    “It is not necessary to initialize ‘{a}’ to ‘undefined’.”:“无需将’{a}’初始化为’undefined’”,
    “Expected a conditional expression and instead saw an assignment.”:“此处需要一个表达式,而不是赋值语句”,
    “Expected a ‘break’ statement before ‘case’.”:“在’case’之前需要有’break’.”,
    “Expected a ‘break’ statement before ‘default’.”:“在’default’之前需要有’break’.”,
    “This ‘switch’ should be an ‘if’.”:“此处’switch’应该是’if’.”,
    “All ‘debugger’ statements should be removed.”:“请删除’debugger’的语句”,
    “‘{a}’ is not a statement label.”:“‘{a}’不是一个声明标签.”,
    “Expected an assignment or function call and instead saw an expression.”:“需要一个语句或者一个函数调用,而不是一个表达式”,
    “Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.”:“函数的声明不能放在类似if的块中,需要放在外部函数的顶部.”
     

    针对自己项目中遇到的一些提示,做一些举例说明:

    1 [W099]:Mixed spaces and tabs

    这个错误是最常见的,意思是在同一行中,空格和Tab缩进混合使用了,修改很简单,一般是删除Tab缩进,全部改为空格。为了方便,我们可以把编辑器的Tab缩进设置成2个或4个空格,来代替原有的缩进。

    2 [W030]:Expected an assignment or function call and instead saw an expression

    这个错误提示的很诡异,我是用如下代码提示的这个错误 index-1 <0 ? index = 0:index = index - 1;  这是一个逗号表达式,但是JSLInt认为这里不应该用表达式,而必须是一个函数,所以,如果非常在乎这个错误,就改为if else 语句吧

    3 [W041]:Use '===' to compare with ...

    这个错误是说,我们要是用全等来代替等于,如果表达式两边的数据类型是一致的话,建议使用全等来判断

    4 [W033]:Missing semicolon

    缺少分号;这个一般都是自己忘记写了吧,但是有一个需要注意的是,对于只有一句的结构,后面也需要写分号。例如:if(index<0) {index=tcount-1} 这句代码,正确写法是if(index<0) {index=tcount-1;},我是经常忘记这里写分号,汗...

    其他还有一些错误提示就对照一下改吧,要培养自己良好的代码风格和书写习惯。

    http://www.zystudios.cn/blog/post/70.Shtml

  • 相关阅读:
    iaas,paas,saas理解
    July 06th. 2018, Week 27th. Friday
    July 05th. 2018, Week 27th. Thursday
    July 04th. 2018, Week 27th. Wednesday
    July 03rd. 2018, Week 27th. Tuesday
    July 02nd. 2018, Week 27th. Monday
    July 01st. 2018, Week 27th. Sunday
    June 30th. 2018, Week 26th. Saturday
    June 29th. 2018, Week 26th. Friday
    June 28th. 2018, Week 26th. Thursday
  • 原文地址:https://www.cnblogs.com/weibo806/p/7411594.html
Copyright © 2011-2022 走看看