在catch子句中声明e变量的正确方法是啥[关闭]
Posted
技术标签:
【中文标题】在catch子句中声明e变量的正确方法是啥[关闭]【英文标题】:What is the correct way to declare the e variable in a catch clause [closed]在catch子句中声明e变量的正确方法是什么[关闭] 【发布时间】:2021-06-28 20:21:41 【问题描述】:当我没有声明 catch
用来存储错误的变量时,JSHint 给我以下错误
function foo ()
try
let a = 0/0;
catch (e)
console.log (e);
error| 'e' is not defined
当我定义它时,我会得到这个错误
function foo ()
let e;
try
let a = 0/0;
catch (e)
console.log (e);
error| Value of 'e' may be overwritten in IE8 and earlier
是否有声明e
的最佳实践方式?如果没有,我该如何抑制这个 JSHint 错误?
【问题讨论】:
我将您的代码粘贴到 jshint.com,它没有抱怨e
。
@Barmar 这是我的错,在catch
之外声明了一个e
,但我没有注意到它。我将把它留给 *** 大神来决定是否关闭这个问题
如果这不是您有疑问的代码,那么您应该删除它。
删除问题,因为它不是真正的问题,只是一个错字。
@Barmar,您无法删除此问题,因为其他人已投入时间和精力来回答它。如需更多信息,请访问帮助中心。
【参考方案1】:
MDN try...catch 文档中描述的exception_var
不需要初始化。此变量的处理方式类似于函数的参数:catch(e)
中的定义创建了引用。
JSHint 是正确的,因为在 try/catch 语句之外初始化 exception_var
(许多开发人员将其用作 e
/err
)可能会导致不需要的行为。
【讨论】:
他在哪里初始化第一个sn-p中try/catch之外的变量? 抱歉,这是为了解决底部的示例。这个问题可能需要进一步澄清:为 JSHint 启用了哪些选项,使用的 JSHint 版本等。 我会接受这是一个部分答案(请参阅我上面关于导致此问题的原始错误的评论)以上是关于在catch子句中声明e变量的正确方法是啥[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
处理在多个 for 循环中声明的变量的最惯用方法是啥? [关闭]
在 C++ 中声明实例变量而不构造它们的好方法是啥? [关闭]