国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解js中let與var聲明變量的區別

2024-05-06 15:39:16
字體:
來源:轉載
供稿:網友

ES6 新增了let命令,用來聲明局部變量,所聲明的變量,只在let命令所在的代碼塊內有效,而且有暫時性死區的約束。

1.ES6可以用let定義塊級作用域變量

代碼如下:

function f1(){    {      var a = 10;      let b = 20;    }    console.log(a);  // 10    console.log(b);  // Uncaught ReferenceError: b is not defined  }  f1();

說明:在ES6之前只有全局作用域和函數作用域,在ES6中新增了塊級作用域,用{}花括號表示。var 聲明的變量a在花括號外面仍然是會起作用的,但是let聲明的變量b只有在花括號里面才會起作用的,在塊級作用域內。

2.let配合for循環的獨特應用

代碼如下:

 function f2(){    var i = 5;    for(var i=0;i<=10;i++){    }    console.log(i);  // 11    var j = 5;    for(let j=0;j<=10;j++){    }    console.log(j); // 5  }  f2();

說明:let非常適合用于for循環內部的塊級作用域,在for循環當中,每一次的執行都是一個全新的獨立的塊級作用域。使用let聲明的變量在for循環當中不會受到循環體外面的影響,不會受到變量污染,不會發生改變。對于var聲明的變量i會受到for循環的影響,受到變量污染,而let聲明的變量j不會受到for循環的影響。

3.let沒有變量提升與暫時性死區

代碼如下:

 function f3(){    // 變量提升    function f31(){      console.log(a); // undefined      var a = 10;      console.log(b); // Uncaught ReferenceError: b is not defined      let b = 10;    }    f31();

說明:在ES6中,如果區塊中存在let和const命令,這個區塊對這些命令聲明的變量,從一開始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會報錯。暫時性死區(TDZ):在代碼塊內,使用let命令聲明變量之前,該變量都是不可用的。在f31函數中,用var聲明的變量a發生了變量提升,打印出的值為undefined 未定義,而用let聲明的變量b報錯Uncaught ReferenceError,不會發生變量提升。在f32函數中,用使用let命令聲明的變量a之前,都屬于變量a的暫時性死區,形成封閉作用域,該變量都是不可用的,會報錯,Uncaught ReferenceError: a is not defined。在let聲明變量后,它是一個未定義的變量。當再給變量a進行賦值操作以后,它的值可以正常打印出來。

4.let變量不能重復聲明

代碼如下:

function f4(){    let a = 10;    let a = 20;    console.log(a); // Uncaught SyntaxError: Identifier 'a' has already been declared    let b = 10;    var b = 20;    console.log(b); // Uncaught SyntaxError: Identifier 'b' has already been declared  }  f4();

說明:let不允許在相同作用域內,重復聲明同一個變量,否則報錯。在函數f4中,無論是用兩個let聲明同一個變量a,還是一個let聲明變量b和一個var聲明變量b,都是會報錯的,Uncaught SyntaxError: Identifier ‘a' has already been declared 和 Uncaught SyntaxError: Identifier ‘b' has already been declared , 所以不能夠重復聲明同一個變量。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 新兴县| 南丹县| 昌邑市| 定远县| 扶风县| 惠水县| 温宿县| 长阳| 东宁县| 唐山市| 新河县| 宜州市| 洪江市| 措美县| 呈贡县| 沙坪坝区| 兴文县| 富源县| 砀山县| 措勤县| 尖扎县| 鹤壁市| 定襄县| 徐闻县| 安龙县| 喀喇沁旗| 元阳县| 高台县| 察哈| 太原市| 乌兰察布市| 长丰县| 溆浦县| 台江县| 苍山县| 伊春市| 潜山县| 双牌县| 武穴市| 瓦房店市| 高雄县|