5分鐘掌握var,let和const異同-創(chuàng)新互聯(lián)

轉(zhuǎn)載請注明出處:葡萄城官網(wǎng),葡萄城為開發(fā)者提供專業(yè)的開發(fā)工具、解決方案和服務(wù),賦能開發(fā)者。
原文出處:https://dzone.com/articles/javascript-difference-between-var-let-and-const-ke

創(chuàng)新互聯(lián)建站總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)絡(luò)營銷策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)站維護(hù)、公眾號(hào)搭建、小程序制作、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動(dòng)行銷領(lǐng)域創(chuàng)造價(jià)值而不懈努力!

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

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

如果你懶得看下面的代碼,那我可以先把概念結(jié)論說出:

  • var定義的變量可被更改,如果不初始化而直接使用也不會(huì)報(bào)錯(cuò)

  • let定義的變量和var類似,但作用域在當(dāng)前聲明的范圍內(nèi)

  • const定義的變量只可初始化一次且作用域內(nèi)不可被更改,使用前必須初始化

下面我將通過示例的形式來詳細(xì)為大家介紹它們?nèi)咧g的異同:

Var

var用以聲明一個(gè)變量,并且同時(shí)我們可以在聲明語句中初始化所聲明的變量。

例如:

var a = 10;
  • 變量的聲明,會(huì)在代碼被執(zhí)行之前被處理。

  • var聲明的JavaScript變量,其可用范圍在當(dāng)前執(zhí)行上下文。

  • 在函數(shù)外聲明的JavaScript變量,其作用范圍是全局。

考慮以下代碼片段:

5分鐘掌握var,let和const異同

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

5分鐘掌握var,let和const異同

在上面的代碼中,你可以發(fā)現(xiàn),當(dāng)變量a在if代碼段里被更新時(shí),它的值被全局更新了,因此在經(jīng)過了if代碼后,被更新的值仍然被保留著。這與其他語言中的全局變量有點(diǎn)類似。但是,在使用這個(gè)功能時(shí)要非常小心,因?yàn)樗锌赡軙?huì)覆蓋一個(gè)已有的值。

let

let語句在一個(gè)塊級(jí)范圍里聲明一個(gè)局部變量。和var類似,我們可以在聲明時(shí)初始化它的值。

例如:

let a = 10;
  • 這個(gè)語句允許你創(chuàng)建一個(gè)變量,使它的作用范圍被限制在它所在的代碼塊。

  • 它和Java、C#等其他語言的變量類似。

考慮下面的代碼片段:

5分鐘掌握var,let和const異同

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
}

5分鐘掌握var,let和const異同

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

function nodeSimplified() {
  let a =10;
  let a =20; // 拋出語法錯(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語句,可以很好的維護(hù)變量的作用范圍。當(dāng)使用內(nèi)部函數(shù)時(shí),let語句讓你的代碼更整潔。

我希望上面的例子能幫你更好地理解varlet。如果有任何疑問,請?jiān)谠u論區(qū)留言。

const

const語言中的變量只能被賦值一次,然后就不能在被賦值。const語句的作用范圍和let語句一樣。

例如:

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

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

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

5分鐘掌握var,let和const異同

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

5分鐘掌握var,let和const異同

錯(cuò)誤信息:"未捕獲的類型錯(cuò)誤:給const變量賦值"。

當(dāng)我們嘗試給已有的const變量賦值時(shí),這段代碼會(huì)拋出一個(gè)錯(cuò)誤。

介紹就到此結(jié)束,希望這篇短小精悍的文章能夠幫助到各位更好的理解在Javascript中聲明變量時(shí)使用不同關(guān)鍵字上到底有何異同。


本文是由葡萄城技術(shù)開發(fā)團(tuán)隊(duì)發(fā)布,轉(zhuǎn)載請注明出處:葡萄城官網(wǎng)

了解開放易用的 Web 生成平臺(tái),請前往活字格Web應(yīng)用生成平臺(tái)

了解可嵌入您系統(tǒng)的在線 Excel,請前往SpreadJS純前端表格控件

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文標(biāo)題:5分鐘掌握var,let和const異同-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://www.muchs.cn/article10/ipego.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、響應(yīng)式網(wǎng)站網(wǎng)站策劃、關(guān)鍵詞優(yōu)化Google、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作