前端面试题目——JavaScript中 es6的新特性的总结

1、let、var、const

(变量提升、块级作用域、暂时性死区、重复声明、值可以改变) let命令声明变量tmp之前,都属于变量tmp的“死区”。

① 什么是变量提升

console.log(a);
var a = 1;// 输出 undefined
 在代码中 使用 var 来声明变量的时候,会提到当前作用域的顶端,而赋值操作在原处不变
上面的两行代码相当于
var a;//(变量的声明)
console.log(a);
a = 1;

② 块级作用域(定义、作用)

为什么用块级作用域

内层变量可能会覆盖外层的变量; 用来计数的循环变量泄露为全局变量;

3、const定义的对象属性是否可以改变?

可以改变 原因:对象是引用类型的,const定义的对象t中保存的是指向对象t的指针,这里的“不变”指的是指向对象的指针不变,而修改对象中的属性并不会让指向对象的指针发生变化,所以用const定义对象,对象的属性是可以改变的。 基本数据类型——存储在栈区 Object——具体对象存储在堆区,栈区存放堆的地址

2、箭头函数

① 箭头函数

特性:(没有构造函数能力、this指向问题)

不能为箭头函数命名:箭头函数是函数表达式,是匿名,用完就扔了,所以没有构造函数的构造能力,内部没有this指向,而是继承父类的this指向

② 回调函数

理解了 首先定义一个函数,这个函数的特点:你定义了,但是并不会马上执行,而是要作为参数传入另一个函数 在使用另一个函数的时候,加载参数,这时候会 回调你之前定义的函数(实现了异步?)

③ 立即执行函数

作用 页面加载完成后只执行一次的设置函数。 将设置函数中的变量包裹在局部作用域中,不会泄露成全局变量。
(function () {
          
   
    console.log("app")
})()

④ 严格模式

什么是严格模式

开启严格模式

为脚本开启严格模式

只为函数开启严格模式

严格模式下的变化

严格模式下的缺点

3、解构

ES6的解构说白了就是能够让我们一次性取到多个值:分为数组解构和对象解构 就是一次性创建多个变量

还可以跳过一些元素解构
var [,,three] = [1,2,3]; // three=3
var {
          
   name:nameA,age:ageA}={
          
   name:"Jhon",age:23};// nameA="Jhon",ageA=23
如果属性名和变量名一致时,可以缩写
var {
          
   name,age}={
          
   name:"Jhon",age:23};// name="Jhon",age=23

4、promise

5、set()和map()

经验分享 程序员 微信小程序 职场和发展