javascript聲明變數var和this的總結

來源:互聯網
上載者:User

很多人都覺得在javascript聲明一個變數,加var和不加var沒有什麼區別,實際上是一個錯誤的觀點,如果在函數外面,也就是說在window地區加不加var確實是一樣,因為都會是全域變數的效果,而如果在函數內部,加var就是局部變數,不加是全域變數。
function test(){  
var1 = 2;
alert(var1);     
}  
test();  
alert(var1);
這樣可以顯示為2
function test(){  
var var1 = 2;
alert(var1);     
}  
test();  
alert(var1);
則為變數未定義錯誤

this多用於函數內部,它永遠指向調用他的那個對象,看看下面的例子就明白了

var test={
   a:"test",
   msg:function(){
     a="1234";
     alert(this.a);
     var msg1= function(){
alert(this.a);
     }
     msg1();
   }
}
test.msg(); 這樣會分別顯示 "test" ,"1234".

但this也不是這麼簡單,在看看下面的例子
function test1()  
{  
this.var01 = "test";
}

function test2()  
{
alert(var01);
}

var a= new test1();
test1();
test2();
alert(a.var01);
都可以得到"test".
可以發現var01變數既是一個全域變數,又是test1內的成員變數。也就是說,如果在函數內部用this定義的變數,如果這個函數你不是直接來運行,而是作為一個類來new的話,雖然函數也要執行一遍,但裡面的this定義的 變數是作為類的成員變數來定義的,也就是一個局部變數,上面的測試代碼,如果去掉test1(); test2()運行就是未定義變數錯誤了。

說到變數,最後提一下js變數無類型的說法,這個說法本身沒有錯,但js變數無類型,這話很模糊,有的人會理解成js 裡面沒有資料類型。這顯然是錯誤的,js 裡面也有數字,字元,布爾,類等資料類型。說變數無類型,指的是剛定義一個變數的時候,這個變數是沒有類型的,當你給它賦值的時候,值是什麼類型,那這個變數就是什麼類型了

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.