我有两个带有相同名称的变量的javascript文件,如何定义使用哪一个?
答案 0 :(得分:2)
在Javascript中,您实际上可以使用不同的目标制作2个变量,并且在同一个scope
中具有相同的名称。
基本上,有两种类型的范围:global
和local
。全局范围是您在不同文件中创建具有相同名称的2个变量所面临的问题。
曾经,这是一个常见问题,开发人员同意尝试制作具有不同范围的文件,并且只有在必要且不可避免的情况下才使用全局范围。
因此,创建新作用域(本地)的最常用方法是在函数中关闭代码。 javascript中的函数创建了一个新的范围,这个范围是全局无法访问的,但您仍然可以从本地范围到达全局范围。
此外,还有两种方法可以保持代码模块化(1个文件= 1个模块):使用AMD或CommonJS模块。
有关范围here的更多信息。
答案 1 :(得分:1)
想象一下以下场景:
<html>...
<script src="file1.js">var x = "pizza";</script>
<script src="file2.js">var x = "cheese";</script>
<script src="file3.js">var x = "chocolate";</script>
您的共享变量将始终被最新值覆盖,在本例中为#34; chocolate&#34;。
如果要拆分它们,可以使用前缀或考虑更改名称,因为一旦将它们加载到主文件中,它们就在同一名称空间中。
console.log(x); // chocolate will be printed since it is the last value it was (re)defined as.
</html>
如果你想让它工作,最简单的方法就是改变变量&#39;名。
<script src="file1.js">var x = "pizza";</script>
<script src="file2.js">var y = "cheese";</script>
<script src="file3.js">var z = "chocolate";</script>
console.log(x); //pizza
console.log(y); //cheese
console.log(z); //chocolate