无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

深入淺出 ES6 之 let 和 const 命令

2023-07-08 10:45 作者:wx19970108018  | 我要投稿

深入淺出 ES6 之 let 和 const 命令

let 和 const 聲明的變量只在代碼塊內(nèi)有效

{

let?a?=?10;

var?b?=?1;

}

a?//?ReferenceError:?a?is?not?defined.

b?//?1

不存在變量提升

變量一定要在聲明后使用,否則報錯

var?tmp?=?123;

if?(true)?{

tmp?=?'abc';?//?ReferenceError

let?tmp;

}

不允許重復(fù)聲明

//?報錯

function?()?{

let?a?=?10;

var?a?=?1;

}

塊級作用域

function?f()?{?console.log('I?am?outside!');?}

(function?()?{

if(false)?{

//?重復(fù)聲明一次函數(shù) f

function?f()?{?console.log('I?am?inside!');?}

}

f();

}());

//I?am?inside!?ES5?函數(shù)提升

//I?am?outside!?ES6?塊級作用域

const 命令

聲明一個只讀的常量,一旦聲明,常量的值就不能改變

一旦聲明變量,就必須立即初始化,不能留到以后賦值

let 命令、const 命令、class 命令聲明的全局變量,不屬于全局對象的屬性

var?a?=?1;

//?如果在 Node 的 REPL 環(huán)境,可以寫成 global.a

//?或者采用通用方法,寫成 this.a

window.a?//?1

let?b?=?1;

window.b?//?undefined

下面再單獨給大家介紹 ES6 之 const 命令

一直以來以 ecma 為核心的 js 始終沒有常量的概念,es6 則彌補(bǔ)了這一個缺陷;

const?foo='foo';

foo='bar';//TypeError:?Assignment?to?constant?variable.

上例聲明了一個基本類型的常量,如過試圖修改初始值則會報錯;如果是引用類型的值同樣適用,但是有一點需要注意,舉例說明:

const?foo=[];  

foo=[1];//Assignment?to?constant?variable.

正常報錯,沒毛病,再看:

const?foo=[1,2,3];

foo[1]=4;

console.log(foo)//[1,?4,?3]

這怎么沒報錯?而且還能修改成功??這兩個例子不一樣的地方在于前者是修改了指針(需熟悉 js?引用類型)對應(yīng)的內(nèi)容改變了,后者則不是指向依然沒變?但是指向?qū)ο蟮膬?nèi)容發(fā)生改變了,對于 foo 而言我只是一個指針負(fù)責(zé)指向?qū)?yīng)的對象?至于對象內(nèi)容是什么就不管我的事了所以可以修改;如果不想讓內(nèi)容也改變也行使用另一個方法;

const?foo=Object.freeze([1,2,3]);

foo[1]=4;

console.log(foo)//[1,?2,?3]

這樣就不用擔(dān)心被修改了;

深入淺出 ES6 之 let 和 const 命令的評論 (共 條)

分享到微博請遵守國家法律
诸城市| 水富县| 盐池县| 泰顺县| 河东区| 兴安盟| 班玛县| 武鸣县| 理塘县| 赫章县| 宣威市| 宁阳县| 庆安县| 梁山县| 遂平县| 遵义市| 西宁市| 扶风县| 南康市| 高淳县| 都兰县| 宁蒗| 渭源县| 达尔| 工布江达县| 嘉禾县| 新乡市| 会泽县| 香港 | 海安县| 嘉祥县| 阿巴嘎旗| 紫金县| 观塘区| 揭东县| 平武县| 桃园市| 时尚| 萨嘎县| 漯河市| 上蔡县|