ES6面試題總結(2018-06-22)
1.說出至少5個ES6的新特性,並簡述它們的作用。(簡答題)
答:
1、let關鍵字,用於宣告只在塊級作用域起作用的變數。
2、const關鍵字,用於宣告一個常量。
3、結構賦值,一種新的變數賦值方式。常用於交換變數值,提取函式返回值,設定預設值。
4、Symbol資料型別,定義一個獨一無二的值。
5、Proxy代理,用於編寫處理函式,來攔截目標物件的操作。
6、for...of遍歷,可遍歷具有iterator 介面的資料結構。
7、Set結構,儲存不重複的成員值的集合。
8、Map結構,鍵名可以是任何型別的鍵值對集合。
9、Promise物件,更合理、規範地處理非同步操作。
10、Class類定義類和更簡便地實現類的繼承。
...
2.使用結構賦值,實現兩個變數的值的交換(程式設計題)。
答:
let a = 1;let b = 2; [a,b] = [b,a];
3.使用結構賦值,完成函式的引數預設值(程式設計題)。
function demo({name="王德發"}){ console.log(name); }
4.利用陣列推導,計算出陣列 [1,2,3,4] 每一個元素的平方並組成新的陣列。(程式設計題)
var arr1 = [1, 2, 3, 4];var arr2 = [for (i of arr1) i * i];console.log(arr2);
5.使用模板字串改寫下面的程式碼。(ES5 to ES6改寫題)
let iam = "我是";let name = "王德發";let str = "大家好,"+iam+name+",多指教。";
改:
let iam = `我是`;let name = `王德發`;let str = `大家好,${iam+name},多指教。`;
6.用物件的簡潔表示法改寫下面的程式碼。(ES5 to ES6改寫題)
let name = "王德發";let obj = { "name":name, "say":function(){ alert('hello world'); } };
改:
let name = "王德發";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.設計一個物件,鍵名的型別至少包含一個symbol型別,並且實現遍歷所有key。(程式設計題)
答:
let name = Symbol('name');let product = { [name]:"洗衣機", "price":799};Reflect.ownKeys(product);
9.有一本書的屬性為:{“name”:“《ES6基礎系列》”, ”price”:56 };要求使用Proxy物件對其進行攔截處理,name屬性對外為“《ES6入門到懵逼》”,price屬性為只讀。(練習題)
答:
let book = {"name":"《ES6基礎系列》","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改寫題)
let arr = [11,22,33,44,55];let sum = 0;for(let i=0;i改:
let arr = [11,22,33,44,55];let sum = 0;for(value of arr){ sum += value; }11.關於Set結構,閱讀下面的程式碼,回答問題。(程式碼閱讀題)。
let s = new Set(); s.add([1]); s.add([1]);console.log(s.size);問:列印出來的size的值是多少?
答:2。如果回答為1的,多必是記得Set結構是不會儲存相同的值。其實在這個案例中,兩個陣列[1]並不是同一個值,它們分別定義的陣列,在記憶體中分別對應著不同的儲存地址,因此並不是相同的值。所以都能儲存到Set結構中,size為2。12.關於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系列13.定義一個類Animal,透過傳參初始化它的型別,如:“貓科類”。它有一個例項方法:run,run函式體內容可自行定義。
答案:
class Animal { constructor(type){ this.type = type; } run(){ alert('I can run'); } }14.基於第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(){ alert('I am eating'); } }15.利用module模組,實現兩個模組A和B,A模組匯出變數name,age和say方法。B模組只匯入變數name和say方法,並且重新命名name為nickname。
//-----模組A-------//var name = "kitty";var age = 15;var say = function(){ //....
作者:a小磊_
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1747/viewspace-2813600/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ES6常見面試題總結面試題
- 面試題總結面試題
- 測試面試題總結面試題
- iOS 面試題總結iOS面試題
- 面試刷題總結面試
- Ajax面試題總結面試題
- 面試問題總結面試
- css面試題總結CSS面試題
- Hadoop面試題總結Hadoop面試題
- PHP面試題總結PHP面試題
- Kafka面試題總結Kafka面試題
- 記錄近期面試題,面試總結面試題
- iOS面試題總結(四)iOS面試題
- iOS面試題總結(三)iOS面試題
- iOS面試題總結(七)iOS面試題
- iOS面試題總結(五)iOS面試題
- iOS面試題總結(六)iOS面試題
- iOS面試題總結(一)iOS面試題
- Nginx 面試題總結大全Nginx面試題
- spring cloud 面試題總結SpringCloud面試題
- 面試題總結-Java部分面試題Java
- 面試題總結-Android部分面試題Android
- iOS面試題總結(二)iOS面試題
- 前端React面試題總結前端React面試題
- RabbitMq面試問題總結MQ面試
- PHP面試問題總結PHP面試
- REDIS面試問題總結Redis面試
- 【Java問題面試總結】Java面試
- Swift面試題總結(一)Swift面試題
- 面試題(五)常見vue相關面試題總結面試題Vue
- 2019 阿里java面試總結 (含面試題解析)阿里Java面試題
- Webpack常見面試題總結Web面試題
- Hadoop面試題總結(三)——MapReduceHadoop面試題
- JVM 基礎面試題總結JVM面試題
- 關於 flex 面試題總結Flex面試題
- 資料庫面試題總結資料庫面試題
- NET近期面試總結和麵試題面試
- Java面試題總結(基礎面試題完結版,2020-10-13)Java面試題