1. 箭頭函數(shù)與普通函數(shù)的區(qū)別
// 普通函數(shù) function fn1(a, b) { return a + b; } // 箭頭函數(shù) const fn2 = (a, b) =>a + b;
箭頭函數(shù)是ES6中新增的一種函數(shù)形式,在語法上與普通函數(shù)略有不同。箭頭函數(shù)的幾個特點(diǎn)是:
- 箭頭函數(shù)沒有this,它內(nèi)部的this是引用外部函數(shù)的this。
- 箭頭函數(shù)沒有arguments,如果需要使用,可以使用rest參數(shù)代替。
- 箭頭函數(shù)沒有原型對象,因此不能使用new關(guān)鍵字。
2. 解構(gòu)賦值
// 數(shù)組解構(gòu)賦值 const arr = [1, 2, 3]; const [a, b, c] = arr; console.log(a, b, c); // 1 2 3 // 對象解構(gòu)賦值 const obj = {name: 'Tom', age: 20}; const {name, age} = obj; console.log(name, age); // Tom 20
解構(gòu)賦值是ES6中的一種語法糖,它可以方便地將數(shù)組或?qū)ο笾械闹等〕鰜碣x值給變量。解構(gòu)賦值的語法非常簡單,使用方括號[]表示數(shù)組解構(gòu),使用花括號{}表示對象解構(gòu)。
3. Promise
const fs = require('fs'); const readFile = function (fileName) { return new Promise(function (resolve, reject) { fs.readFile(fileName, function (err, data) { if (err) return reject(err); resolve(data); }); }); }; readFile('test.txt').then(function (data) { console.log(data.toString()); }).catch(function (err) { console.log(err); });
Promise是ES6中新增的一種異步編程模型,它可以讓異步編程更加簡單和直觀。使用Promise可以將回調(diào)函數(shù)寫成鏈?zhǔn)秸{(diào)用的形式,從而形成Promise鏈,這樣就可以更加清晰地表達(dá)程序的邏輯。
4. async/await
const fs = require('fs'); const readFile = function (fileName) { return new Promise(function (resolve, reject) { fs.readFile(fileName, function (err, data) { if (err) return reject(err); resolve(data); }); }); }; const asyncFn = async function (fileName) { try { const data = await readFile(fileName); console.log(data.toString()); } catch (err) { console.log(err); } }; asyncFn('test.txt');
async/await是ES7中新增的異步編程模型,它是Promise的語法糖,可以讓異步編程更加簡單和直觀。使用async/await可以將異步代碼寫成同步的形式,從而更容易理解和維護(hù)。使用async關(guān)鍵字將函數(shù)聲明為異步函數(shù),然后在需要等待異步操作的地方使用await關(guān)鍵字。
5. class
class Person { constructor(name, age) { this.name = name; this.age = age; } sayHi() { console.log(`Hi, my name is ${this.name}, I am ${this.age} years old.`); } } const tom = new Person('Tom', 20); tom.sayHi();
class是ES6中新增的一種類聲明語法,它將原型鏈的概念更加清晰地表達(dá)出來。具有類聲明語法的JavaScript代碼更加易于理解和維護(hù),也更加符合面向?qū)ο蟮木幊趟枷搿J褂胏lass關(guān)鍵字聲明一個類,使用constructor方法定義類的構(gòu)造函數(shù),其他的屬性和方法則直接編寫在類的聲明中。
以上就是幾個常見的JavaScript E6面試題。如果您正在準(zhǔn)備前端面試,這些問題有可能會出現(xiàn)在面試中,希望對您能有所幫助。如果您想深入了解JavaScript E6,可以繼續(xù)學(xué)習(xí)其他的特性和語法,鞏固基礎(chǔ),提升能力。