• JShint 学习


    前端代码规范

    前言:

    关于前端代码规范,特别是针对js. 推荐使用jshint插件,sublime/webstorm都有对应的安装插件.下面针对sublime进行安装使用说明.

    安装:

    1. 安装前保证你的电脑已经安装了npm nodejs,由于插件是基于nodejs运行的应用npm可以下载对应的安装包.(查看npmnodejs是否安装好,可以通过查看版本命令:    node -v)
    2. 配置好nodejsnpm执行命令: sudo npm install -g jshint , jshint进行全局安装.
    3. 打开sublime, Ctrl+Shift+P打开执行Install Package, 选择sublimeLinter进行安装,然后继续安装sublimeLinter-jshint安装完成后不出意外就可以检查js代码中的语法错误.

    凡事都有意外我碰到的问题是根本没有执行代码检查,什么反应都没有搞了半天,才发现我前面执行安装jshint的时候没有加sudo命令在配置文件中根本找不到jshint的目录和nodejs的路径正确配置的截图如下:

     

    正常后检查界面如下:

     

    上述代码中出现: .jshintrc文件这个文件作用是配置规范参数下面详细说明这个文件(表格中配置字段名首字母应为小写):

    字段名

    说明

    Bitwise

    JavaScript中二进制操作(|^&), true:对二进制操作符提出警告,false:程序中可以使用二进制操作

    Camelcase

    程序中所有变量必须符合camelCaseUPPER_CASE规范

    Curly

    True: 将所有程序放在大括号中

    Eqeqeq

    True:==!=改成===!==

    Esversion

    指定ESCMAScript版本, 3/5/6

    Forin

    for in循环中必须加上hasOwnProperty语句,例如:

    For(key in obj){

       If(obj.hasOwnProperty(key)){

          ......

       }

    }

    Freeze

    在重写Javascript固有对象的方法时使用,比如:Array/Date.

     

    Funcscope

    Function test(){

      If(true){

         Var x = 0;

      }

      X += 1; //这个x应该属于函数作用域范围之外,如果设置为     

               //true,则不会有警告.

     

    Futurehosite

    True: 警告js未来版中定义的表示符

    Globals

    指定一个没有正式定义的全局变量

    Immed

    True:直接调用的函数必须要用括号包围

    (function(){}())

    Indent

    设置代码缩进长度

    Latedef

    禁止定义之前使用变量“nofunc”: 允许函数声明被忽略

    Maxcomplexity

    "maxcomplexity": 8, // 控制你的代码复杂度

    Maxdepth

    设置代码最大深度

    Maxerr

    设置jshint的最大警告数量.默认50

    Maxlen

    设置最大行数

    Maxparams

    设置函数形参最大个数: 4

    Maxstatements

    通常设置40

    Newcap

    要求所有构造器使用new F()

    Noarg

    禁止使用arguments.callerarguments.callee

    Nocomma

    禁止使用逗号操作符

    Nonew

    这个选项禁止使用new构造器函数

    Notypeof

    检查无效的typeof操作符

    Predef

    扩展的隐式全局变量

    Quotmark

    主要设置引号一致性,”true” 代码字符串禁止单引号双引号混用;”single”: 只允许使用单引号; “double”:只允许使用双引号

    Shadow

    检查变量重复定义;  inner: 制检查是否在相同作用域重复定义; outer:检查外部作用域定义; falseinner一样 true允许变量覆盖

    singleGroups

    禁止使用分组操作符

    Strict

    “global”全局层面上的严格模式”use strict”; “implied”: 文件里面使用”use strict”; false: 禁止使用严格模式; true: 函数上面必须使用”use strict” 

    Undef

    变量未定义(如果某个变量在另外一个文件中定义,可以使用global告诉JSHint)

    Unused

    变量定义但是未使用

    Varstmt

    设置为true,禁止使用var声明变量

    Asi

    禁止缺少分号警告

    Boss

    禁止比较表达式的值没有达到预期警告

    Eqnull

    禁止==null比较

    Evil

    禁止使用evil

    Lastsemic

    检查一行代码后面的分号是否遗漏

    Laxcomma:

    检查逗号在代码行最前面的编程风格

    Loopfunc

    禁止内部循环,定义函数的内部循环可能导致错误

    Plusplus

    禁止一元递增或者递减运算符

    Sub

    检查[]使用,可以使用.代替[]

    下面这些选项是让JSHint知道一些预定义的全局变量

    1. Browser: 暴露浏览器的全局属性比如: window / document
    2. Browserify: 这个选项定义全局变量使用时可用Browserify工具建立一个项目
    3. Couch: 定义全局暴露的CouchDB
    4. Devel: 定义全局变量通常用于日志调试: console, alter
    5. Dojo: 这个选项定义全局暴露的Dojo Tookit
    6. Jasmine: 这个选项定义全局暴露jasmine的单元测试框架
    7. Jquery: 定义全局暴露的jQuery
    8. Module: 所有模块的代码解释为严格代码模式
    9. Mootools: 定义全局暴露MooToolsJavaScript框架
    10. Node: 定义全局变量,可以当你的代码运行在node环境中
    11. Nonstandard: 采用全局变量escapeunescape
    12. Prototypejs: 全局暴露prototypejs框架
    13. Qunit: 全局暴露qunit单元测试框架
    14. Typed: 这个选项定义全局暴露的ShellJS
    15. Yui: 定义全局暴露的yui框架

     

     

    内联定义:

    1. 忽略一个代码块:

    /*jshint ignore: start*/

    code

    /*jshint ignore: end*/

    1. 忽略一行

    //jshint ignore: line

    1. Freeze控制

    //jshint freeze: false

    code

    //jshint freeze: true

     

  • 相关阅读:
    webpack浅析
    MongoDB简易
    async函数
    react -- context
    抓包移动端方法
    stateless 无状态组件
    移动端适配
    JS和JQuery获取和修改Label的值的示例代码
    HTML DOM querySelector() 方法
    filter
  • 原文地址:https://www.cnblogs.com/KruceCoder/p/5818247.html
Copyright © 2020-2023  润新知