Javascript 全局变量与局部变量的安全性?

Javascript 全局变量与局部变量的安全性?,javascript,jquery,Javascript,Jquery,在JavaScript代码中只使用局部变量是否更安全 正如我所理解的,在 $(document).ready(函数(){code here…} 块是本地的。这意味着其他脚本无法访问或更改这些块 另外,如果一个变量声明为全局变量,但在本地分配了一个值,那么该值是否全局可见 var-a; 函数myFunction(){ var a=4; } 页面上的其他脚本是否可以看到a的值被设置为4?否,函数中的变量a在函数范围之外不可见。如果您尝试访问代码中其他地方的变量a,它将显示未定义的,因为您刚刚声明了变

在JavaScript代码中只使用局部变量是否更安全

正如我所理解的,在
$(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,那么您没有使用全局变量,您只是定义了一个局部变量,而没有使用全局变量……正是这样我在解释,它们在不同的范围内是完全不同的变量。