gpt4 book ai didi

javascript - 出于什么目的 'no-use-before-define' 警告已声明的函数?

转载 作者:行者123 更新时间:2023-11-30 13:59:50 25 4
gpt4 key购买 nike

我对来自规则 no-use-before-defineeslint 警告感到困惑:

这个规则对于避免由函数表达式引起的错误非常有意义,例如

// Case 1:
// Incorrect code; eslint warns me for good reason:

runMe() // Error: Cannot access 'runMe' before initialization

const runMe = () => { alert('expression, not hoisted') }

但是,在声明函数的时候,在定义之前调用函数是完全没问题的(感谢JS提升机制)

// Case 2:
// Correct code; for what reason does eslint warns me about this?

runMe() // Works!

function runMe() { alert('definition, hoisted') }

为什么 eslint 以相同的方式处理这两种情况(即它是否使脚本运行得更快/禁用提升/有其他影响)?

第二个问题:我能否将 eslint 配置为只警告我第一种情况,但将声明函数样式视为有效?

最佳答案

引用rule documentation page (强调我的):

In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it’s possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

似乎没有办法仅在未悬挂时发出警告。你可以创建一个 custom plugin .

关于javascript - 出于什么目的 'no-use-before-define' 警告已声明的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56499552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com