ES6面試題總結(jié)(2018-06-22)

1.說(shuō)出至少5個(gè)ES6的新特性,并簡(jiǎn)述它們的作用。(簡(jiǎn)答題)

答:
?????1、let關(guān)鍵字,用于聲明只在塊級(jí)作用域起作用的變量。
?????2、const關(guān)鍵字,用于聲明一個(gè)常量。
?????3、解構(gòu)賦值,一種新的變量賦值方式。常用于交換變量值,提取函數(shù)返回值,設(shè)置默認(rèn)值。
?????4、Symbol數(shù)據(jù)類型,定義一個(gè)獨(dú)一無(wú)二的值。
?????5、Proxy代理,用于編寫(xiě)處理函數(shù),來(lái)攔截目標(biāo)對(duì)象的操作。
?????6、for...of遍歷,可遍歷具有iterator 接口的數(shù)據(jù)結(jié)構(gòu)。
?????7、Set結(jié)構(gòu),存儲(chǔ)不重復(fù)的成員值的集合。
?????8、Map結(jié)構(gòu),鍵名可以是任何類型的鍵值對(duì)集合。
?????9、Promise對(duì)象,更合理、規(guī)范地處理異步操作。
?????10、Class類定義類和更簡(jiǎn)便地實(shí)現(xiàn)類的繼承。
?????...

2.使用解構(gòu)賦值,實(shí)現(xiàn)兩個(gè)變量的值的交換(編程題)。

答:

let a = 1;
let b = 2;
[a,b] = [b,a];
3.使用解構(gòu)賦值,完成函數(shù)的參數(shù)默認(rèn)值(編程題)。
function demo({name="王德發(fā)"}){
     console.log(name);
}
4.利用數(shù)組推導(dǎo),計(jì)算出數(shù)組 [1,2,3,4] 每一個(gè)元素的平方并組成新的數(shù)組。(編程題)
var arr1 = [1, 2, 3, 4];
var arr2 = [for (i of arr1) i * i];
console.log(arr2);
5.使用模板字符串改寫(xiě)下面的代碼。(ES5 to ES6改寫(xiě)題)
let iam  = "我是";
let name = "王德發(fā)";
let str  = "大家好,"+iam+name+",多指教。";

改:

let iam  = `我是`;
let name = `王德發(fā)`;
let str  = `大家好,${iam+name},多指教。`;
6.用對(duì)象的簡(jiǎn)潔表示法改寫(xiě)下面的代碼。(ES5 to ES6改寫(xiě)題)
let name = "王德發(fā)";
let obj = {
    "name":name,
    "say":function(){
        alert('hello world');
    }
};

改:

let name = "王德發(fā)";
let obj = {
    name,
    say(){
        alert('hello world');
    }
};
7.用箭頭函數(shù)的形式改寫(xiě)下面的代碼。(ES5 to ES6改寫(xiě)題)
arr.forEach(function (v,i) {
    console.log(i);
    console.log(v);
});

改:

arr.forEach((v,i) => {
    console.log(i);
    console.log(v);
});
8.設(shè)計(jì)一個(gè)對(duì)象,鍵名的類型至少包含一個(gè)symbol類型,并且實(shí)現(xiàn)遍歷所有key。(編程題)

答:

let name = Symbol('name');
let product = {
    [name]:"洗衣機(jī)",
    "price":799
};
Reflect.ownKeys(product);
9.有一本書(shū)的屬性為:{“name”:“《ES6基礎(chǔ)系列》”, ”price”:56 };要求使用Proxy對(duì)象對(duì)其進(jìn)行攔截處理,name屬性對(duì)外為“《ES6入門到懵逼》”,price屬性為只讀。(練習(xí)題)

答:

let book  = {"name":"《ES6基礎(chǔ)系列》","price":56 };
let proxy = new Proxy(book,{
    get:function(target,property){
        if(property === "name"){
            return "《入門到懵逼》";
        }else{
            return target[property];
        }
    },
    set:function(target,property,value){
        if(property === 'price'){
            target[property] = 56;
        }
    }
});
10.閱讀下面的代碼,并用for...of改成它。(ES5 to ES6改寫(xiě)題)
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(value of arr){
    sum += value;
}
11.關(guān)于Set結(jié)構(gòu),閱讀下面的代碼,回答問(wèn)題。(代碼閱讀題)。
let s = new Set();
s.add([1]);
s.add([1]);
console.log(s.size);

問(wèn):打印出來(lái)的size的值是多少?
答:2。如果回答為1的,多必是記得Set結(jié)構(gòu)是不會(huì)存儲(chǔ)相同的值。其實(shí)在這個(gè)案例中,兩個(gè)數(shù)組[1]并不是同一個(gè)值,它們分別定義的數(shù)組,在內(nèi)存中分別對(duì)應(yīng)著不同的存儲(chǔ)地址,因此并不是相同的值。所以都能存儲(chǔ)到Set結(jié)構(gòu)中,size為2。

12.關(guān)于Map結(jié)構(gòu),閱讀下面的代碼,回答問(wèn)題。(代碼閱讀題)
let map = new Map();
map.set([1],"ES6系列");

let con = map.get([1]);
console.log(con);

問(wèn):打印出來(lái)的變量con的值是多少,為什么?
答:undefined。因?yàn)閟et的時(shí)候用的數(shù)組[1]和get的時(shí)候用的數(shù)組[1]是分別兩個(gè)不同的數(shù)組,只不過(guò)它們?cè)囟际?。它們是分別定義的兩個(gè)數(shù)組,并不是同一個(gè)值。新手避免在這里犯錯(cuò)。如果想達(dá)到預(yù)期的效果,你要保證get的時(shí)候和set的時(shí)候用同一個(gè)數(shù)組。比如:

let map = new Map();
let arr = [1];
map.set(arr,"ES6系列");
let con = map.get(arr);
console.log(con); //ES6系列
13.定義一個(gè)類Animal,通過(guò)傳參初始化它的類型,如:“貓科類”。它有一個(gè)實(shí)例方法:run,run函數(shù)體內(nèi)容可自行定義。

答案:

class Animal {
    constructor(type){
        this.type = type;
    }

    run(){
        alert('I can run');
    }
}
14.基于第12題的Animal類,定義一個(gè)子類Cat并繼承Animal類。初始化Cat類的昵稱name和年齡age。并擁有實(shí)例方法eat,eat函數(shù)體內(nèi)容可自行定義。

答:

class Cat extends Animal{
    constructor(type,name,age){
        super(type);
        this.name = name;
        this.age = age;
    }
   
    eat(){
        alert('I am eating');
    }
}
15.利用module模塊,實(shí)現(xiàn)兩個(gè)模塊A和B,A模塊導(dǎo)出變量name,age和say方法。B模塊只導(dǎo)入變量name和say方法,并且重命名name為nickname。
//-----模塊A-------//
var name = "kitty";
var age = 15;
var say = function(){
    //....
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,632評(píng)論 1 32
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 30,217評(píng)論 8 265
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,643評(píng)論 18 399
  • 一、ES6簡(jiǎn)介 ? 歷時(shí)將近6年的時(shí)間來(lái)制定的新 ECMAScript 標(biāo)準(zhǔn) ECMAScript 6(亦稱 ...
    一歲一枯榮_閱讀 6,208評(píng)論 8 25
  • 在以往人們遇到不順心的事情都會(huì)說(shuō)自己這是走了霉運(yùn)了,而在現(xiàn)代人們遇到不順心的事情都會(huì)說(shuō)這特么絕逼是遇到水逆了。 所...
    奇葩菇?jīng)?/span>閱讀 879評(píng)論 0 2

友情鏈接更多精彩內(nèi)容