带括号的封装功能如何保护全局变量的局部变量?

时间:2016-06-21 11:47:43

标签: javascript

我是一名JavaScript初学者,我很难理解这个具体问题。我想我可以理解为什么函数用括号封装,例如,在一个可以立即调用的表达式中转换匿名函数声明。但我仍然不明白为什么在所有教程中都提到它们有助于保护本地/内部变量不受全局范围变量的影响。

例如,

var greet = "ola";
var hey = function() {
    greet = "Hi!";
    console.log(greet);

};
console.log(greet); //result: Ola
hey(); //Result: Hi!

全局范围greet保留其值ola,函数的本地greet仍为Hi!

如果函数被封装,则全局范围变量采用本地值的值:

 var greet = "ola";

(function hey() {
    greet = "Hi!"
    console.log(greet); //result: Hi!
}());

console.log(greet); //result: Hi!

我做错了吗? 根据这个例子,全局范围内的变量不是需要保护来封装函数的变量吗?

0 个答案:

没有答案