免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

var與ES6規范中let、const區別是什么

這篇文章主要介紹了var與ES6規范中let、const區別是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在婺城等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供成都做網站、成都網站建設 網站設計制作按需網站制作,公司網站建設,企業網站建設,品牌網站建設,成都全網營銷,外貿網站制作,婺城網站建設費用合理。

Js沒有塊級作用域

請看這樣一條規則:在JS函數中的var聲明,其作用域是函數體的全部。

  for(var i=0;i<10;i++){
     var a = 'a';
  }
  console.log(a);

明明已經跳出 for 循環了,卻還可以訪問到 for 循環內定義的變量 a ,甚至連 i 都可以被放訪問到,尷尬~

2.** 循環內變量過度共享 **

你可以猜一下當執行以下這段代碼時會發生什么

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

在瀏覽器里運行一下,看看和你預想的結果是否相同?

沒錯,控制臺輸出了3個3,而不是預想的 0、1、2。

事實上,這個問題的答案是,循環本身及三次 timeout 回調均共享唯一的變量 ** i 。當循環結束執行時,i 的值為3。所以當第一個 timeout 執行時,調用的 i 當讓也為 3 了。

話說到這兒,想必客官已經猜到 let 是干嘛用的。

你沒猜錯,就是解決這兩個bug的。你盡可以把上述的兩個例子中的 var 替代成 let 再運行一次。

注意:必須聲明 'use strict' 后才能使用let聲明變量,否則瀏覽并不能顯示結果

let是更完美的var

let聲明的變量擁有塊級作用域。 也就是說用let聲明的變量的作用域只是外層塊,而不是整個外層函數。let 聲明仍然保留了提升特性,但不會盲目提升,在示例一中,通過將var替換為let可以快速修復問題,如果你處處使用let進行聲明,就不會遇到類似的bug。

let聲明的全局變量不是全局對象的屬性。這就意味著,你不可以通過window.變量名的方式訪問這些變量。它們只存在于一個不可見的塊的作用域中,這個塊理論上是Web頁面中運行的所有JS代碼的外層塊。

形如for (let x...)的循環在每次迭代時都為x創建新的綁定。

這是一個非常微妙的區別,拿示例二來說,如果一個for (let...)循環執行多次并且循環保持了一個閉包,那么每個閉包將捕捉一個循環變量的不同值作為副本,而不是所有閉包都捕捉循環變量的同一個值。

所以示例二中,也以通過將var替換為let修復bug。

這種情況適用于現有的三種循環方式:for-of、for-in、以及傳統的用分號分隔的類C循環。

用let重定義變量會拋出一個語法錯誤(SyntaxError)。

這個很好理解,用代碼說話

let a = 'a';
let a = 'b';

上述寫法是不允許的,瀏覽器會報錯,因為重復定義了。

** 在這些不同之外,let和var幾乎很相似了。舉個例子,它們都支持使用逗號分隔聲明多重變量,它們也都支持解構特性。 **

ES6引入的第三個聲明類關鍵詞:const

一句話說明白,const 就是用來定義常量的!任何腦洞(fei)大(zhu)開(liu)的寫法都是非法的

比如這樣:

//只聲明變量不賦值
const a
這樣:
//重復聲明變量
const a = 'a';
const a = 'b';

還有這樣:

//給變量重新賦值
const a = 'a';
a = 'b'

再來個黑科技:

//不過不推薦這么干,實在沒啥意思,常量常量,不變的才叫常量嘛~
const a = {a:'a'};
//重新賦值當然是行不通的了
a = {a:'b'};
//嘿嘿嘿科技
a.a = 'b'

const 確實沒啥說的,普通用戶使用完全沒問題,高(dou)端(bi)用戶咋用都是問題。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“var與ES6規范中let、const區別是什么”這篇文章對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯行業資訊頻道,更多相關知識等著你來學習!

分享名稱:var與ES6規范中let、const區別是什么
本文URL:http://m.newbst.com/article10/pjdjgo.html

成都網站建設公司_創新互聯,為您提供動態網站網站營銷虛擬主機網站制作電子商務面包屑導航

廣告

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

手機網站建設