前端面试——ES6

https://blog.csdn.net/WJ930708/article/details/79904277

https://blog.csdn.net/u011135887/article/details/79199798

1. JavaScript中基本数据类型与引用数据类型 
       JavaScript 中共有 6 种基本数据类型:Undefined、Null、Boolean、Number、String、Symbol (new in ES 6) 

  • 基本数据类型的值是按值访问的,引用类型的值是按引用访问的.
  • 基本类型的比较是它们的值的比较,引用类型的比较是引用的比较. 
  • == : 只进行值的比较,=== : 不仅进行值得比较,还要进行数据类型的比较.
  • 基本类型的变量是存放在栈内存(Stack)里的,引用类型的值是保存在堆内存(Heap)中的对象(Object)


2. let,const
     let+const块级作用域,有了块级作用域,通常不存在变量提升现象。const定义常量值,不能够重新赋值,如果值是一个对象,可以改变对象里边的属性值。关于let的几个知识点:

  • let声明的变量具有块级作用域
  • let声明的变量不能通过window.变量名进行访问
  • 形如for(let x..)的循环是每次迭代都为x创建新的绑定

3. Promise的理解与使用 
     promise对象有两个特点:(1)对象的状态不受外界外界影响;(2)一旦状态改变,就不会再改变,任何时候都可以得到这个结果。

  • promise对象代表一个异步操作,有三种状态;pending(进行中),fulfilled(已成功)和rejected(已失败)
  • 只有异步操作的结果,可以决定当前是哪一种状态promise的状态改变,只有两种可能:从pending变为fulfilled和从pending变成rejected.只要这两种状态情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为resolved(已定型).
  • 基本用法 

                         new Promise( function(resolve, reject) { ... } ) 
    promise接受一个函数作为参数,该函数的两个参数分别是resolve和reject.它们是两个函数,由JavaScript引擎提供,不用自己部署.
then方法 。Promise实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的,它的作用是是为Promise实例添加状态改变时的回调函数.then方法的第一个参数是resolved状态的回调函数,第二个参数(可选)是rejected状态的回调函数.并且then方法返回的是一个新的Promise实例。

4.模板字符串

      在以往的时候我们在连接字符串和变量的时候需要使用+来实现字符串的拼接,但是有了模版语言后我们可以使用`string${varible}string`这种进行连接。这里需要注意的两个知识点:

      ${字符串变量} 和 反引号

5.module体系
      历史上js是没有module体系,无法将一个大程序拆分成一些小的程序。ES6中module体系通过import和export实现。

6.Class的用法

      Class语法相对原型、构造函数、继承更接近传统语法,它的写法能够让对象原型的写法更加清晰、面向对象编程的语法更加通俗。contructor内部定义的方法和属性是实例对象自己的,不能通过extends 进行继承。在ES6中,子类的构造函数必须含有super()函数,super表示的是调用父类的构造函数,虽然是父类的构造函数,但是this指向的却是Cat。

7.Set数据结构

    Set本身是一个构造函数,类似于数组,符合数学上集合的概念,即元素没有重复。可以使用Set方便的实现数组去重复。

8.箭头函数

(1)特点

  • 不需要function关键字来创建函数
  • 省略return关键字
  • 继承当前上下文的 this 关键字
  • 当箭头函数有且仅有一个参数的时候,可以省略掉括号

(2)注意事项

  • 在使用=>定义函数的时候,this的指向是定义时所在的对象,而不是使用时所在的对象
  • 不能够用作构造函数,这就是说,不能够使用new命令,否则就会抛出一个错误
  • 不能够使用arguments对象
  • 不能使用yield命令

9.扩展的对象功能

  • 对象初始化简写,当对象属性的名字和赋值的变量相等,可以只写一个。

  • 为对象添加方法可以省略function关键字,只使用()即可

10.闭包的概述,举例说明

      要理解闭包,首先要理解变量作用域。变量的的作用域无非就是两种:全局变量和局部变量。JavaScript的特殊之处就在于函数内部可以直接读取全局变量;另一方面,在函数外部自然无法读取函数内的局部变量。处于种种原因,我们有时候需要得到函数内的局部变量,但是正常情况下,这是办不到的,只有通过变通方法才能实现。在函数内部,再定义一个函数:由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成”定义在一个函数内部的函数”。所以本质上,闭包就是将函数内部和函数外部连接起来一座桥梁。下图中的f2就是一个闭包函数。

?11.this对象不理解

猜你喜欢

转载自blog.csdn.net/qq_21428081/article/details/82557773