前端面试纪实(三):ES6的const和let
1 前言
由于我在简历中写我了解es6,所以杭州有赞的面试官问了我很多es6的问题
es6是JS的国际标准化组织在15年推出的新版本JS
es6的详细介绍可以看阮一峰老师的开源书籍:
由于主要内容来自阮一峰老师的开源书籍,所以本篇文章被我标记为转载。
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;//可执行
上一篇:
Java基础知识总结(2021版)
下一篇:
对线程安全的理解-浙商银行面试