前端面试纪实(三):ES6的const和let

1 前言

由于我在简历中写我了解es6,所以杭州有赞的面试官问了我很多es6的问题

es6是JS的国际标准化组织在15年推出的新版本JS

es6的详细介绍可以看阮一峰老师的开源书籍:
http://es6.ruanyifeng.com/#docs/intro

由于主要内容来自阮一峰老师的开源书籍,所以本篇文章被我标记为转载。

2 let和var的区别

2.1 let不存在var的变量提升
什么是变量提升,即JS变量可以先使用,后声明。(这在一般的语言:Java, C中不存在的)
如果var声明的变量在之前被使用,是不会报错的,当然那时候的值是undefined
// var 的情况
console.log(foo); // 输出undefined
var foo = 2;
let声明的变量提前被使用的话,则会报错
// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;
2.2 暂时性死区

暂时性死区=》新增块级作用域

只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。

var tmp = 123;

if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}

总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

2.3 不允许重复声明
不允许重复声明
let不允许在相同作用域内,重复声明同一个变量。

// 报错
function () {
  let a = 10;
  var a = 1;
}

// 报错
function () {
  let a = 10;
  let a = 1;
}

3 const

const声明的是一个常量

与let相同,都存在从2.1到2.3的3点特征(这点在面试时候竟然回答上来了,我自己都觉得惊奇)

对于引用类型,const指向的是一个内存地址,所以只能保证指针固定。
对于一个const数组而言,我们可以往数组里添加内容

比如这样:

const a={};
a.b='c';//可执行
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值