gpt4 book ai didi

javascript - 具有多个嵌套 IIFE 的函数作用域

转载 作者:行者123 更新时间:2023-12-03 01:22:51 25 4
gpt4 key购买 nike

我在执行此 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 的值。另外,我不明白为什么嵌套函数没有被执行,因为它们应该立即调用。

最佳答案

试试这个:

var scopeExercise = function () {
var a = 1, b = 2, c = 3;
(function firstFunction() {
b = 5;
c = 6;
console.log('firstFunction()');
(function secondFunction() {
b = 8;
console.log('secondFunction()');
(function thirdFunction() {
a = 7;
c = 8;
console.log('thirdFunction()');

(function fourthFunction() {
a = 1,
c = 6;
console.log('fourthFunction()');
})();
})();
})();
})();
result = "a: " + a + ", b: " + b + ", c: " + c;
return result;
}
console.log(scopeExercise());

添加了打印,您将看到所有函数都已执行

关于javascript - 具有多个嵌套 IIFE 的函数作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51689197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com