最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入淺出ES6之let和const命令

 更新時間:2016年08月25日 15:49:08   投稿:mrr  
這篇文章主要介紹了ES6中l(wèi)et和const命令的相關(guān)資料,非常不錯,具有參考借鑒價值,對es6 let const相關(guān)知識感興趣的朋友一起看下吧

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則彌補了這一個缺陷;

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而言我只是一個指針負責(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)心被修改了;

相關(guān)文章

最新評論

布拖县| 遵义县| 土默特左旗| 青州市| 东丰县| 大埔区| 延寿县| 高清| 庄浪县| 盐源县| 沙田区| 安阳县| 澄城县| 绥化市| 阿巴嘎旗| 南岸区| 定襄县| 忻州市| 龙岩市| 科技| 竹山县| 崇义县| 赤水市| 三原县| 太原市| 巴塘县| 会昌县| 怀来县| 云浮市| 濮阳县| 温州市| 青冈县| 德昌县| 临西县| 湖南省| 明溪县| 林西县| 桐梓县| 富平县| 明星| 敖汉旗|