標籤:switch div win 實值型別 array 形參 his 控制 記憶體
1、var
眾所周知var用來定義變數 如 undefined,number,string,bool,array,function,object,null。
但有時候為了省事,就會出現一些記憶體泄露的情況:
function fun(){
var a=b=1;//為了省事直接賦值
}
fun();
console.log(a);//undefined;
console.log(b);//1 此時b成了全域變數
function fun(){
a=1;
var a=2;
console.log(a);//2;
}
fun();
console.log(a);//undefined; 編譯時間 變數 會預設轉到內容相關的首行,因此a不是全域變數
2、for迴圈
var arr=[1,2,3];
for(var i=0;i<arr.length;i++){
arr.push(i);//會出現死迴圈,數組push一個值會改變自身的length,而for一直會計算arr.length
//1、耗廢效能
//2、迴圈修改數組不注意的情況下會出現意外的BUG
}
console.log(i);// 4 變數i可能不被注意,一直存在該內容相關的範圍 。
//修改之後
var arr=[1,2,3];
var i,max;
for(i=0,max=arr.length;i<max;i++){
arr.push(i);
}
console.log(i);// 4
console.log(arr);//[1, 2, 3, 0, 1, 2]
3、new
var Person=function(name,age){
this.name=name;
this.age=age;
}
var per=new Person(‘張三‘,17);
上面new所完成的動作:
一、建立一個新對象;
二、將建構函式的範圍賦給新對象(因此this就指向了新對象);
三、執行建構函式中的代碼(為這個新對象添加屬性);
四、返回新對象賦值給per(this指向per);
4、function
function即是函數,也是建構函式,還可以是對象。
var fun=function(){
console.log(this.a);
this.c="345";
};//函數
fun.a="123",fun.b="234";//對象
var tempFun=new fun();//建構函式 輸出123
console.log(tempFun.a);//undefined
5、this
執行內容(EC):每當控制轉移到一段可執行代碼時,控制就進入一個執行內容。每一個函數的返回都會退出當前的執行內容。
this:執行內容(EC)中的一個屬性,在進入上下文時確定。
//閉包經典例子
var temp=1;
function fun(){
console.log(this);
var temp=0;
return function(){
console.log(this);
this.temp+=1;
console.log(this.temp);
}
}
var fun2=new fun();//new會建立新對象,並執行函數 運行時this指向建立對象(未命名,調試器用fun表示) 再賦值給fun2
fun2();//(因為fun2是全域對象,即this=window) 輸出2
6、()括弧
1、(a+b) 運算式
2、a() 進入執行內容(運行函數)
怎麼區分呢
我的理解是 當"("前面是+、-、*、/、%、=、!等運算子時做為運算式處理;其它就會當做執行函數處理
7、[ ] 索引
var a=1;
a[0]=2;
console.log(a[0]);//undefined
javascript所有對象都會提供get和set的函數("參考型別"object function array string等 可以get到值,但"實值型別"number 不行)
8、{ }
1、建立一個新對象 var obj={};
2、建立一個局布上下文(只有function可以)
for(int i=0;i<2;i++){
var a=i;
}
console.log(a);//2 for、switch、if等迴圈不能建立
9、執行內容、變數對象、範圍鏈
1、執行內容(EC) 上面說了只有function可以建立一塊局部的上下文,當前上下文被載入記憶體的時候 就變成了執行內容
2、變數對象(VO) 與執行內容相關的特殊對象 儲存上下文中的聲明
2.1、變數(函數內聲明的變數)
2.2、函數的聲明
2.3、函數的形參
3、範圍鏈(Scope) 範圍是上下文中所有變數對象(包括父變數對象)的列表
JavaScript細節成敗