ES6筆試題

1. 說出至少5個ES6的新特性,並簡述它們的作用。

1).let關鍵字,用於聲明只在塊級作用域起作用的變量
2).const關鍵字,用於聲明一個常量
3).解構賦值,一種新的變量賦值方式。常用來交換變量值,提取函數返回值,設置默認值等
4).for-of遍歷,可用來遍歷具有Iterator接口的數據結構(Array,String,Set,Map,arguments,NodeList等)
5).Set結構,存儲不重複的成員的集合
6).Map結構,鍵名可以是任何類型的鍵值對集合
7).Promise對象,更合理、規範地處理異步操作。
8).Class類,定義類和更簡便地實現類的繼承。


2. 使用結構賦值,實現兩個變量的值的交換(編程題)。

let a = 1;
let b = 2;
[a,b] = [b,a]

3. 使用解構賦值,完成函數的參數默認值(編程題)。

let test = (name='tom')=>{
    console.log(name);
}
test();//tom

4. 利用數組推導,計算出數組 [1,2,3,4] 每一個元素的平方並組成新的數組。(編程題)

let arr = [1,2,3,4];
var arr2 = [];
for(let i of arr){
    arr2.push(i*i);
}
console.log(arr2);//[1,4,9,16]

5. 使用模板字符串改寫下面的代碼。(ES5 to ES6改寫題)

let iam  = "我是";let name = "tom";let str  = "大家好,"+iam+name+",多指教。";

改:

let iam = "我是"; let name = "tom"; let str = `大家好,${iam+name},多指教`;

6. 用對象的簡潔表示法改寫下面的代碼。(ES5 to ES6改寫題)

let name = "tom";
let obj = {    
    "name":name,    
    "say":function(){
        alert('hello world');
    }
};

改:

let name = "tom";
let obj = {
    name,
    say(){
        alert('hello world');
    }
}

7. 用箭頭函數的形式改寫下面的代碼。(ES5 to ES6改寫題)

arr.forEach(function (v,i) {    console.log(i);    console.log(v);});
改:
arr.forEach((v,i)=>{
    console.log(i);
    console.log(v);
})

8. 閱讀下面的代碼,並用for…of改成它。(ES5 to ES6改寫題)

let arr = [11,22,33,44,55];
let sum = 0;
for(let i=0;i<arr.length;i++){
    sum += arr[i];
}
改:
let arr = [11,22,33,44,55];
let sum = 0;
for(let i of arr){
    sum+=i;
}

9. 關於Set結構,閱讀下面的代碼,回答問題。(代碼閱讀題)。

let s = new Set();
s.add([1]);
s.add([1]);
console.log(s.size);

問:打印出來的size的值是多少?

答:2,兩個[1]定義的是兩個不同的數組,在內存中的存儲地址不同,所以是不同的值


10. 關於Map結構,閱讀下面的代碼,回答問題。(代碼閱讀題)

let map = new Map();
map.set([1],"ES6系列");
let con = map.get([1]);
console.log(con);

問:打印出來的變量con的值是多少,爲什麼?

答:undefined。因爲set的時候用的數組[1]和get的時候用的數組[1]是分別兩個不同的數組,只不過它們元素都是1。它們是分別定義的兩個數組,並不是同一個值。
如果想達到預期的效果,你要保證get的時候和set的時候用同一個數組。比如:

let map = new Map();
let arr = [1];
map.set(arr,"ES6系列");
let con = map.get(arr);
console.log(con); //ES6系列

11. 定義一個類Animal,通過傳參初始化它的類型,如:“貓科類”。

它有一個實例方法:run,run函數體內容可自行定義。

class Animal{
    constructor(type){
        this.type=type;
    }
    run(){
        console.log('I can run');
    }
}

12. 基於第12題的Animal類,定義一個子類Cat並繼承Animal類。

初始化Cat類的暱稱name和年齡age。並擁有實例方法eat,eat函數體內容可自行定義。

class Cat extends Animal{
    constructor(type,name,age){
        super(type);
        this.name=name;
        this.age=age;
    }
    eat(){
        console.log('eat');
    }
}

13. 利用module模塊,實現兩個模塊A和B,A模塊導出變量name,age和say方法。

B模塊只導入變量name和say方法,並且重命名name爲nickname。
A模塊:

let name = 'tom';
let age = ()=>{
    console.log('age');
}
let say = ()=>{
    console.log('say');
}
export {name,age,say};

B模塊:

import {name as nickname,say} from 'A';
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章