[ES6-重点纪录] 宣告方式 let、const

ES6 新的两种宣告方式,主要是用来取代var旧式宣告,新的方式让变数本身涉及的範围变小了,改善了许多潜在问题。

let 为变数宣告const 为常数宣告
let es6 = 'Hello World';const Pi = 3.14;

let 变数宣告

let宣告方式类似于var

变数不允许被重複宣告

只受区块作用域(Block Scope)内影响,意思是变数的作用範围只在大括号{}中有效

这解决了var会自动宣告为全域变数的问题所以let非常适合使用在for迴圈中
// let 只会在区块作用域内有效if (true) {    let a = 10;    var b = 20;}console.log(a); // ReferenceError: a is not defined.console.log(b); // 20// 使用 var 在 for 迴圈上 i 会自动成为全域变数for (var i = 0; i < 5; i++) {    setTimeout(function () {        console.log('Times: ' + i);    }, 100);}// 产生 'Times: 5' 5 次相同的结果// 因为函数里的 i 会指向同一个全域变数 i (最终改变的结果)// 使用 let 在 for 迴圈上for (let i = 0; i < 5; i++) {    setTimeout(function () {        console.log('Times: ' + i);    }, 100);}// 产生 'Times: 0 ~ 4' 5 次不同的结果
立即执行函数表达式(IIFE)可以不必再使用了因为变数不会汙染到全域环境中
// IIFE 写法(function () {    var tmp = 'Hi';    // ...}());// 区块作用域写法,一样可以达到相同效果{    let tmp = 'Hi';    // ...}

const 常数宣告

当宣告为一般的数据类型 (string、number、boolean) 时

一定要赋予值不能再被修改

当宣告为物件或阵列 (object、array) 时

内层的属性是可以被修改或新增的代表const是指向固定的记忆体位址,所以与本身内在的属性无关,只是无法再让本身指向另一个位址(变数)而已
const school = {    name: 'Hello World',    student: 10};// 物件本身内的属性是可以被修改或新增的 school.name = 'ES6';school.teacher = 3;console.log(school); // {//   name: 'ES6',//   student: 10,//   teacher: 3// }// 当被宣告为常数的物件时,就不能再去指向其他值了school = {}; // TypeError: Assignment to constant variable.

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章