• es6面试题


    1.es6声明变量:

    var、let、const之间的区别

    var声明变量可以重复声明,而let不可以重复声明
    var是不受限于块级的,而let是受限于块级
    var会与window相映射(会挂一个属性),而let不与window相映射
    var可以在声明的上面访问变量,而let有暂存死区,在声明的上面访问变量会报错
    const声明之后必须赋值,否则会报错
    const定义不可变的量,改变了就会报错
    const和let一样不会与window相映射、支持块级作用域、在声明的上面访问变量会报错

    2.

    使用箭头函数应注意什么?

    (1)用了箭头函数,this就不是指向window,而是父级(指向是可变的)
    (2)不能够使用arguments对象
    (3)不能用作构造函数,这就是说不能够使用new命令,否则会抛出一个错误
    (4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数

    3、ES6的模板字符串有哪些新特性?并实现一个类模板字符串的功能

    基本的字符串格式化。
    将表达式嵌入字符串中进行拼接。
    用${}来界定在ES5时我们通过反斜杠()来做多行字符串或者字符串一行行拼接。
    ES6反引号(``)就能解决类模板字符串的功能
    let name = 'web';
    let age = 10;
    let str = '你好,${name} 已经 ${age}岁了'
    str = str.replace(/${([^}]*)}/g,function(){
         return eval(arguments[1]);
       })
    console.log(str);//你好,web 已经 10岁了

    ECMAScript 6 怎么写 class ,为何会出现 class?

    ES6的class可以看作是一个语法糖,它的绝大部分功能ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法
    //定义类
    class Point { 
      constructor(x,y) { 
          //构造方法
           this.x = x; //this关键字代表实例对象
           this.y = y; 
      } toString() {
           return '(' + this.x + ',' + this.y + ')'; 
      }
    }

    Promise构造函数是同步执行还是异步执行,那么 then 方法呢?

    promise构造函数是同步执行的,then方法是异步执行的
     

    setTimeout、Promise、Async/Await 的区别

    事件循环中分为宏任务队列和微任务队列
    其中setTimeout的回调函数放到宏任务队列里,等到执行栈清空以后执行promise.then里的回调函数会放到相应宏任务的微任务队列里,等宏任务里面的同步代码执行完再执行async函数表示函数里面可能会有异步方法,await后面跟一个表达式
    async方法执行时,遇到await会立即执行表达式,然后把表达式后面的代码放到微任务队列里,让出执行栈让同步代码先执行

    forEach、for in、for of三者区别

    forEach更多的用来遍历数组
    for in 一般常用来遍历对象或json
    for of数组对象都可以遍历,遍历对象需要通过和Object.keys()
    for in循环出的是key,for of循环出的是value

    说一下es6的导入导出模块

    导入通过import关键字
    // 只导入一个
    import {sum} from "./example.js"
    // 导入多个
    import {sum,multiply,time} from "./exportExample.js"
    // 导入一整个模块
    import * as example from "./exportExample.js"
    
    导出通过export关键字
    //可以将export放在任何变量,函数或类声明的前面
    export var firstName = 'Michael';
    export var lastName = 'Jackson';
    export var year = 1958;
    //也可以使用大括号指定所要输出的一组变量
    var firstName = 'Michael';
    var lastName = 'Jackson';
    var year = 1958;
    export {firstName, lastName, year};
    //使用export default时,对应的import语句不需要使用大括号
    let bosh = function crs(){}
    export default bosh;
    import crc from 'crc';
    //不使用export default时,对应的import语句需要使用大括号
    let bosh = function crs(){}
    export bosh;
    import {crc} from 'crc';
     
  • 相关阅读:
    Spring service本类中方法调用另一个方法事务不生效问题(转载)
    JVM垃圾收集器
    LInkedHashMap实现最近被使用(LRU)缓存
    HTML模板与iframe框架
    Mybatis中常用sql语句
    从零到一: 后端接口文档
    Mysql日期处理
    Java-集合框架与数组的实际应用-组装Json字符串
    Mysql查询之 指定顺序排序
    Eclipse中复制项目后,怎么更改项目名等相关配置?
  • 原文地址:https://www.cnblogs.com/namehou/p/14911863.html
Copyright © 2020-2023  润新知