今天第一次接觸到typescript,看了第一個知識點就是變量的聲明,來回憶回憶,做做筆記


以前只用過JavaScript原生寫網站特效,今天還是第一次聽說typescript的,然后看了一下它的基本知識,感覺很像Java,真的太像了,但是又有不同點。很讓我驚奇看到的第一個知識點就和以前不同,很新鮮。

變量的聲明:

在typescript中我知道的變量的聲明有兩種(除了var),分別是let和const。以前我經常用的是var,let和var很相似,const和他們不一樣,讓我驚訝的是它居然能阻止對變量的再次賦值。


因為typescript是JavaScript的超集,所以JavaScript本身是支持let和const的。那么我們為什么要使用let和const而不是var呢?

var的作用域規則:

function v(a:boolean){

  if(a){

  var b=10;

}

  ruturn b;

}

  v(true);//10

  v(false);//undefined

上面例子中變量b是if語句里面,但是我們卻可以在外面訪問它,是因為var申明可以包含它的函數,模塊,命名空間或全局作用域任何位置被訪問。這些作用域規則可能會引發錯誤,其中就有多次申明同一個變量並不會報錯。var它不會管你聲明了多少次,反正你只會得到一次。

let聲明:

它和var寫法是一樣的;他們的區別不在語法上在語義上面;let不能再一個作用域里進行多次聲明。

例如:

let x=5;

let x=10;//error

let塊作用域:

當let聲明一個變量的時候它使用的詞法作用域或者是塊作用域。塊作用域指的就是他們包含的塊以外的不能訪問。

例如:

function fun(i:boolean){

  let a=5;

  if(i){

  let b=a+5;

  return b;

}

  return b;//error:'b' doesn`t exist here

}

或者

try{

  throw "hello word!";

}

catch(e){

  console.log("word!");

}

  console.log("e");//error:'e' doesn`t exist here

 

這里的b和e作用域就是if語句塊或者catch語句塊里。擁有塊級作用域的變量有一個特點是他們不能再被聲明之前讀或者寫。

兩個塊級作用域聲明同一變量也會報錯。

例如:

function fun(x){

  let x=5;//error interferes with parameter declaration

}

function fu(){

  let x=5;

  var x=5;//error :can`t have both declarations of 'x'

}

並不是想說塊級作用域變量不能在函數作用域內聲明,而是塊級作用域變量需要在不用塊里聲明。

const聲明:

它還是let聲明有相同的作用域規則,但是它被賦值后不能再被改變。除非使用特殊的方法去避免,實際上const變量的內部狀態是可以改變的。

總結一下吧,現在有兩種作用域相似的聲明方式,哪一種更好呢?我覺得各有千秋吧,視情況而定。

書上說可以使用做小特權原則,所有變量出除了你計划去修改的都用const。使用const可以讓我們更容易推測數據流動。但是我更喜歡用let。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM