gpt4 book ai didi

javascript - 变量范围说明

转载 作者:行者123 更新时间:2023-11-29 22:22:50 24 4
gpt4 key购买 nike

我有一段 javascript 代码,是在“JavaScript Ninja 的 secret ”(John Resig 的书)中找到的。我无法理解变量的行为。以下是代码(相对于原代码进行了简化):

(function() {
var results;
this.assert = function assert() {
var li = document.createElement("li");
results.appendChild(li);
return li;
};
this.test = function test(name, fn) {
results = document.getElementById("results");
results = assert().appendChild(document.createElement("ul"));
fn();
};
})();
window.onload = function() {
test("A test.", function() {
assert();
assert();
});
};

我的问题是 results 变量。当您进入“测试”函数时,结果变量将首先取值"ul#results",然后取值"ul",作为< strong>appendChild 函数。但是当你输入"fn()"函数时,"results"的值仍然是"ul#results"。为什么?我有些难以理解这个变量的范围。

有人可以帮助我理解这个主题吗?

非常感谢。

最佳答案

变量是在匿名函数的范围内创建的。 asserttest 访问相同 results 变量。

关于javascript - 变量范围说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11402265/

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