【发布时间】:2018-08-04 20:06:31
【问题描述】:
我在执行这个 JavaScript 练习时遇到了问题。我得到了一个函数,它定义了三个不同的变量/值对,并且在该函数中是多个嵌套的 IIFE,它们改变了这些相同的值。练习的目标是将变量的值更改为某个值。所以这是我看到的代码:
var scopeExercise = function() {
var a = 1,
b = 2,
c = 3;
result = "a: " + a + ", b: " + b + ", c: " + c;
(function firstFunction() {
var b = 5,
c = 6;
(function secondFunction() {
var b = 8;
(function thirdFunction() {
var a = 7,
c = 9;
(function fourthFunction() {
var a = 1,
c = 8;
})();
})();
})();
})();
return result;
};
console.log(scopeExercise());
他们想要 var a = 1、b = 8 和 c = 6。我仍然无法理解函数范围,因为我尝试注释掉 thirdFunction 和 FourthFunction,以免它们被调用在外部函数之前,它仍然不会改变 var a、b 和 c 的值。另外,我不明白为什么嵌套函数没有被执行,因为它们应该立即被调用。
【问题讨论】:
-
你必须将函数 above 移动到
result否则这是不可能的。如果您希望更改scopeExercise范围变量,请在嵌套函数中保留vars,否则您将创建一个新绑定。
标签: javascript scope iife