[英]Javascript variable doesn't seem to enter the DOM
<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來讀取警報呢?
您的變量聲明:
var year = "2011";
是一個局部變量,僅在聲明了該變量的函數內部可見。
如果要使其全局可見,以便其他函數可以訪問它,則必須將其聲明為全局變量,並在所有函數之外的作用域的頂層聲明它:
var year;
function setParams() {
year = "2011";
}
function showYear() {
alert("The year is " + year);
}
根據定義,在函數內聲明的變量是局部變量,並且僅在該函數內可用。
然后,最后您可能不太了解DOM是什么。 用於“文檔對象模型”的DOM標准和該術語用於表示網頁中的對象。 您在這里要問的是與DOM分開的javascript全局變量語法。
希望這不會使您感到困惑,但是為了完整起見,全局Javascript變量和DOM似乎聯系在一起的一個地方是,在Web瀏覽器中,“ window”對象上也可以使用全局變量。 因此,在上面的代碼示例中,您將year設置為:
function showYear() {
alert("The year is " + year);
}
或為:
function showYear() {
alert("The year is " + window.year);
}
如果year
是全局變量,則兩者在Web瀏覽器中給出的結果相同。
var year = "2011";
表示年份范圍對於在其中聲明的功能是局部的
在函數外聲明它。 或刪除var關鍵字,這也使其成為全局關鍵字。
您的year-var將需要一個全局范圍,因此您可以在其他函數中訪問它,即您可以在函數之外定義它。 像:
var year;
function setParams() {
year = "2011";
}
function showYear() {
alert("The year is " + year);
}
Year的范圍是setParams函數,在該函數之外無法訪問。
您可以將功能更改為
function setParams() {
year = "2011";
}
這將使全球可以訪問年份變量
雖然不一定是最佳做法
看一下Douglas Crockford的模塊模式,它是管理全局變量和函數的有用方法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.