我在读你不知道JS -范围和闭包的书。
它说,你不应该污染全球范围。foo和a正在污染全球范围。例如:
var a = 2;
function foo() {
var a = 3;
console.log( a ); // 3
}
foo();
console.log( a ); //2对于这个例子,我想出了一幅图片(是学习的一部分)。

为了修复这个(污染),他说将代码包装在一个匿名函数中。
但是,我很难说明这一点。你能帮我做这个吗。说明这一点很重要。
发布于 2016-11-06 16:40:15
我希望这能帮到你。这是您的示例,另外还有一个匿名函数。
var a = 2;
console.log("global (start):", a); //2
(function() {
var a = 42;
console.log("inside anonimous function (start):", a); //42
function foo() {
var a = 3;
console.log("inside foo():", a); //3
}
foo();
console.log("inside anonimous function (end):", a); //42
})()
console.log("global (end):", a); //2
图像并不是最好的,但我希望它能显示出作用域是如何嵌套的。

因此,您可以看到每个作用域都有自己的名为a的变量,而不触及其余的变量。这是因为每个人都使用var a来声明它。如果省略了var部件,那么将使用外部作用域中的变量。
var foo = 1;
console.log("global (start)", foo);
function bar() {
console.log("inside bar(), before modification:", foo);
foo = 7;
console.log("inside bar(), after modification:", foo);
}
bar();
console.log("global (end)", foo);

发布于 2016-11-06 16:06:11
就像@拖延者建议的那样,把红色的'a‘和foo围起来,叫它匿名。
发布于 2016-11-06 16:06:55
你可以让它成为一种生活
(function foo() {
var a = 3;
console.log( a ); // 3
})();
console.log( a )
希望这能有所帮助
https://stackoverflow.com/questions/40451385
复制相似问题