var i = 0; displayCD(i); function displayCD(i) { var xmlht-6ren">
gpt4 book ai didi

Javascript 函数使用另一个函数中的 var

转载 作者:行者123 更新时间:2023-12-03 05:08:33 25 4
gpt4 key购买 nike

我发现了一个示例 HTML/Javascript 代码

<!DOCTYPE html>
<html>
<body>

<div id='showCD'></div><br>
<input type="button" onclick="previous()" value="<<">
<input type="button" onclick="next()" value=">>">

<script>
var i = 0;
displayCD(i);

function displayCD(i) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this, i);
}
};
xmlhttp.open("GET", "cd_catalog.xml", true);
xmlhttp.send();
}

function myFunction(xml, i) {
var xmlDoc = xml.responseXML;
x = xmlDoc.getElementsByTagName("CD");
document.getElementById("showCD").innerHTML =
"Artist: " +
x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue +
"<br>Title: " +
x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue +
"<br>Year: " +
x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue;
}

function next() {
if (i < x.length-1) { // why does x here not raise an error? it came from nowhere.
i++;
displayCD(i);
}
}

</script>

</body>
</html>

我唯一的问题是,当在 myFunction(xml, i) 中定义时,为什么可以在 function next(){} 中使用 x ){} ?

当页面首次加载时,将执行displayCD(0)。所以我能想到的唯一理论是 x 保留在内存中,因为它是一个全局变量(它不使用 var。)

如有错误,请指正。

谢谢

最佳答案

当函数“myFunction”执行时,没有var的变量将被附加到window对象。在控制台中,您可以通过尝试 window.x 来查看它,它会显示一些输出。

然后,您可以从任何函数或函数外部访问 x。

如果您在执行“myFunction”之前尝试访问x,则会显示错误。

关于Javascript 函数使用另一个函数中的 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923496/

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