全局变量和局部变量的安全性?

时间:2017-05-10 08:38:39

标签: javascript jquery

仅在JavaScript代码中使用局部变量更安全吗?

我理解在...中声明的变量 $(document).ready(function () {code here...} 块是本地的。这意味着其他脚本无法访问或更改这些内容吗?

此外,如果变量被声明为全局但在本地分配了一个值,那么该值是否全局可见?

var a; function myFunction() { var a = 4; }

页面上的其他脚本是否能够看到a的值设置为4?

1 个答案:

答案 0 :(得分:1)

不,函数中的变量a在函数范围之外是不可见的。如果您尝试在代码中的其他位置访问变量a,它将显示undefined,因为您刚刚声明了变量,但没有为其分配任何值。

让我们扩展你的榜样:

var a;
function myFunction() {
    var a = 4;
}
function anotherFunction() {
    console.log(a);
}
anotherFunction();
> undefined

当我们调用anotherFunction()时,它访问了全局声明的a,它没有从a看到局部变量myFunction。它们完全不同。

最好不要以这种方式使用局部变量。如果您需要它们,最好将它们分组到一个对象中,该对象具有命名空间的作用:

var allMyLocalVariables = {
    a: 'a',
    b: 'b'
}

现在你可以在任何地方访问它们:

console.log(allMyLocalVariables.a);

如果为对象/命名空间选择合理且有意义的名称,它们与其他变量冲突的可能性非常低。