【发布时间】:2020-12-17 16:50:28
【问题描述】:
我想多次运行一个脚本,我不知道它是否是第一次运行-所以我不得不问,如果是,我会声明它:
if (typeof variable == undefined) { let variable = new Set(); }
不幸的是
1.) 一直用let variable; 重新声明会引发错误
2.) 这个变量只存在于“if”范围内
3.) 命令“let”需要一个完整的块,如果,三元或“无括号如果”抛出错误
我可以更改变量的范围吗?就像以前的 var 一样 - 我对此没有任何问题,我只想使用 Set (也是一个很好的讲座,知道它是否可能)
也许一些“如果未声明就声明”命令?
【问题讨论】:
-
单个脚本在顶层运行代码两次,而且不知道它之前是否运行过,这很奇怪。如果必须这样做,请分配给全局对象,而不是使用
let(或var) -
我同意@CertainPerformance - 这有点代码味道,但如果有必要分配给全局对象可能会更好。如果由于某种原因 that 是不可能的或不可取的,您也可以只声明
if块的letoutside 并仅在if块中分配.哪个,既然我输入了那个,你是如何在声明之前在if条件中询问typeof的variable的?这似乎应该引发错误......我认为您的代码中可能存在更大的结构问题。你不应该需要var;let应该足够了。 -
如何全局申报?对我来说还好。当然,如果我使用单个
let variable;启动脚本运行,它将正常工作。如果那是你想说的话。if typeof也可以使用任何变量为我工作,现在在控制台中自己尝试一下。这只是个人的 10 行代码,没什么大不了的(收集链接并记住它)。
标签: typescript declare let redeclaration