eslint - 代码规范性问题集锦

举报
liuzhen007 发表于 2021/05/26 16:49:07 2021/05/26
【摘要】 目录 前言 类型一、Expected '===' and instead saw '==' 类型二、Use '!==' to compare with null 类型三、'*' was used before it was defined 类型四、 '*' is defined but never used 类型五、Unexpected negated ...

目录

前言

类型一、Expected '===' and instead saw '=='

类型二、Use '!==' to compare with null

类型三、'*' was used before it was defined

类型四、 '*' is defined but never used

类型五、Unexpected negated condition

类型六、 '*' is not defined

类型七、Unexpected mix of '/' and '-'

类型八、Unexpected string concatenation of literals

类型九、Expected '===' and instead saw '=='

类型十、'*' is already declared in the upper scope

类型十一、This line has a length of *. Maximum allowed is 120

类型十二、Function declared in a loop contains unsafe references to variable(s)



前言

最近为了规范化代码风格,项目组内启用了VSCode插件eslint,了解eslint的同学都知道,它是在 ECMAScript/JavaScript 代码中识别和报告模式匹配的工具,给出一些代码规范建议,其目的是为了保证代码的一致性和避免一些可能出现的错误。 都有 

类型一、Expected '===' and instead saw '=='

提示警告的波浪线如下图所示: 

报错的意思是应该使用“===”代替“==”,具体警告信息:


  
  1. {
  2. "resource": "/g:/project/*/main.js",
  3. "owner": "eslint",
  4. "code": {
  5. "value": "eqeqeq",
  6. "target": {
  7. "$mid": 1,
  8. "external": "https://eslint.org/docs/rules/eqeqeq",
  9. "path": "/docs/rules/eqeqeq",
  10. "scheme": "https",
  11. "authority": "eslint.org"
  12. }
  13. },
  14. "severity": 8,
  15. "message": "Expected '===' and instead saw '=='.",
  16. "source": "eslint",
  17. "startLineNumber": 783,
  18. "startColumn": 27,
  19. "endLineNumber": 783,
  20. "endColumn": 29
  21. }

其中,指明了警告的位置,包括行号,列号,范围等信息。修改后如下图所示,警告波浪线消失:

类型二、Use '!==' to compare with null

提示警告的波浪线如下图所示:  

 警告的意思是应该使用“!==”去和null做判断,修改后如下图所示,警告波浪线消失:

类型三、'*' was used before it was defined

实例:'mainWindow' was used before it was defined.

提示警告的波浪线如下图所示:  

警告的意思是应该某个对象在它正式定义之前就被违规使用了,具体警告信息:


  
  1. {
  2. "resource": "/g:/project/*/main.js",
  3. "owner": "eslint",
  4. "code": {
  5. "value": "no-use-before-define",
  6. "target": {
  7. "$mid": 1,
  8. "external": "https://eslint.org/docs/rules/no-use-before-define",
  9. "path": "/docs/rules/no-use-before-define",
  10. "scheme": "https",
  11. "authority": "eslint.org"
  12. }
  13. },
  14. "severity": 8,
  15. "message": "'mainWindow' was used before it was defined.",
  16. "source": "eslint",
  17. "startLineNumber": 204,
  18. "startColumn": 9,
  19. "endLineNumber": 204,
  20. "endColumn": 19
  21. }

解决方法是调整代码顺序,修改后如下图所示,警告的波浪线消失:

类型四、 '*' is defined but never used

 提示警告的波浪线如下图所示:  

 

警告的意思是某些对象被定义了,但是没有被使用到。解决方式是去掉没有必要的声明对象 ,修改后如下图所示,警告的波浪线消失:

类型五、Unexpected negated condition

 提示警告的波浪线如下图所示:  

警告的意思是不正常的判断形式,mPenOpen可以直接作为一个判断条件,而不用多此一举加个“!”非运算符, 修改后如下图所示,警告的波浪线消失:

类型六、 '*' is not defined

 提示警告的波浪线如下图所示:  

警告的意思是某些对象没有定义就被使用了,解决方式是正式声明这些对象, 修改后如下图所示,警告的波浪线消失:

类型七、Unexpected mix of '/' and '-'

 提示警告的波浪线如下图所示:  

警告的意思是不用运算符混合使用了,解决方法是使用小括号明确运算过程的优先级。修改后如下图所示,警告的波浪线消失:

类型八、Unexpected string concatenation of literals

 提示警告的波浪线如下图所示:   

警告的意思是异常的字符串连接方式,修改后如下图所示,警告的波浪线消失:

类型九、Expected '===' and instead saw '=='

 提示警告的波浪线如下图所示:    

警告的意思是建议使用“===”代替“==”,修改后如下图所示,警告的波浪线消失: 

类型十、'*' is already declared in the upper scope

 提示警告的波浪线如下图所示:    

警告的意思是该变量名之前被定义了,此处属于重复定义,修改后如下图所示,警告的波浪线消失:  

类型十一、This line has a length of *. Maximum allowed is 120

 提示警告的波浪线如下图所示:    

警告的意思是某行代码长度超过了最大值限制,具体内容如下所示:


  
  1. {
  2. "resource": "/g:/project/*/main.js",
  3. "owner": "eslint",
  4. "code": {
  5. "value": "max-len",
  6. "target": {
  7. "$mid": 1,
  8. "external": "https://eslint.org/docs/rules/max-len",
  9. "path": "/docs/rules/max-len",
  10. "scheme": "https",
  11. "authority": "eslint.org"
  12. }
  13. },
  14. "severity": 8,
  15. "message": "This line has a length of 402. Maximum allowed is 120.",
  16. "source": "eslint",
  17. "startLineNumber": 98,
  18. "startColumn": 1,
  19. "endLineNumber": 98,
  20. "endColumn": 1
  21. }

 解决方式有两种,方法一是明确允许该行代码超出最大长度限制,如下图所示:

方法二是折行处理这段代码,同时使用eslint-disable-next-line no-multi-str声明,具体如下图所示:

类型十二、Function declared in a loop contains unsafe references to variable(s)

警告⚠️:Function declared in a loop contains unsafe references to variable(s) 'count'.

提示警告的波浪线如下图所示: 

解决方式使用eslint-disable-next-line no-loop-func明确声明知道这样的操作行为,修改后如下图所示,警告的波浪线消失:

文章来源: liuzhen.blog.csdn.net,作者:Data-Mining,版权归原作者所有,如需转载,请联系作者。

原文链接:liuzhen.blog.csdn.net/article/details/107047629

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。