<head>
<script>
function setParams() {
var year = "2011";
}
function showYear() {
alert("The year is " + year);
}
</script>
</head>
<body>
<input type="submit" onclick="setParams();" value="Set" />
<input type="submit" onclick="showYear();" value="Year" />
</body>
那么为什么一年不进入dom警报阅读?
答案 0 :(得分:3)
您的变量声明:
var year = "2011";
是一个局部变量,只在您声明它的函数内可见。
如果你想让它全局可见,以便其他函数可以访问它,那么你必须将它声明为一个全局变量,你可以在任何函数之外的范围顶层声明它:
var year;
function setParams() {
year = "2011";
}
function showYear() {
alert("The year is " + year);
}
在函数中声明的变量,根据定义,是一个局部变量,只能在该函数中使用。
然后,最后你可能不太了解DOM是什么。 “文档对象模型”的DOM标准和该术语用于表示网页中的对象。你在这里问的是javascript全局变量语法,它与DOM分开。
希望这不会让您感到困惑,但为了完整答案,全局Javascript变量和DOM可能看起来连接的地方是,在Web浏览器中,全局变量也可用于“窗口“对象。因此,在上面的代码示例中,您可以访问year:
function showYear() {
alert("The year is " + year);
}
或作为:
function showYear() {
alert("The year is " + window.year);
}
如果year
是全局变量,则两者都会在Web浏览器中显示相同的结果。
答案 1 :(得分:2)
var year = "2011";
表示年份范围是
中声明的函数的本地范围在函数之外声明它。或者删除var关键字,这也使其成为全局关键字。
答案 2 :(得分:2)
您的year-var需要一个全局范围,因此您可以在其他功能中访问它,即您可以在函数之外定义它。就像:
var year;
function setParams() {
year = "2011";
}
function showYear() {
alert("The year is " + year);
}
答案 3 :(得分:1)
Year的范围限定为函数setParams,并且不能在该函数之外访问。
您可以将功能更改为
function setParams() {
year = "2011";
}
可以全局访问年变量
不一定是最佳做法
看看Douglas Crockford的模块模式,找出管理全局变量和函数的有用方法: