javascript - jshint 是否根据函数是否无效给出 "missing semicolon"?

标签 javascript jshint

我在 VSCode 中使用 jshint。 jshint 在下面函数的末尾 '}' 处给出“缺少分号”警告

void function doSomething(){
    console.log('Hello, World');
}

enter image description here

并且加上分号就满足jshint:

enter image description here

但是在我删除 void 之后,警告消失了,没有分号:

void function doSomething(){
    console.log('Hello, World');
}

enter image description here

这背后的逻辑是什么?更一般地说,是否有官方风格指南,例如 PEP8 in Python Javascript 解决分号的最佳实践?

最佳答案

根据您拥有的 linting 规则:

  • 函数声明后不需要跟分号。
  • 表达式,包括那些包含函数表达式的表达式。

通过将 void 运算符放在 function 关键字之前,您可以强制它进入表达式上下文。

因为它是在表达式上下文中,所以你对表达式中的函数什么都不做,并且你将结果作废,它变得毫无意义。该表达式根本不执行任何操作。它甚至没有创建一个存储函数的变量,这就是为什么会出现这个错误:

void function x() { console.log(1) };
x();

More generally, what's the best practice rule on semicolns in javascript?

高度固执己见的主题。

关于javascript - jshint 是否根据函数是否无效给出 "missing semicolon"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54502876/

相关文章:

javascript - jQuery 仅返回 <li> 元素文本

javascript - Typescript Sprite 动画

javascript - 如何使用 Niceedit 编辑器获取 "upload image"字段

javascript - 在 jQuery 中获取一个句子的多个 div 的开始和结束索引

node.js - 在 Windows 环境中的 Node 项目上运行 JSHint

javascript - 根据现有类名更改类名

javascript - 需要一个标识符,但看到的是 '*' 。 (E030) [jshint]

javascript - 防止 jshint 警告 "Expected ' {' and instead saw ' 返回'。”

javascript - 如何使用 jquery $.grep 解决 jshint 错误 `Don' t makefunctions inside a loop.`

javascript - 我需要在jasmine测试文件中使用 'use strict'的函数形式吗?