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

首頁 > 語言 > JavaScript > 正文

深入理解es6塊級作用域的使用

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

一.var 聲明與變量提升機(jī)制

在JavaScript中使用var定義一個變量,無論是定義在全局作用域函數(shù)函數(shù)的局部作用域中,都會被提升到其作用域的頂部,這也是JavaScript定義變量的一個令人困惑的地方。由于es5沒有像其它類C語言一樣的塊級作用域,因此es6增加了let定義變量,用來創(chuàng)建塊級作用域。

我們來看一個var定義變量的示例:

function  setName(){  if(condition){    var name = 'loho';    console.log(name);  }else{    console.log(name);  }}var student = 'eveningwater';setName();

以上代碼可以理解成如下:

var student;function setName(){  var name;  if(condition){    name = 'loho';    console.log(name);//loho  }else{   console.log(name);//undefined  }}student = 'eveningwater';setName();

二.塊級聲明

塊級聲明意在指定一個塊級作用域,使得塊級作用域中所定義的變量無法再全局被訪問到,塊級作用域也被稱為詞法作用域。

塊級作用域存在于兩個地方:

    函數(shù)內(nèi)部。 指定代碼塊中。(即"{"和"}"之間的區(qū)域)

1.let 聲明

let聲明同var聲明用法一致,唯一的區(qū)別在于,let聲明將變量限制在一個塊內(nèi),這樣就形成了一個塊級作用域,因此也就不會存在變量的提升了。

例如前面的示例,我們可以寫成如下:

let stundent = 'eveningwater';function setName(){  if(condition){    let name = 'loho';    console.log(name);//loho  }else{    //如果條件為false執(zhí)行到這里    console.log(name);//不返回值  }}setName();

2.禁止重聲明

在使用let定義變量之前如果已經(jīng)聲明了相同的變量,就會報(bào)錯。因此不能重復(fù)聲明變量。如以下示例:

var name = 'eveningwater';//報(bào)錯,重復(fù)聲明let name = 'loho';

當(dāng)然這兩個變量必須是在同一個作用域中,如果是不同作用域中,則不會報(bào)錯。但有可能會遮蔽第一次聲明的變量。如以下示例:

var name = 'eveningwater';if(condition){  //不會報(bào)錯  let name = 'loho';}

3.const聲明

使用const標(biāo)識符所聲明的變量必須要初始化,因此這個聲明的就是一個常量。如下例:

const name='eveningwater';//正確const name;//錯誤,未初始化

const聲明同let聲明一樣,也是創(chuàng)建了一個塊級作用域,在這個塊級作用域之外是無法訪問到所聲明的變量的。換句話說,就是const所聲明的變量不會有變量提升機(jī)制。如下例:

if(condition){    const name = 'eveningwater';    console.log(name);//'eveningwater'}//錯誤console.log(name);

同樣的const也不能重復(fù)聲明,如下例:

var name = 'eveningwater';//錯誤,不能重復(fù)聲明const name = 'loho';            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 稷山县| 军事| 阿克陶县| 长武县| 鹰潭市| 洛扎县| 清丰县| 贵州省| 胶州市| 钦州市| 汉阴县| 彭阳县| 阿勒泰市| 获嘉县| 鄢陵县| 柏乡县| 梁河县| 电白县| 大石桥市| 伊金霍洛旗| 安塞县| 临沂市| 贡山| 平塘县| 崇礼县| 唐河县| 武胜县| 北宁市| 秦安县| 阿城市| 湖南省| 古浪县| 门头沟区| 广昌县| 五寨县| 永宁县| 浦东新区| 时尚| 民县| 江门市| 九台市|