1. gzyueqian
      13352868059

      哪有好的java培訓(xùn)?粵嵌為你解答怎么學(xué)習(xí)java

      更新時(shí)間: 2018-09-20 15:28:29來(lái)源: java學(xué)習(xí)瀏覽量:4412

          這個(gè)話題對(duì)于一些老鳥來(lái)說可能根本算不上疑問,但對(duì)于新手來(lái)說也許除了常見的var之外,let和const較少使用的機(jī)會(huì)。

          所以在本文中,我將會(huì)通過一些例子來(lái)為大家介紹如何在Javascript中靈活使用var、let和const這些關(guān)鍵字來(lái)定義變量,以及這些關(guān)鍵字它們之間有什么異同。

          如果你懶得看下面的代碼,那我可以先把概念結(jié)論說出:
          var定義的變量可被更改,如果不初始化而直接使用也不會(huì)報(bào)錯(cuò)
          let定義的變量和var類似,但作用域在當(dāng)前聲明的范圍內(nèi)
          const定義的變量只可初始化一次且作用域內(nèi)不可被更改,使用前必須初始化
          下面我將通過示例的形式來(lái)詳細(xì)為大家介紹它們?nèi)咧g的異同:
          Var
          var用以聲明一個(gè)變量,并且同時(shí)我們可以在聲明語(yǔ)句中初始化所聲明的變量。
          例如:
          var a = 10;
          變量的聲明,會(huì)在代碼被執(zhí)行之前被處理。
          用var聲明的JavaScript變量,其可用范圍在當(dāng)前執(zhí)行上下文。
          在函數(shù)外聲明的JavaScript變量,其作用范圍是全局。

          考慮以下代碼片段:


          function nodeSimplified() {
            var a =10;
            console.log(a);  // 輸出 10
            if(true) {
             var a=20;
             console.log(a); // 輸出 20
            }
            console.log(a);  // 輸出 20
          }

          在上面的代碼中,你可以發(fā)現(xiàn),當(dāng)變量a在if代碼段里被更新時(shí),它的值被全局更新了,因此在經(jīng)過了if代碼后,被更新的值仍然被保留著。這與其他語(yǔ)言中的全局變量有點(diǎn)類似。但是,在使用這個(gè)功能時(shí)要非常小心,因?yàn)樗锌赡軙?huì)覆蓋一個(gè)已有的值。
          let
          let語(yǔ)句在一個(gè)塊級(jí)范圍里聲明一個(gè)局部變量。和var類似,我們可以在聲明時(shí)初始化它的值。
          例如:
          let a = 10;
          這個(gè)語(yǔ)句允許你創(chuàng)建一個(gè)變量,使它的作用范圍被限制在它所在的代碼塊。
          它和Java、C#等其他語(yǔ)言的變量類似。
          考慮下面的代碼片段:
          function nodeSimplified() {
            let a =10;
            console.log(a);  // output 10
            if(true) {
             let a=20;
             console.log(a); // output 20
            }
            console.log(a);  // output 10
          }

          它和大多數(shù)語(yǔ)言中我們所見的表現(xiàn)行為是一致的。


          function nodeSimplified() {
            let a =10;
            let a =20; // 拋出語(yǔ)法錯(cuò)誤
            console.log(a); 
          }

          錯(cuò)誤信息:"未捕獲的異常:標(biāo)識(shí)符'a'已經(jīng)被聲明過。" 但如果使用var就沒事:


          function nodeSimplified() { 
            var a =10;   
            var a =20;   
            console.log(a);  // 輸出 20 
          }

          使用let語(yǔ)句,可以很好的維護(hù)變量的作用范圍。當(dāng)使用內(nèi)部函數(shù)時(shí),let語(yǔ)句讓你的代碼更整潔。
          我希望上面的例子能幫你更好地理解var和 let。如果有任何疑問,請(qǐng)?jiān)谠u(píng)論區(qū)留言。
          const
          const語(yǔ)言中的變量只能被賦值一次,然后就不能在被賦值。const語(yǔ)句的作用范圍和let語(yǔ)句一樣。

          例如:


          const a = 10;
          function nodeSimplified() {
            const MY_VARIABLE =10;
            console.log(MY_VARIABLE);  // 輸出 10 
          }

          照例,命名規(guī)范指出我們應(yīng)該用大寫字母聲明常量。當(dāng)然,const a = 10 在上面的代碼中會(huì)的起到相同的作用。為了讓代碼長(zhǎng)期可維護(hù),命名規(guī)范還是值得遵守的。

          問題:如果給一個(gè)const變量重新賦值會(huì)發(fā)生什么? 考慮下面的代碼:


          function nodeSimplified() {
            const MY_VARIABLE =10;
            console.log(MY_VARIABLE);  // 輸出 10
            MY_VARIABLE =20;           // 拋出類型錯(cuò)誤
            console.log(MY_VARIABLE); 
          }

          錯(cuò)誤信息:"未捕獲的類型錯(cuò)誤:給const變量賦值"。
          當(dāng)我們嘗試給已有的const變量賦值時(shí),這段代碼會(huì)拋出一個(gè)錯(cuò)誤。
          介紹就到此結(jié)束,希望這篇短小精悍的文章能夠幫助到各位更好的理解在Javascript中聲明變量時(shí)使用不同關(guān)鍵字上到底有何異同。

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 色中文字幕在线 | 亚欧乱色国产精品免费九库 | 一色屋成人精品视频在线 | 日韩精品久久人人躁人人噜 | 亚洲中文字幕αv天堂 | 精品成年人在线观看 |