为什么 JSLint 抱怨:“someFunction() 在定义之前就被使用了”?

2023-12-23

搜索 JSLint 错误“在定义之前使用”我发现了这些:

  • JSLint:在定义错误之前使用函数 https://stackoverflow.com/questions/806163/jslint-using-a-function-before-its-defined-error
  • 函数在定义之前就被使用 - JSLint https://stackoverflow.com/questions/12963161/function-was-used-before-it-was-defined-jslint
  • JSLint:在定义之前使用 https://stackoverflow.com/questions/9621162/jslint-was-used-before-it-was-defined
  • jsLint 错误:“somefunction() 在定义之前被使用” https://stackoverflow.com/questions/7425147/jslint-error-somefunction-was-used-before-it-was-defined
  • jslint - 我们应该容忍错误的定义吗? https://stackoverflow.com/questions/6744692/jslint-should-we-tolerate-misordered-definitions

Problem

这些答案都没有WHY显示错误。

阐述

根据ECMA-262 规范 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf函数在执行开始之前进行评估,因此所有使用function关键字可用于所有独立于声明它们的位置的代码(假设它们在该范围内可访问)。

这也称为hoisting.

Douglas Crockford 似乎认为最好在使用每个函数的代码之前声明它,而不管它的函数是什么hoisting effect.

根据StackOverflow 新手 https://stackoverflow.com/users/253976/stackoverflownewbie in his question https://stackoverflow.com/questions/7425147/jslint-error-somefunction-was-used-before-it-was-defined,这会引发一些代码组织问题。更不用说有些人,比如我,更喜欢在 main/init 代码下声明他们的函数。

对于这些问题,有一些方法可以避免或修复错误,例如使用函数表达式与函数声明。但他们都没有告诉我错误的原因。甚至不克罗克福德的网站 http://javascript.crockford.com/code.html.

问题)

Why在声明之前调用函数是否错误,即使它是使用function关键词?

在 JSLint 上下文中使用函数表达式而不是函数声明是否更好?如果首选其中之一,为什么?

Note

Not寻找类似的答案:

  • 克罗克福德是个暴君
  • 只是克罗克福德的意见

谢谢 :*


这不是一个错误(毕竟你的代码确实有效)。与此相关的问题是,在使用函数后声明函数会降低代码的可读性。阅读您的代码的人可能会认为该函数是在外部作用域中的某个位置声明的。如果您覆盖流行的函数/构造函数,例如Date

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

为什么 JSLint 抱怨:“someFunction() 在定义之前就被使用了”? 的相关文章

  • 带有闭包的 JavaScript 性能

    var name function n var digits one two three four return digits n var namenew function digits one two three four return
  • 如何将事件对象传递给 JavaScript 中的函数?

  • asp.net 将值从 JS/jquery 传递到 C# 背后的代码

    我已经尝试了 所有 可能的方法 将 screen width vlaue 从 aspx 页面上的 JS 脚本发送到后面代码中的 c 虽然我可以看到 screen width 被正确分配 但它永远不会分配给我的隐藏字段价值
  • 将 FireBug 用于带有框架的网站

    我下载了 Firebug 并尝试使用它来调试使用框架的站点的 JS 我的理解是 当我进入 Firebug 中的 脚本 选项卡时 我会看到 aspx 上的 JS 函数以及包含的任何文件中的 JS 并且我将能够设置断点 然而 我在这个网站上看到
  • Facebook 自定义故事与大图像 - 使用 Javascript 打开图

    我正在尝试创建一个自定义故事 每次有人尝试发布它时都会有一个新图像 现在我创建了一个对象 以及将两者结合起来的动作和故事 我想要实现的是一个看起来像这样的故事https fbcdn dragon a akamaihd net hphotos
  • 如何翻转 Twitter Bootstrap 的工具提示

    我正在使用 Twitter 的 Bootstrap 来实现工具提示 目前 工具提示显示在链接上方 我希望工具提示出现在链接下方 我该怎么做呢 我正在触发工具提示 它明确指出 底部 但它不想为我工作 tooltip tooltip place
  • 未捕获的类型错误:无法读取未定义的属性“prop”

    我有 6 个输入复选框 如果选中的复选框超过 3 个 则最后一个复选框将被取消选中 为了更好地理解 请参阅我之前的question https stackoverflow com questions 35195235 if checkbox
  • 是否可以进行条件解构或有后备?

    我有一个具有许多深层嵌套属性的对象 我希望能够访问 MY KEY 上的属性 如下 但如果该属性不存在 则获取 MY OTHER KEY 我怎样才能做到这一点 const X Y MY KEY Values segments segment
  • 将事件添加到 Google Maps API InfoWindow 内的元素

    我想在 Google Maps API v3 InfoWindow 内放置一个带有输入字段和提交按钮的表单 提交后 我想调用一个函数 该函数使用输入字段中输入的地址启动方向服务 这是我的代码 我目前只测试方向事件是否被触发 我已经编写了完整
  • 三.js环境光意想不到的效果

    在下面的代码中 我渲染了一些立方体并使用点光源和环境光照亮它们 然而 当设置为 0xffffff 时 AmbientLight 会将侧面的颜色更改为白色 无论其指定的颜色如何 奇怪的是 点光源按预期工作 我怎样才能使环境光表现得像点光 因为
  • Chrome JavaScript 日期构造函数获取 1884 年之前的日期似乎是错误的

    如果我将 1 1 1753 午夜 的 unix 毫秒时间戳值 6847786800000 传递给 Chrome 中的 JavaScript Date 构造函数 则 Chrome 给出的日期看起来非常奇怪 当我使用带有七个参数的 Date 构
  • 从 html5

    我正在寻找一种方法来根据用户代理字符串将控件属性添加到视频标签 我不希望在 iPad 和 Android 之外的任何浏览器或设备上出现控件属性 所以我认为用户代理是最好的识别方法 因为 ipad 和 android 一词出现在各自的 UA
  • IE8 中空 div 层的 z-index 问题

    我在 IE8 中遇到 z index 问题 其他尚未测试 以下 JS 创建一些 html css document write img src border 0 document write div style background col
  • 在移动网站中处理 iPhone 事件(如向左滑动)

    iPhone 浏览器是否有可以使用 Javascript 挂钩的特殊事件 例如 如果用户向左滑动 我想执行某个操作 如果有类似的活动 很高兴看到所有这些活动的参考 理想情况下 有一天所有触摸屏移动浏览器都会有一个标准 您可以访问多点触控事件
  • 在 Chrome 中加载analytics.js时出现307重定向

    我正在构建一个网络应用程序并使用 Google Analytics analytics js 进行分析 我最近注意到 Chrome 中的分析功能无法正常工作 我使用单独模块中的标准代码片段加载分析并通过 requirejs 包含 我已验证该
  • 我们如何使用 thymeleaf 绑定对象列表的列表

    我有一个表单 用户可以在其中添加任意数量的内容表对象这也可以包含他想要的列对象 就像在 SQL 中构建表一样 我尝试了下面的代码 但没有任何效果 并且当我尝试绑定两个列表时 表单不再出现 控制器 ModelAttribute page pu
  • JavaScript 中的最短路径

    几周来我一直在寻找一种在 JavaScript 中计算最短路径的方法 我一直在玩书数据结构和算法作者 格罗纳 Groner 名字恰如其分 https github com loiane javascript datastructs algo
  • 角度 4 单击按钮功能未触发

    我正在尝试检查文本输入是否为空或不在角度 4 中 我没有为此使用表单 这只是一个输入字段 当我在下面的按钮中执行 addLocaton 函数时 需要进行检查 我的输入字段
  • 如何调试 Node.js 应用程序?

    如何调试 Node js 服务器应用程序 现在我主要使用警报调试打印语句如下 sys puts sys inspect someVariable 一定有更好的调试方法 我知道谷歌浏览器 http en wikipedia org wiki
  • 错误:模块“html”不提供视图引擎(Express)

    我正在尝试设置一个简单的路由应用程序 但在渲染页面时不断遇到错误 Error Module html does not provide a view engine 奇怪的是我已经在 app js 文件中指定了视图引擎 但仍然收到错误 app

随机推荐