最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TypeScript中l(wèi)et和var的區(qū)別介紹

 更新時間:2022年07月04日 14:21:54   作者:楚楚99  
這篇文章主要介紹了TypeScript?let與var的區(qū)別,主要從作用域等這幾個方面做詳細(xì)介紹,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1、作用域不同

用var聲明的變量,只有函數(shù)作用域和全局作用域,沒有塊級作用域。而let可以實(shí)現(xiàn)塊級作用域,只能在代碼塊{}內(nèi)有效,在{}之外不能訪問,如下代碼所示:

{
let a = 0;
var b = 1;
}
console.log(a) // ReferenceError: a is not defined
console.log(b) // 1

2、let沒有變量提升

在代碼塊內(nèi),使用let命令聲明變量之前,該變量都是不可用的。這在語法上,稱為:暫時性死區(qū),英文為:temporal dead zone,簡稱 TDZ。

//報(bào)錯
console.log(a)
let a=10

3、let變量不能重復(fù)聲明

使用var,多次聲明同一個變量,不會報(bào)錯,只會得到一個變量。

var a=1;
var a=2;

上述例子中,所有的a的聲明實(shí)際上都引用了一個相同的a。在多人開發(fā)一個項(xiàng)目時,容易出現(xiàn)問題。比如都定義了一個變量a,但各自用途不同,后面定義的a會把前面定義的覆蓋掉。

而let就相對嚴(yán)格,無法多次聲明同一個變量,一個變量只能聲明一次,并且無法在 let 語句前去訪問該變量

let a=1;
let a=2; //錯誤

4、for循環(huán)中的let與var

for (var i = 0; i < 3; i++) {
setTimeout(function (){console.log("i:" + i);});
}

上述代碼打印出來i都是3,這個結(jié)果令人感覺奇怪。其實(shí)并不奇怪,原因如下所示:

(1)var是全局變量,并且可以允許重復(fù)定義,所以在for (var i = 0; i < 3; i++)語句中,i重復(fù)定義了3次,最終的值以最后一次定義為準(zhǔn)。

(2)javascript是單線程,setTimeout()會等for執(zhí)行完之后才開始計(jì)時,此時i的值為3,最終打印出3

for (let j = 0; j < 3; j++) {
setTimeout(function (){console.log("j:" + j);});
}

上述代碼打印出來i是0、1、2,原因分析如下:

(1)變量j是用let聲明的,當(dāng)前的j只在本輪循環(huán)中有效,每次循環(huán)的j其實(shí)都是一個新的變量。

(2)在for循環(huán)中,不僅循環(huán)體{}會生成塊級作用域,循環(huán)條件()也會生成塊級作用域,循環(huán)條件()的塊級作用域是循環(huán)體{}塊級作用域的父級作用域,所以let可以跨越()和{}作用域。

參考:TypeScript let與var的區(qū)別

到此這篇關(guān)于TypeScript let與var的區(qū)別的文章就介紹到這了,更多相關(guān)TypeScript let與var區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js實(shí)現(xiàn)數(shù)字拼圖

    js實(shí)現(xiàn)數(shù)字拼圖

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)數(shù)字拼圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript中的類型判斷你真的了解了嗎

    JavaScript中的類型判斷你真的了解了嗎

    這篇文章主要為大家詳細(xì)介紹了JavaScript中類型判斷的相關(guān)常見方法,文中的示例代碼講解詳細(xì),對我們深入學(xué)習(xí)JavaScript有一定幫助,需要的可以參考下
    2023-11-11
  • uniapp獲取底部安全距離以及狀態(tài)欄高度等

    uniapp獲取底部安全距離以及狀態(tài)欄高度等

    最近在用uniapp開發(fā)的時候遇到了一些問題,下面這篇文章主要給大家介紹了關(guān)于uniapp獲取底部安全距離以及狀態(tài)欄高度等的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • javascript 數(shù)據(jù)結(jié)構(gòu)的題

    javascript 數(shù)據(jù)結(jié)構(gòu)的題

    面試題是3個數(shù)據(jù)結(jié)構(gòu)的題,可以用java/c/c++/python實(shí)現(xiàn),靠,js也能實(shí)現(xiàn),鄙視js?我上機(jī)就用js寫的,雖說肯定沒戲,但js我挺。
    2008-07-07
  • js 頁面刷新location.reload和location.replace的區(qū)別小結(jié)

    js 頁面刷新location.reload和location.replace的區(qū)別小結(jié)

    在實(shí)際應(yīng)用的時候,重新刷新頁面的時候,我們通常使用: location.reload() 或者是 history.go(0) 來做。下面有一些相關(guān)的內(nèi)容,大家看完了就會有更多的收獲。
    2009-12-12
  • javascript入門之window對象【新手必看】

    javascript入門之window對象【新手必看】

    本文系統(tǒng)介紹了javascript的window對象以及一些控制函數(shù)的用法,僅供大家參考
    2016-11-11
  • Tesseract.js使用純js實(shí)現(xiàn)的OCR文字識別

    Tesseract.js使用純js實(shí)現(xiàn)的OCR文字識別

    Tesseract.js是流行的Tesseract OCR引擎的純Javascript端口,這個庫支持100多種語言,自動文本定位和腳本檢測,一個簡單的界面,用于閱讀段落、單詞和字符邊界框,Tesseract.js既可以在瀏覽器中運(yùn)行,也可以在帶有NodeJS的服務(wù)器上運(yùn)行
    2023-10-10
  • 旺旺在線客服代碼 旺旺客服代碼生成器

    旺旺在線客服代碼 旺旺客服代碼生成器

    很多朋友想在網(wǎng)站上插入自己的阿里旺旺在線聯(lián)系圖片,就像是和QQ一樣,小編為大家詳細(xì)講解了旺旺在線客服代碼以及旺旺客服代碼生成器,希望能夠幫助到大家。
    2018-01-01
  • JS中touchstart事件與click事件沖突的解決方法

    JS中touchstart事件與click事件沖突的解決方法

    這篇文章主要給大家介紹了關(guān)于JS中touchstart事件與click事件沖突的解決方法,文中通過示例代碼將解決的方法介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • 微信小程序?qū)崿F(xiàn)彈出層效果

    微信小程序?qū)崿F(xiàn)彈出層效果

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)常見彈出層效果 ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評論

凭祥市| 信宜市| 蒙阴县| 宁安市| 仁怀市| 从江县| 穆棱市| 改则县| 定结县| 海门市| 河津市| 石阡县| 中西区| 新野县| 进贤县| 龙井市| 温宿县| 眉山市| 长治市| 竹溪县| 扎兰屯市| 博湖县| 邵武市| 马龙县| 苍梧县| 鸡泽县| 全椒县| 菏泽市| 沁阳市| 浏阳市| 汉沽区| 沽源县| 娱乐| 冕宁县| 遂宁市| 朝阳县| 随州市| 衡水市| 乌什县| 宜州市| 神池县|