日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

es6之块级作用域

發(fā)布時(shí)間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 es6之块级作用域 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

塊級(jí)作用域

在es6(es2015)之前, 也就是es5中,作用域只有兩種:
1. 全局作用域
2. 函數(shù)作用域
正因?yàn)橹挥羞@兩種作用域, 所以存在 "變量提升" 現(xiàn)象, 即變量可以在聲明之前使用,值為undefind.如下

console.log(tem);//輸出undefined var tem = 6;

上面代碼中,變量 tem 會(huì)發(fā)生變量提升,即腳本開始運(yùn)行時(shí),變量foo已經(jīng)存在了,但是沒有值,所以會(huì)輸出undefined。

在es6中新增了塊級(jí)作用域,新增的塊級(jí)作用域通過 let 和 const 屬性來體現(xiàn):

console.log(tem);//輸出undefined let tem = 6;

下面介紹一下 let 和 const

let 用法和 var 類似, 但是let聲明的變量只在塊級(jí)作用域內(nèi)有效

function fun1() {let n = 5;if (true) {let n = 10;}console.log(n); // 5 }

const 聲明的是一個(gè)只讀的常量.一旦聲明, 常量的值就不能再改變,const一旦聲明變量,就必須立即初始化,不能留到以后賦值。

const PI = 3.14; PI // 3.14 PI = 3; // TypeError: Assignment to constant variable.

let和const有以下共同點(diǎn)

1.只在聲明的塊級(jí)作用域內(nèi)有效
2.不存在變量提升
3.存在暫時(shí)性死區(qū)

if (true) {n = 'abc'; // ReferenceError let n; }

ES6明確規(guī)定,如果區(qū)塊中存在let和const命令,這個(gè)區(qū)塊對(duì)這些命令聲明的變量,從一開始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會(huì)報(bào)錯(cuò)。
在代碼塊內(nèi),使用let 或 const命令聲明變量之前,該變量都是不可用的。這在語法上,稱為“暫時(shí)性死區(qū)”(temporal dead zone,簡稱 TDZ)。

4.不可重復(fù)聲明, let 和 const都不允許在同一作用域內(nèi)重復(fù)聲明同一個(gè)變量

if(true) {let a = 10;var a = 1; } //Identifier 'a' has already been declared if(true) {let a = 10;let a = 1; } //Identifier 'a' has already been declared if(true) {const a = 10;let a = 1; } //Identifier 'a' has already been declared

?

轉(zhuǎn)載于:https://www.cnblogs.com/yuqing6/p/6777746.html

總結(jié)

以上是生活随笔為你收集整理的es6之块级作用域的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。