是否有可能改变初始相等范围的变量的范围?



我想知道我是否可以使变量的范围超出模块脚本标签,或者我是否可以以某种方式导出它并导入另一个脚本标签。

我当前的代码是这样的:

<script>
var variable1 = 'first variable :)';
var variable2 = 'second variable :)';
</script>
<script>
// i want to be able to access variable1 here, but not variable2
</script>

这样的事情可能吗?

我已经尝试了var,let,constwindow.,但它们没有区别。我也试图使第一个脚本模块,但后来我无法访问variable1,(我认为)没有办法使用导入/导出。

指出:如果没有其他的选择,我只是想把脚本分离到单独的文件中。

由于variable1variable2是在同一作用域(在顶层)中定义的,因此没有办法只访问一个而不访问其他地方-除非您将第一个脚本标记更改为类似

的内容
<script>
var variable1 = 'first variable :)';
(() => {
var variable2 = 'second variable :)';
// do stuff with variable2
})();
// variable2 cannot be seen outside
</script>

如果没有其他选项,我只想将脚本分离到单独的文件中

这是一个非常好的选项,如果你正在制作一些相当专业的东西,并且要编写的代码不是琐碎的,你应该考虑这个选项。我强烈推荐它,它使编写和维护代码的过程变得更加容易。是的,这确实需要一些时间来理解和习惯,但在我看来,这是值得的。

您也可以使用模块脚本并使用window对象存储变量:

<script type="module">
var variable1 = 'first variable :)';
// not accessible by others scripts

window.variable2 = 'second variable :)';
// accessible by others scripts
</script>
<script>
console.log(window.variable2)
setTimeout(() => console.log(variable2), 10)
</script>

最新更新