日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

关于JS中的 NEW 和VAR

發(fā)布時間:2023/12/2 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于JS中的 NEW 和VAR 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

很多人都覺得在javascript聲明一個變量,加var和不加var沒有什么區(qū)別,實際上是一個錯誤的觀點,如果在函數(shù)外面,也就是說在window區(qū)域加不加var確實是一樣,因為都會是全局變量的效果,而如果在函數(shù)內部,加var就是局部變量,不加是全局變量。?
function test(){?? ?

var1 = 2; ?

alert(var1);?????

}???
test();??

alert(var1);

這樣可以顯示為2

function test(){?? ?

var var1 = 2; ? alert(var1);?????

}?? test();??

alert(var1);?
則為變量未定義錯誤?
this多用于函數(shù)內部,它永遠指向調用他的那個對象,看看下面的例子就明白了?
var test={ ??

a:"test" // a省略了this,不是私有的(var); ??

msg:function(){ ?// msg省略了this,不是私有的(var); ???

? a="1234"; ??????????

// a為全局變量,可以在最外邊嘗試alert(a),可以得到1234 ???? alert(this.a); ????

var msg1= function(){ ???????

alert(this.a); ?

   ??} ? ??

msg1(); ?

? }?
}

test.msg(); 這樣會分別顯示 "test" ,"1234".?

?

再舉一個例子:

var name = "The Window";???

var object = {??  

 name : "My Object",???
  getNameFunc : function(){??   

   return function(){??     

    return this.name; ?

   ?};???    

 }???

};???
alert(object.getNameFunc()());? //The Window

但this也不是這么簡單,在看看下面的例子  

function test1()?? {?? ?

  this.var01 = "test";

}?
function test2()?? { ?

  alert(var01);

}?
var a= new test1(); test1(); test2(); alert(a.var01);?
都可以得到"test".?
可以發(fā)現(xiàn)var01變量既是一個全局變量,又是test1內的成員變量。也就是說,如果在函數(shù)內部用this定義的變量,如果這個函數(shù)你不是直接來運行,而是作為一個類來new的話,雖然函數(shù)也要執(zhí)行一遍,但里面的this定義的 變量是作為類的成員變量來定義的,也就是一個局部變量,上面的測試代碼,如果去掉test1();? test2()運行就是未定義變量錯誤了。?
說到變量,最后提一下js變量無類型的說法,這個說法本身沒有錯,但js變量無類型,這話很模糊,有的人會理解成js 里面沒有數(shù)據(jù)類型。這顯然是錯誤的,js 里面也有數(shù)字,字符,布爾,類等數(shù)據(jù)類型。說變量無類型,指的是剛定義一個變量的時候,這個變量是沒有類型的,當你給它賦值的時候,值是什么類型,那這個變量就是什么類型了

轉載于:https://www.cnblogs.com/fjf1993/p/7423533.html

總結

以上是生活随笔為你收集整理的关于JS中的 NEW 和VAR的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。