摘要:變量聲明和是新出的兩個(gè)變量聲明的方式。而新版的引入了關(guān)鍵字,用以聲明一個(gè)塊級(jí)域的本地變量,這樣能避免一些問題。作為的超集,自然也是支持和的。這意味著變量可以在聲明之前使用,這個(gè)行為叫做。本文參考變量聲明翻譯版變量聲明參考文檔參考文檔參考文檔
變量聲明
let 和 const 是JavaScript新出的兩個(gè)變量聲明的方式。前面說過let 和 var類似,但是它們的作用域是不一樣的。
關(guān)于作用域,在ES6之前的Javascript中,函數(shù)體是唯一能能夠創(chuàng)建新作用域的地方。那時(shí)候沒有let,用var聲明的變量,作用域要么是全局,要么是函數(shù)體,沒有塊級(jí)的作用域(塊作用域變量在包含它們的塊外部或for循環(huán)外部是不能被訪問的)。而新版的Javascript引入了let關(guān)鍵字,用以聲明一個(gè)塊級(jí)域的本地變量,這樣能避免一些問題。
至于const,它的作用域和let一樣,但是是聲明創(chuàng)建一個(gè)只讀常量,這里要注意一下,這并不意味著該常量指向的值不可變,而是該常量只能被賦值一次!
舉個(gè)例子:
// numLivesForCat的值不能再變了 const numLivesForCat = 9; const kitty = { name: "Aurora", numLives: numLivesForCat, } // 錯(cuò)誤,kitty指向的對(duì)象不能變 kitty = { name: "Danielle", numLives: numLivesForCat }; // 沒問題,對(duì)象的屬性可以變化 kitty.name = "Rory"; kitty.name = "Kitty"; kitty.name = "Cat"; kitty.numLives--;
另外,使用const定義常量時(shí),一定要初始化。
Typescript作為Javascript的超集,自然也是支持let和const的。
該用哪個(gè)const沒什么好說的,你需要常量就用它,不需要就不用。但是let和var要比較一下。
使用var聲明變量時(shí),不管你聲明多少次,你得到的只有一個(gè)變量,而使用let時(shí),同一個(gè)變量名在同一作用域內(nèi)聲明一次以上會(huì)報(bào)錯(cuò)。
使用var時(shí)很容易出bug,比如:
function sumMatrix(matrix: number[][]) { var sum = 0; for (var i = 0; i < matrix.length; i++) { var currentRow = matrix[i]; for (var i = 0; i < currentRow.length; i++) { sum += currentRow[i]; } } return sum; }
里層for循環(huán)中的i會(huì)覆蓋外層的i,因?yàn)閕引用的都是相同的函數(shù)作用域內(nèi)的變量。
但是如果把var換成let,內(nèi)層的for循環(huán)自己是一個(gè)塊級(jí)作用域,會(huì)屏蔽外部的作用域中的相同名字的變量,所以這兩個(gè)i會(huì)井水不犯河水。
另外,因?yàn)?b>var是函數(shù)作用域,所以對(duì)于一個(gè)var聲明的變量,你可以先使用再聲明:
bla = 2; var bla; // ... // 可以理解為下面這樣: var bla; bla = 2;
引用一段mozilla文檔中的話:
由于變量聲明(以及其他聲明)總是在任意代碼執(zhí)行之前處理的,所以在代碼中的任意位置聲明變量總是等效于在代碼開頭聲明。這意味著變量可以在聲明之前使用,這個(gè)行為叫做“hoisting”。
嗯,使用var時(shí),這叫變量聲明提升,但是如果你使用let時(shí)也這樣做,這叫錯(cuò)誤! 塊級(jí)作用域的變量的一個(gè)特點(diǎn)是,它們不能在被聲明之前使用。
最后,建議盡量用let替換var。
本文參考:
Typescript Handbook 變量聲明
Typescript Handbook 翻譯版變量聲明
mozilla Javascript參考文檔 var
mozilla Javascript參考文檔 let
mozilla Javascript參考文檔 const
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78637.html
摘要:要為變量或者常量指定類型也很簡單,就是在變量常量名后面加個(gè)冒號(hào),再指定類型即可,比如聲明函數(shù)是類型,即返回值是類型聲明參數(shù)是類型聲明是無返回值的聲明是這段代碼演示了對(duì)函數(shù)類型參數(shù)類型和變量類型地聲明。變量函數(shù)參數(shù)和返回值需要申明類型。 從 JavaScript 語法改寫為 TypeScript 語法,有兩個(gè)關(guān)鍵點(diǎn),一點(diǎn)是類成員變量(Field)需要聲明,另一點(diǎn)是要為各種東西(變量、參數(shù)...
摘要:怎么影響了我的思考方式對(duì)前端開發(fā)者來說,能強(qiáng)化了面向接口編程這一理念。使用的過程就是在加深理解的過程,確實(shí)面向接口編程天然和靜態(tài)類型更為親密。摘要: 學(xué)會(huì)TS思考方式。 原文:TypeScript - 一種思維方式 作者:zhangwang Fundebug經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有。 電影《降臨》中有一個(gè)觀點(diǎn),語言會(huì)影響人的思維方式,對(duì)于前端工程師來說,使用 typescript 開...
摘要:怎么影響了我的思考方式對(duì)前端開發(fā)者來說,能強(qiáng)化了面向接口編程這一理念。使用的過程就是在加深理解的過程,確實(shí)面向接口編程天然和靜態(tài)類型更為親密。 電影《降臨》中有一個(gè)觀點(diǎn),語言會(huì)影響人的思維方式,對(duì)于前端工程師來說,使用 typescript 開發(fā)無疑就是在嘗試換一種思維方式做事情。 其實(shí)直到最近,我才開始系統(tǒng)的學(xué)習(xí) typescript ,前后大概花了一個(gè)月左右的時(shí)間。在這之前,我也在...
摘要:原文地址原文作者譯者校對(duì)者和其他人有一些關(guān)于比較好的博文,跟隨這些博文,我最近開始使用。今天,我將展示如何從零開始建立一個(gè)工程,以及如何使用管理構(gòu)建過程。我也將陳述關(guān)于的第一印象,尤其是使用和。 原文地址:Getting started with TypeScript and React 原文作者:Jack_Franklin 譯者:luxj 校對(duì)者:veizz Tom Dale...
摘要:調(diào)用者容易迷惑,當(dāng)傳入函數(shù)的參數(shù)類型為時(shí)返回值的類型究竟是還是。前面兩個(gè)是函數(shù)聲明,最后一個(gè)是函數(shù)實(shí)現(xiàn),有參數(shù)類型和返回值類型隨意搭配的意思。 Typescript 中的函數(shù) Javascrip 中函數(shù)是一等公民一、Javascript 中的兩種常見的定義函數(shù)的方式1、函數(shù)聲明 function myFunc(x,y){ return x+y } 2、函數(shù)表達(dá)式 let add...
閱讀 2817·2021-11-24 09:39
閱讀 3387·2021-11-19 09:40
閱讀 2257·2021-11-17 09:33
閱讀 3749·2021-10-08 10:04
閱讀 3037·2021-09-26 09:55
閱讀 1663·2021-09-22 15:26
閱讀 927·2021-09-10 10:51
閱讀 3124·2019-08-30 15:44