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

首頁 > 編程 > JavaScript > 正文

JavaSript中變量的作用域閉包的深入理解

2019-11-20 15:32:31
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
/*
* 1.js中的變量都是公用的.
2.js中沒有靜態變量
3.閉包:函數內部可以調用函數外部的變量;反之,則不行
*/

var r=10;
function test1(){
var r2="abc";
//alert(r)
}
//alert(r2);//不能訪問的函數內部的r2
test1();
//嵌套的函數中也ok啦
function test2(num1){
function test3(num2,num3){
return num2+num3+num1;
}
return test3(10,20)
}
//alert(test2(30));
//---------循環中的閉包------------------------
function testfun(){
var r=1;
var arr=[];
for(var x=0;x<3;x++){
r++;
arr[x]=function(){
return r;
}
}
return arr;
}
alert("testfun:"+testfun());
var arr2=testfun();
alert("arr:"+arr2[0]);
alert("arr:"+arr2[1]());
alert("arr:"+arr2[2]());
//==========以上三個彈出框的結果都是4==========
/*分析原因:
理解一下在JavaScript中函數是什么?
函數就是一段可執行的代碼塊,函數也是可以用一個變量表示,比如函數的第二種定義方式
var add=new Function("a","return a+10");底層的本質就是這個函數名指向
了這一段為變量而創建的可執行的代碼。
* 首先當testfun函數執行完畢以后,arr[0],arr[1],arr[]中都是存儲了相同的
可執行代碼塊function(){
return r
}也就是說上面三個是函數變量而已,要執行它們只需要在變量名稱后面加()就ok了
而且這個時候r的值4
當執行arr[0]()相當于執行了這個代碼塊中的代碼。
所以最終的結果return r,當然返回4了。
*/

</script>
</head>
<body>

</body>
</html>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盘山县| 乐都县| 乌什县| 全南县| 临猗县| 兴山县| 丰台区| 丰镇市| 抚松县| 辽宁省| 广元市| 孝感市| 滕州市| 古田县| 定襄县| 新乡县| 正镶白旗| 柯坪县| 河北省| 吉首市| 泊头市| 镇平县| 大名县| 扎鲁特旗| 永丰县| 上饶县| 安福县| 揭东县| 酉阳| 炉霍县| 荃湾区| 河北省| 越西县| 凌源市| 犍为县| 木兰县| 景德镇市| 达拉特旗| 竹溪县| 海丰县| 岳池县|