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

首頁 > 語言 > JavaScript > 正文

工作中常用到的ES6語法

2024-05-06 15:30:41
字體:
供稿:網(wǎng)友

什么是ES6?

  ECMAScript 6(以下簡稱ES6)是JavaScript語言的下一代標(biāo)準(zhǔn),已經(jīng)在2015年6月正式發(fā)布了。Mozilla公司將在這個(gè)標(biāo)準(zhǔn)的基礎(chǔ)上,推出JavaScript 2.0。

  ECMAScript和JavaScript到底是什么關(guān)系?很多初學(xué)者會(huì)感到困惑,簡單來說,ECMAScript是JavaScript語言的國際標(biāo)準(zhǔn),JavaScript是ECMAScript的實(shí)現(xiàn)。

一、let和const

在JavaScript中咱們以前主要用關(guān)鍵var來定義變量,ES6之后,新增了定義變量的兩個(gè)關(guān)鍵字,分別是let和const。

對(duì)于變量來說,在ES5中var定義的變量會(huì)提升到作用域中所有的函數(shù)與語句前面,而ES6中l(wèi)et定義的變量則不會(huì),let聲明的變量會(huì)在其相應(yīng)的代碼塊中建立一個(gè)暫時(shí)性死區(qū),直至變量被聲明。

let和const都能夠聲明塊級(jí)作用域,用法和var是類似的,let的特點(diǎn)是不會(huì)變量提升,而是被鎖在當(dāng)前塊中。

一個(gè)非常簡單的例子:

function test() {if(true) { console.log(a)//TDZ,俗稱臨時(shí)死區(qū),用來描述變量不提升的現(xiàn)象 let a = 1}}test() // a is not definedfunction test() { if(true) {  let a = 1 } console.log(a)} test() // a is not defined

唯一正確的使用方法:先聲明,再訪問。

function test() { if(true) {  let a = 1  console.log(a) }}test() // 1

const

聲明常量,一旦聲明,不可更改,而且常量必須初始化賦值。

const雖然是常量,不允許修改默認(rèn)賦值,但如果定義的是對(duì)象Object,那么可以修改對(duì)象內(nèi)部的屬性值。

const type = { a: 1}type.a = 2 //沒有直接修改type的值,而是修改type.a的屬性值,這是允許的。console.log(type) // {a: 2}

const和let的異同點(diǎn)

相同點(diǎn):const和let都是在當(dāng)前塊內(nèi)有效,執(zhí)行到塊外會(huì)被銷毀,也不存在變量提升(TDZ),不能重復(fù)聲明。

不同點(diǎn):const不能再賦值,let聲明的變量可以重復(fù)賦值。
const實(shí)際上保證的,并不是變量的值不得改動(dòng),而是變量指向的那個(gè)內(nèi)存地址所保存的數(shù)據(jù)不得改動(dòng)。對(duì)于簡單類型的數(shù)據(jù)(數(shù)值、字符串、布爾值),值就保存在變量指向的那個(gè)內(nèi)存地址,因此等同于常量。但對(duì)于復(fù)合類型的數(shù)據(jù)(主要是對(duì)象和數(shù)組),變量指向的內(nèi)存地址,保存的只是一個(gè)指向?qū)嶋H數(shù)據(jù)的指針,const只能保證這個(gè)指針是固定的(即總是指向另一個(gè)固定的地址),至于它指向的數(shù)據(jù)結(jié)構(gòu)是不是可變的,就完全不能控制了。因此,將一個(gè)對(duì)象聲明為常量必須非常小心。

塊級(jí)作用域的使用場景

除了上面提到的常用聲明方式,我們還可以在循環(huán)中使用,最出名的一道面試題:循環(huán)中定時(shí)器閉包的考題
在for循環(huán)中使用var聲明的循環(huán)變量,會(huì)跳出循環(huán)體污染當(dāng)前的函數(shù)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 师宗县| 克东县| 鹤峰县| 交城县| 内丘县| 马龙县| 林州市| 无锡市| 吉安县| 梁平县| 泰州市| 许昌县| 辽阳市| 青州市| 九龙城区| 重庆市| 南皮县| 全椒县| 新沂市| 交城县| 石林| 炉霍县| 防城港市| 汝阳县| 安国市| 句容市| 武隆县| 手机| 鹿邑县| 米泉市| 鄱阳县| 通州市| 金堂县| 定安县| 靖江市| 南江县| 灵石县| 青岛市| 蓬莱市| 隆安县| 肃南|