题目1

1
2
3
4
5
在下列Promise所提供的方法中,用来向成功或者失败的回调函数队列中添加回调函数的是( )
A: done
B: fail
C: always
D: then
  • 答案

    • D
  • 解析

    • A没有,B也不存在,C为一个扩展(不管有没有成功失败都会调用),D的回调有二个参数,第一个是成功回调,第二个是失败回调

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      <script>
      const promise1 = new Promise((resolve, reject) => {
      resolve("事情解决");
      });
      //promise对象.then(成功回调,失败回调);
      promise1.then((value) => {
      console.log("我是成功回调", value);
      }, (reason) => {
      console.log("我是失败回调", value);
      })
      </script>
    • 至于C选项,是一个扩展,可以安装npm ``installes6-promise-always –save

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      //always(data, error) data: resolve的数据。 error: reject的数据。
      require("es6-promise-always")

      axios.get("/").then(()=>{

      //处理逻辑

      }).always(()=>{

      console.log("请求结束")

      hideLoading();

      })
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      //Promise杂烩示例
      axios("www.baidu.com").then(function(data) {
      if(50>10) {
      return data.json();
      }
      throw new TypeError("出错了!");
      })
      .then(function(data) { console.log("我要处理返回的数据") })
      .catch(function(error) { console.log("失败原因",error); })
      .finally(function() { console.log("不管怎么样我都要执行") });

题目2

1
2
3
4
5
6
7
8
9
10
以下符合 ES6 写法的有
A: class Foo
{
constructor() {return Object.create(null);}
}
Foo()
B: var m=1;
export m;
C: export var firstName=’Michael’;
D: 在A模块中export{readFile}后,在B模块中import readFile from ‘A’可以获取到readFile
  • 答案

    • C
  • 解析

    • A: Fun() 把 class 当成方法来用? var fun = new Func() 这样用就对了

    • B :暴露方式不对

      1
      2
      3
      4
      5
      6
      1. 分别暴露 export let length="100";export function add(){console.log("干饭")}
      引入: export {length,add} from "./module.js";
      2. 统一暴露 export {暴露的数据键值对} 比如:var a = 10; export { a };
      引入: export {length,add} from "./module.js";
      3. 默认暴露 export default 暴露的数据,比如export default var a = 10;
      引入:import a from "./module.js";
    • C: 正确的,分别暴露

    • D: 缺少了 { } 符号,正确应该为import {readFile} from ‘A’

export文档 import文档

题目3

1
2
3
4
5
6
7
以下代码执行后,array 的结果是?
let array = [,1,,2,,3];
array = array.map((i) => ++i)
A: [,2,,3,,4]
B: [NaN,2,NaN,3,NaN,4]
C: [1,2,1,3,1,4]
D: [null,2,null,3,null,4]
  • 答案
    • A
  • 解析
    • orEach(), filter(), reduce(), every() 和some()都会跳过空位。
    • map()会跳过空位,但会保留这个值。
    • join()和toString()会将空位视为undefined,而undefined和null会被处理成空字符串。
    • ES6 中都会将空位当做undefined

题目4

1
2
3
4
5
以下哪些方法会返回一个数组?(多选)
A: Object.keys()
B: String.prototype.split()
C: Array.prototype.join()
D: Promise.all()
  • 答案

    • A,B
  • 解析

    • A: Object.keys()返回对象的key值所组成的数组(key要为可枚举)
    • B: String.prototype.split()分割字符串,返回分割后的数组
    • C: Array.prototype.join()方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。
    • D: Promise.all(iterable) 方法返回一个 Promise 实例,此实例在 iterable 参数内所有的 promise 都“完成(resolved)”或参数中不包含 promise 时回调完成(resolve);
      如果参数中 promise 有一个失败(rejected),此实例回调失败(reject),失败原因的是第一个失败 promise 的结果。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
    var obj = {
    name:"李白",
    age:1000,
    };
    Object.defineProperty(obj,"sex",{
    value:"男",
    enumerable:false
    });
    console.log(obj);//{name: '李白', age: 1000, sex: '男'}
    console.log(Object.keys(obj));//['name', 'age']
    </script>