es6 for循環中let和var區別詳解

 更新時間:2020-01-12 19:00:32   作者:佚名   我要評論(0)

let和var區別:


for(var i=0;i<5;i++){
setTimeout(()=>{
console.log(i);//5個5
},100)
}
console.log(i);//5
console.log('=============')

for(let

let和var區別:

for(var i=0;i<5;i++){
  setTimeout(()=>{
    console.log(i);//5個5
  },100) 
}
console.log(i);//5
console.log('=============')

for(let j=0;j<5;j++){
  setTimeout(()=>{
    console.log(j);//0,1,2,3,4
  },100) 
}
console.log(j);//報錯 j is not defined

為什么 用let就可以顯示正確結果,而var就不可以呢?

var是全局作用域,有變量提升的作用,所以在for中定義一個變量,全局可以使用,循環中的每一次給變量i賦值都是給全局變量i賦值。

let是塊級作用域,只能在代碼塊中起作用,在js中一個{}中的語句我們也稱為叫一個代碼塊,每次循環會產生一個代碼塊,每個代碼塊中的都是一個新的變量j;

es6中不是說let聲明變量不能重復聲明嗎?看下邊例子:

{
  let a=123;
}
{
  let a=246;
}
console.log(a);//a is not defined;
{ 
  var b=1;
}
{ 
  var b=2;
}
console.log(b);// 2;

{}代表一個塊,這個時候let聲明的變量只在這個塊中起作用,而這個塊對var聲明的變量不起作用。因為var是全局作用域。

let a=1;
let a=2;
//Uncaught SyntaxError: Identifier 'a' has already been declared
//let不能重復聲明

let b=1;
var b=2;

// Uncaught SyntaxError: Identifier 'a' has already been declared
//let不能重復聲明


var c=3;
var c=4;
console.log(c)//4;var可以重復聲明

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

  • 詳解javascript中var與ES6規范中let、const區別與用法
  • 簡述ES6新增關鍵字let與var的區別
  • ES6深入理解之“let”能替代”var“嗎?
  • JavaScript ES6中const、let與var的對比詳解
  • JS變量中有var定義和無var定義的區別以及es6中let命令和const命令

相關文章

  • es6 for循環中let和var區別詳解

    es6 for循環中let和var區別詳解

    let和var區別: for(var i=0;i<5;i++){ setTimeout(()=>{ console.log(i);//5個5 },100) } console.log(i);//5 console.log('=============') for(let
    2020-01-12
  • python利用JMeter測試Tornado的多線程

    python利用JMeter測試Tornado的多線程

    JMeter的簡介 &#8195;&#8195;JMeter是Apache組織開發的基于Java的壓力測試工具。用于對軟件做壓力測試,它最初被設計用于Web應用測試,但后來擴展到其他測試領域。
    2020-01-12
  • Java 二分法檢索算法代碼實現詳解

    Java 二分法檢索算法代碼實現詳解

    一,二分法檢索算法介紹 二分法檢索(binary search)又稱折半檢索,二分法檢索的基本思想是設字典中的元素從小到大有序地存放在數組(array)中。是最常用的搜索
    2020-01-12
  • Linux下PHP+Apache的26個必知的安全設置

    Linux下PHP+Apache的26個必知的安全設置

    PHP是一種開源服務器端腳本語言,應用很廣泛。Apache web服務器提供了這種便利:通過HTTP或HTTPS協議,訪問文件和內容。配置不當的服務器端腳本語言會帶來各種各樣
    2020-01-12
  • tensorflow的計算圖總結

    tensorflow的計算圖總結

    計算圖 在 TensorFlow 中用計算圖來表示計算任務。 計算圖,是一種有向圖,用來定義計算的結構,實際上就是一系列的函數的組合。 用圖的方式,用戶通過用一些簡單
    2020-01-12
  • Python3.x+迅雷x 自動下載高分電影的實現方法

    Python3.x+迅雷x 自動下載高分電影的實現方法

    快要過年了,大家都在忙些什么呢?一到年底公司各種搶票,備年貨,被這過年的氣氛一烘,都歸心似箭,哪還有心思上班啊。歸心似箭=產出低下=一行代碼十個錯=無聊。于
    2020-01-12
  • 在微信小程序中渲染HTML內容3種解決方案及分析與問題解決

    在微信小程序中渲染HTML內容3種解決方案及分析與問題解決

    大部分Web應用的富文本內容都是以HTML字符串的形式存儲的,通過HTML文檔去展示HTML內容自然沒有問題。但是,在微信小程序(下文簡稱為「小程序」)中,應當如何渲
    2020-01-12
  • ES2020 新特性(種草)

    ES2020 新特性(種草)

    這幾年,Ecma TC39一年一次更新 ecmascript 規范標準,截止目前,以下特性已進入 finished 狀態,F在帶大家體驗種草 ES2020 新特性。 一:Promise.allSettled
    2020-01-12
  • Python 實現遞歸法解決迷宮問題的示例代碼

    Python 實現遞歸法解決迷宮問題的示例代碼

    迷宮問題 問題描述: 迷宮可用方陣 [m, n] 表示,0 表示可通過,1 表示不能通過。若要求左上角 (0, 0) 進入,設計算法尋求一條能從右下角 (m-1, n-1) 出去的路徑。
    2020-01-12
  • html2canvas屬性和使用方法以及如何使用html2canvas將HTML內容寫入Canvas生成圖片

    html2canvas屬性和使用方法以及如何使用html2canvas將HTML內容寫入Canvas生成圖片

    如何使用JS截取HTML頁面為圖片呢,下面為大家介紹一款JS截圖插件html2canvas.js html2canvas.js 能夠實現在用戶瀏覽器端直接對整個或部分頁面進行截屏。 html2can
    2020-01-12

最新評論

双色球基本走势图200