|
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
var i = 1;
// 彈出內(nèi)容為 1 true 的提示框
alert(window.i + ' ' + (window.i == i));
</script>
分析:
在全局定義的變量其實(shí)就是 window 對(duì)象的屬性。
上面的例子可以看到,我們定義全局變量的同時(shí),window 對(duì)象會(huì)產(chǎn)生一個(gè)相應(yīng)的屬性,如何讓我們的代碼避免產(chǎn)生這個(gè)屬性呢,看下面的例子。
實(shí)例二:
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
var document = 1;
window.onload = function(){
alert(document);
}
// 彈出內(nèi)容為 1 的提示框
alert(window.document);
</script>
這種情況是我們不想看到的,我們可以這么做:
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
function test(){
var document = 1;
window.onload = function(){
alert(document);
}
}
test();
// 彈出內(nèi)容為 [object] 的提示框
alert(window.document);
</script>
為了使代碼更加簡(jiǎn)潔,我們可以這樣:
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
(function(){
var document = 1;
window.onload = function(){
alert(document);
}
})();
// 彈出內(nèi)容為 [object] 的提示框
alert(window.document);
</script>
分析:
這種運(yùn)行匿名方法的形式,在 JavaScript 的主流框架中經(jīng)常見到,這樣做可以避免產(chǎn)生不必要的 window 對(duì)象的屬性,減少?zèng)_突的可能。
實(shí)例三:
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
(function(){
if('1' == '1'){
var i = 1;
}
// 彈出內(nèi)容為 1 的提示框
alert(i);
})();
</script>
分析:
變量的作用域是整個(gè)函數(shù),不是{}塊。
實(shí)例四:
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
var i = 1;
// 彈出內(nèi)容為 1 的提示框
alert(i);
var i = 2;
// 彈出內(nèi)容為 2 的提示框
alert(i);
</script>
分析:
一個(gè)變量可以被重新定義,這個(gè)看起來有些怪,因?yàn)樵诤芏嗥渌Z言里這樣是行不通的。
實(shí)例五:
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
function test(){
i = 1;
}
test();
// 彈出內(nèi)容為 1 的提示框
alert(window.i);
</script>
分析:
如果對(duì)一個(gè)沒有初始化的變量進(jìn)行賦值操作,那么這個(gè)變量會(huì)作為全局變量。
JavaScript技術(shù):JavaScript 變量作用域及閉包第1/2頁,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。