JSHint 奇怪的行为

2024-02-01

我认为我应该问关于 jSHint 的新问题,讨论开始了here https://stackoverflow.com/questions/35987052/js-strange-behavior,我现在可以看到来自 JSHint 的奇怪警告,我只是想知道为什么。

这项服务 http://jshint.com/被建议。

所以我在 JSHint 中有这段代码:

var foo = function() {
   return {
       hi: console.log("foo")
   } //line 15 <------ why we have to put ; here?
};

var foo1 = function() {
    return // i know about ; here, please read post
    {
        hi: console.log("foo1")
    }; // line 22 <---- why we don't need to put ; here?
};

我通过上面的注释“此行”标记了收到警告的行。

那么,问题:

我有两个奇怪的警告:

第一次警告15 Missing semicolon.约15行

第二次警告22 Unnecessary semicolon.约22行

但这两条线对我来说看起来是一样的,我错过了什么?为什么我们这里有两个不同的警告?

EDIT

问题不是关于行为,问题是关于警告。为什么它们不同?

我知道我在第二次返回时错过了分号!


后面应该有分号声明。他们不需要跟随blocks。例如,这里有一个不必要的分号if:

if(foo === bar) {
    //...
};

后面的分号if块从来没有必要。

这和你的案子有什么关系?嗯,有时候{ ... }是一个块,有时{ ... }是一个对象字面量。周围的上下文让语法决定它是什么。在第一种情况下,它是一个对象;在第二种情况下,它是一个块。

后面的字符return同一行上的语句被解析为表达式。什么时候{ ... }被解析为表达式,它是一个对象字面量。在你的第一个例子中,return { ... }是带有对象表达式的返回语句。它应该有一个终止分号,因为它是一个语句。

这里要理解的关键是 ECMAScript 语法不允许用换行符分隔return及其返回值表达式。在里面ES2015 §11.9.1,自动分号插入规则 http://www.ecma-international.org/ecma-262/6.0/index.html#sec-rules-of-automatic-semicolon-insertion:

ReturnStatement[Yield] :

  • return [no 行终结符 here] 表达 ;
  • return [no LineTerminator here] Expression[In, ?Yield] ;

A 退货声明不能有一个行终结符之间的字符return表达.

自从你do你之间有一个换行符return{ ... }, the { ... }部分未被解析为属于return。它是独立的,这意味着它被解析为一个块。这{ ... }仅当序列是较大语句或表达式的一部分时,才能将其解析为对象,例如

  • 任务,foo = { ... }
  • 函数参数(bar({ ... })
  • 返回值(return { ... })
  • etc.

When { ... }本身纯粹在一条线上,它被视为一个块。

由于第二种情况有一个块,而不是一个对象,因此它不需要分号,如本答案开头所述。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSHint 奇怪的行为 的相关文章

  • D3.js分组条形图

    I am making a bar chart using D3 js like this source statcan gc ca http www statcan gc ca pub 12 593 x 2007001 figures f
  • 无法实现模块模式

    我正在尝试重现 Douglas Crockford 所著的 Javascript The Good Parts 一书中的一些代码 这个想法是使用闭包进行对象封装并避免Javascript固有的全局变量 var serial maker fu
  • 检查复选框是否被选中? [复制]

    这个问题在这里已经有答案了 如何通过 jQuery 检查复选框是否被选中 我可以只向元素添加 ID 或类并执行此操作吗 if element val 1 do stuff if element is checked checkbox is
  • CSS 比例和方形中心裁剪图像

    所以我的应用程序中有一个缩略图集合 其大小为200x200 有时原始图像没有这个比例 所以我计划将此图像裁剪为正方形 目前它只是拉伸图像以适合缩略图 所以说我的原始图像大小是400x800 那么图像看起来就很压扁 我想裁剪此图像 以便它查看
  • 如何从 JavaScript 触发 ASP.NET Core 客户端验证

    有没有办法从 JavaScript 触发 ASP NET Core 客户端验证 我有一个 Razor Pages 页面 其中包含
  • Android 上的 Chrome 强制隐藏地址栏

    我最近开发了一个获取混合 http https 内容的网站 因此 我总是将地址栏显示在顶部 它不会像其他网站那样自动隐藏 这就是我要说的 This https planetkde org 是网站的链接 内容是从各种来源获取的 因此无法过滤非
  • 使用javascript向url添加哈希而不滚动页面?

    在不滚动页面的情况下向 url 添加哈希 使用 JavaScript 我打开页面 我向下滚动 我单击添加哈希的链接 可能带有值 test 示例 http www example com test http www example com t
  • WaveSurfer JS 无法在 Firefox 中为特定的 mp3 音频文件生成图表

    我们面临着在 Firefox 中使用 wavesurfer JS 对某些特定格式的 mp3 文件绘制音频可视化 图表 的问题 它总是给我们这样的错误 传递给decodeAudioData 的缓冲区包含未知的内容类型 但同一个文件在 chro
  • 使用 ES6 静态函数时,我得到“没有这样的方法”

    我正在尝试为我在 React Native 中工作的项目创建一个包含静态函数的 utils 类 我读到了如何在 StackOverFlow 中创建静态函数question https stackoverflow com questions
  • 在 JavaScript 中引用 C# 变量

    我已经阅读了很多线程 但我不明白为什么这不起作用 我正在创建一个将用作导航栏的 SharePoint Web 部件 一切都很顺利 直到我尝试在 JS 代码中引用 C 变量 这是来自 VisualWebPart1UserControl asc
  • ajax 调用成功后点击链接 href

    我有一个正常的链接 a href http www google com class continue Continue a 我已将点击绑定到一个事件来发布 ajax 请求 如下所示 continue click function ajax
  • 无法安装js-bson

    我正在使用Windows 7 64位 尝试安装bson作为mongodb的依赖项 我收到此错误 npm WARN package json email protected cdn cgi l email protection No READ
  • JavaScript:嵌套循环?

    我想实现这样的动画 序列 动画以循环开始 想象一下car从 x1 移动到 x2 然后暂停 1 秒 然后再次播放动画 想象一下car从 x2 移动到 x3 等 the car循环是通过向汽车左侧添加 1px 来实现的 值 但我无法弄清楚嵌套循
  • 如何使表格单元格的最小宽度为 3 位数字?

    如何使表格中的每个单元格的最小宽度为 3 位数字且不会更大 现在我正在硬编码min width 但我不喜欢硬编码一个值 因为我将来可能想更改字体 如果需要Javascript也没关系 table border 1 tr td 1 td td
  • 主干集合排序

    我制作了我的第一个主干应用程序 但在集合排序方面遇到了一些问题 使用这个后 var SortedFriends MyFriends sortBy function friend return friend get uid console l
  • JQuery 屏蔽输入插件不起作用

    我已将 JQuery Masked 输入插件添加到我的 Web 项目中 但它根本不起作用 该插件可以在这里找到 http digitalbush com projects masked input plugin http digitalbu
  • Apollo 客户端“未找到命名导出‘删除’”

    我正在尝试创建一个apollo client插件Nuxt 3应用 它当前抛出有关名为的包的错误ts invariant file Users my name Repositories project node modules apollo
  • 让管道自我刷新角度

    我有来自后端的静态时间戳 我想每 1 秒刷新一次管道以获取现在的日期 这是我的烟斗 import Pipe PipeTransform from angular core import moment from moment Pipe nam
  • RemoveEventListener 在 Firefox 版本 58 中不起作用

    但它在 Chrome 中有效 这是我的 UI EventBus 代码 原型 addEventListener方法是一样的 只不过remove换成了add UI EventBus removeEventListener function ob
  • 将响应式网格布局转换为 Plotly Dash

    我是一个非常活跃的 Dash 用户 我开始发现 Dash 使用中存在很多限制 并且我意识到有关如何将组件转换为 Dash 的信息 内容绝对有限 并且示例过时且非常简单 并且我对 Javascript 或 React 几乎没有任何了解 我完全

随机推荐

  • 游标用前一行和当前行的值更新行

    各位查询作者 我有一个表如下 myTable t1 col2 col3 2 1 3 0 4 0 5 0 6 0 我想用前一行中 col3 的值加上当前行中 col2 的值来更新 col3 上的每个零 所以我的桌子会像下面这样 myTable
  • 使用 BizTalk 代替 NServiceBus 或 MassTransit 的优点/缺点

    我很好奇它是否考虑使用 BizTalk 来实现 pub sub 消息传递架构 基本上我真正需要的就是你可以使用 NServiceBus 或 MassTransit 做的事情 我的经理倾向于坚持使用直接从 Microsoft 提供的框架 因此
  • 谷歌地图:隐藏国家边界

    我相当确定geometry stroke允许在地图上隐藏国家边界的选项 featureType administrative country elementType geometry stroke stylers visibility of
  • 抢占的中断处理程序会发生什么?

    即使在一些写得很好的内核书籍中 我也找不到以下问题的正确答案 他们说 ISR 无法休眠 因为它无法重新调度 ISR 因为它没有与任何进程连接 那么当更高优先级的中断抢占正在执行的中断时会发生什么 中断的 ISR 不会再次重新调度 执行 如果
  • 验证十进制 (18,3) 的正则表达式 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要一个可以验证的正则表达式Decimal 18 3 表示精度为 18 小数位数为 3 它需要通过以下标准 逗号前的最大位数为15 逗号
  • 如何在节点中将图形渲染为图像

    我想在服务器上以图像格式呈现堆叠条形图 预期用途是推送到像 twitter 这样不支持 SVG 的服务 以及可部署到 Heroku 等服务的代码 我已经尝试过 Plotly 他们的节点包已经过时了 而且他们的 API 文档也很差 我还查看了
  • 代码OSS不执行Jupyter笔记本

    在我的 Arch 系统上 我安装了 jupyter notebook 版本 6 4 4 和 Code OSS 版本 1 61 0 带有 Python v2021 9 1246542782 扩展和 Jupyter v2021 9 100 扩展
  • 如何在 Swift 中访问应用程序包中包含的文件?

    我知道有一些与此相关的问题 但它们是在 Objective C 中的 我怎样才能访问 txt使用 Swift 包含在我的应用程序中的文件在实际的 iPhone 上 我希望能够从中读取和写入 Here https github com gho
  • 如何在 Postgresql 命令行中指定要运行 sql 文件的架构

    我像这样针对我的数据库运行脚本 psql d myDataBase a f myInsertFile sql 唯一的问题是我希望能够在此命令中指定运行脚本的模式 我可以调用 set search path my schema 01 但文件应
  • Azure Devops 发布管道 XML 变量替换不起作用

    我的发布管道中有一个非常简单的变量替换 但它不起作用 我有变量connectionStrings config文件如下
  • 是什么导致 sprof 抱怨“ld.so 检测到的不一致”?

    我正在尝试使用 sprof 来分析一些软件 ossim 其中几乎所有代码都在共享库中 我已经生成了一个分析文件 但是当我运行 sprof 时 出现以下错误 gt sprof home eca7215 usr lib libossim so
  • 在 Query 上使用 keepSynced() 而不是在 DatabaseRef 上使用有什么区别吗?

    我目前正在从 Firebase 获取单个 dataSnapshot 如下所示 public Task
  • 将 netcat 与 bash 上的聊天结合起来以实现自动 udp 响应

    我想在 Linux 上结合 chat 和 nc 所以我将创建一个小型 udp 服务器 它响应特定请求并发回答案 事实上 我想将 nc 的标准输出重定向到 聊天 的标准输入 反之亦然 我的第一次尝试是 nc w 3000 u n l p 30
  • 禁用访问日志中的查询字符串

    长话短说 用户密码通过 url 传递纯文本 可怕 是的 但不是我的想法 并且此查询字符串存储在访问日志中 我们显然不希望如此明显 有没有办法在不禁用 CustomLog 的情况下防止查询字符串存储在访问日志中 Your common日志格式
  • 多线程Windows服务的线程库[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 UITextField 增加到一定长度

    我有一个 UITextField 我想 自动 调整其边界大小 以便为字段中添加的字符串腾出空间 但是 我希望它的宽度达到一定程度的最大值 我可以采取的最佳方法是什么 谢谢你的帮助 EDIT 测试视图 h import
  • Haskell —— 是否有元组的 monad 序列函数?

    假设我有一个类型的值Monad m gt m a m a 我想对这对进行 排序 以创建类型的值Monad m gt m a a 它以与 序列 函数相同的方式组合两个值的单子上下文 是否有一些标准功能或标准方法可以做到这一点 这个操作还有意义
  • 每个页面加载的计时器减量都会有所不同

    我的项目有一个计时器 每次减少 1 秒 但是 如果计数器第二次开始工作 它会减少 2 秒 第三次则减少 3 秒 依此类推 我应该怎么做才能始终减少 1 秒 void viewDidAppear BOOL animated count 15
  • 计算大于另一个整数 x 的 k 位集合的最小整数?

    我想精确地计算最小整数k位设置 大于另一个整数x 例如如果x 1001010然后 为了k 2 答案应该是1010000 for k 4 答案应该是1001011并为k 5答案是1001111 我认为需要设置至少与整数中最左边设置的位一样多的
  • JSHint 奇怪的行为

    我认为我应该问关于 jSHint 的新问题 讨论开始了here https stackoverflow com questions 35987052 js strange behavior 我现在可以看到来自 JSHint 的奇怪警告 我只