我是一名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!
我做错了吗? 根据这个例子,全局范围内的变量不是需要保护来封装函数的变量吗?