Javascript 全局变量与局部变量的安全性?
在JavaScript代码中只使用局部变量是否更安全 正如我所理解的,在Javascript 全局变量与局部变量的安全性?,javascript,jquery,Javascript,Jquery,在JavaScript代码中只使用局部变量是否更安全 正如我所理解的,在 $(document).ready(函数(){code here…} 块是本地的。这意味着其他脚本无法访问或更改这些块 另外,如果一个变量声明为全局变量,但在本地分配了一个值,那么该值是否全局可见 var-a; 函数myFunction(){ var a=4; } 页面上的其他脚本是否可以看到a的值被设置为4?否,函数中的变量a在函数范围之外不可见。如果您尝试访问代码中其他地方的变量a,它将显示未定义的,因为您刚刚声明了变
$(document).ready(函数(){code here…}
块是本地的。这意味着其他脚本无法访问或更改这些块
另外,如果一个变量声明为全局变量,但在本地分配了一个值,那么该值是否全局可见
var-a;
函数myFunction(){
var a=4;
}
页面上的其他脚本是否可以看到
a
的值被设置为4?否,函数中的变量a
在函数范围之外不可见。如果您尝试访问代码中其他地方的变量a
,它将显示未定义的
,因为您刚刚声明了变量可以,但未为其分配任何值
让我们扩展您的示例:
var a;
function myFunction() {
var a = 4;
}
function anotherFunction() {
console.log(a);
}
anotherFunction();
> undefined
当我们调用anotherFunction()
时,它访问了全局声明的a
,它没有从myFunction
中看到局部变量a
。它们完全不同
最好不要以这种方式使用局部变量。如果需要它们,最好将它们分组到一个对象中,该对象将具有命名空间的角色:
var allMyLocalVariables = {
a: 'a',
b: 'b'
}
现在,您可以在任何地方访问它们,如下所示:
console.log(allMyLocalVariables.a);
如果您为对象/命名空间选择了一个合理且有意义的全名,则它们与其他变量冲突的概率非常低。注意:如果您在函数内部使用
var
重新声明a
,这将创建第二个局部变量,从而隐藏对第一个变量的访问de>a=4,它会将值设置为声明的第一个值。我建议您也阅读有关javascript变量的内容。是的,是的,否,否。看一看,这与此不符。当您更改全局变量时,其全局值也会更改,并且是可访问的。您不更改全局变量。myF中的变量a
function
与全局变量a
不同。如果您这样做:a=4
,没有关键字var
,那将是另一回事。如果您在函数上使用var,那么您没有使用全局变量,您只是定义了一个局部变量,而没有使用全局变量……正是这样我在解释,它们在不同的范围内是完全不同的变量。