国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript 變量作用域及閉包第1/2頁

2019-11-21 01:12:42
字體:
來源:轉載
供稿:網友
實例一:
復制代碼 代碼如下:

<script type="text/javascript">
var i = 1;
// 彈出內容為 1 true 的提示框
alert(window.i + ' ' + (window.i == i));
</script>

分析:
在全局定義的變量其實就是 window 對象的屬性。
上面的例子可以看到,我們定義全局變量的同時,window 對象會產生一個相應的屬性,如何讓我們的代碼避免產生這個屬性呢,看下面的例子。
實例二:
復制代碼 代碼如下:

<script type="text/javascript">
var document = 1;
window.onload = function(){
alert(document);
}
// 彈出內容為 1 的提示框
alert(window.document);
</script>

這種情況是我們不想看到的,我們可以這么做:
復制代碼 代碼如下:

<script type="text/javascript">
function test(){
var document = 1;
window.onload = function(){
alert(document);
}
}
test();
// 彈出內容為 [object] 的提示框
alert(window.document);
</script>

為了使代碼更加簡潔,我們可以這樣:
復制代碼 代碼如下:

<script type="text/javascript">
(function(){
var document = 1;
window.onload = function(){
alert(document);
}
})();
// 彈出內容為 [object] 的提示框
alert(window.document);
</script>

分析:
這種運行匿名方法的形式,在 JavaScript 的主流框架中經常見到,這樣做可以避免產生不必要的 window 對象的屬性,減少沖突的可能。
實例三:
復制代碼 代碼如下:

<script type="text/javascript">
(function(){
if('1' == '1'){
var i = 1;
}
// 彈出內容為 1 的提示框
alert(i);
})();
</script>

分析:
變量的作用域是整個函數,不是{}塊。
實例四:
復制代碼 代碼如下:

<script type="text/javascript">
var i = 1;
// 彈出內容為 1 的提示框
alert(i);
var i = 2;
// 彈出內容為 2 的提示框
alert(i);
</script>

分析:
一個變量可以被重新定義,這個看起來有些怪,因為在很多其他語言里這樣是行不通的。
實例五:
復制代碼 代碼如下:

<script type="text/javascript">
function test(){
i = 1;
}
test();
// 彈出內容為 1 的提示框
alert(window.i);
</script>

分析:
如果對一個沒有初始化的變量進行賦值操作,那么這個變量會作為全局變量。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 介休市| 常宁市| 柳江县| 隆昌县| 博罗县| 新干县| 霸州市| 潮安县| 丽江市| 岐山县| 水富县| 左权县| 开封县| 阜南县| 珲春市| 潜山县| 宜兰县| 桃源县| 中西区| 登封市| 大方县| 板桥市| 图木舒克市| 屯昌县| 鲜城| 鄂伦春自治旗| 射阳县| 祁阳县| 舞钢市| 秭归县| 乡宁县| 唐山市| 大连市| 名山县| 新昌县| 无为县| 朝阳市| 如皋市| 宁化县| 龙江县| 宁安市|