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

首頁 > 編程 > JavaScript > 正文

深入淺出ES6之let和const命令

2019-11-20 09:09:13
字體:
來源:轉載
供稿:網友

let和const聲明的變量只在代碼塊內有效

{let a = 10;var b = 1;}a // ReferenceError: a is not defined.b // 1

不存在變量提升

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

var tmp = 123;if (true) {tmp = 'abc'; // ReferenceErrorlet tmp;}

不允許重復聲明

// 報錯function () {let a = 10;var a = 1;}

塊級作用域

function f() { console.log('I am outside!'); }(function () {if(false) {// 重復聲明一次函數ffunction f() { console.log('I am inside!'); }}f();}());//I am inside! ES5 函數提升//I am outside! ES6 塊級作用域

const命令

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

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

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

var a = 1;// 如果在Node的REPL環境,可以寫成global.a// 或者采用通用方法,寫成this.awindow.a // 1let 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 引用類型)對應的內容改變了,后者則不是指向依然沒變 但是指向對象的內容發生改變了,對于foo而言我只是一個指針負責指向對應的對象 至于對象內容是什么就不管我的事了所以可以修改;如果不想讓內容也改變也行使用另一個方法;

const foo=Object.freeze([1,2,3]);foo[1]=4;console.log(foo)//[1, 2, 3]

這樣就不用擔心被修改了;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呈贡县| 阳泉市| 新丰县| 龙里县| 慈利县| 洛南县| 德保县| 台南县| 乐清市| 永城市| 台北县| 荥阳市| 紫云| 阿坝县| 洞口县| 简阳市| 手机| 虹口区| 顺昌县| SHOW| 岑巩县| 白城市| 城固县| 嘉荫县| 即墨市| 阿克| 兴城市| 定陶县| 延长县| 克拉玛依市| 枞阳县| 永靖县| 修文县| 定远县| 庆阳市| 建始县| 达日县| 邯郸市| 红桥区| 灌南县| 梁山县|