更改 "let" 声明的范围

Changing the scope of "let" declaration

我想多次 运行 一个脚本,我不知道它是否是第一个 运行 - 所以我不得不问,如果是,我会声明它:

if (typeof variable == undefined) { let variable = new Set(); }

很遗憾 1.) 一直用 let variable; 重新声明会抛出错误 2.) 此变量仅存在于“if”范围内 3.) 命令“let”需要一个完整的块,如果,三元或“braclet-less if”抛出错误

我可以改变变量的范围吗?就像古老的 var - 我对此没有问题,我只想使用 Set (还有一个很好的讲座来了解它是否可能) 也许一些“如果未声明则声明”命令?

我不确定你到底想做什么。 代码运行在浏览器中吗?

如果是这样,您可以尝试省略 var/let/const 个关键字:

if (typeof variable == undefined)  { variable = new Set(); }

这将在 window 对象中创建一个变量(如果它不存在)

[编辑]: 当然,您可以通过显式说明全局变量来自的对象来使其“更好”。

对于浏览器,此代码将变为:

if (typeof window.variable == undefined)  { window.variable = new Set(); }

如果您在团队中工作,此解决方案更好,但如果您刚刚起步或尝试学习,两者都可以。

您可以简单地先声明变量然后对其进行操作。

let variable; // declare variable 

if (typeof variable === 'undefined') { variable = new Set(); }

它不应该抛出您提到的任何错误。