我最近遇到了这个http://www.w3schools.com/js/js_scope.asp,我在那里学到了“自动全局变量”。以下是您使用它的方式:
// code here can use carName
function myFunction() {
carName = "Volvo";
// code here can use carName
}
然而,它有多高?我担心其他文件可以访问它,如果它是全局的。如果我使用AngularJS,其他控制器可以使用它吗?其他文件可以使用吗?
答案 0 :(得分:0)
在JavaScript中,创建不带var
的变量与将全局对象设置为属性相同(在浏览器中,global
为window
:
nameWithoutVar = 1;
// the above is the same as
window.nameWithoutVar = 1;
这意味着页面浏览器中加载的任何其他脚本都可以访问nameWithoutVar
,与访问location
,document
等相同。
出于这个原因,全局变量被认为是一个非常糟糕的主意,因为所有使用相同的命名空间。如果必须使用全局变量†,请务必记录它,并尝试命名它,以便它不会与任何其他变量冲突。
† 如果你不确定,你可能不需要。