一、es6新语法面试题
1、箭头函数和普通函数有什么不同?
//普通函数 function sum(a, b) { return a + b; } //箭头函数 const sum = (a, b) => { return a + b; } //箭头函数简写 const sum = (a, b) => a + b;
箭头函数是es6新增的一种函数形式,简化了函数书写的形式,语法比普通函数更为简洁,因为在箭头函数中this和arguments指向定义它时所在的作用域,而不是调用它时所在的作用域。因此涉及到this时须谨慎。
2、let和const有什么不同?
let a = 'js'; const b = 'es6';
let和const都是es6新增的定义变量的关键字,其中let定义的变量可以被重新赋值,而const定义的变量不能被重新赋值,所以常用来定义常量。另外,let定义的变量只在块级作用域中有效。
3、如何定义默认参数?
function sayHi(name = 'world') { console.log(`hello ${name}`); } sayHi(); //hello world sayHi('es6'); //hello es6
在es6中,定义默认函数参数非常简单,只需要简单地指定参数值即可。
二、es6语法糖
1、对象解构赋值
const person = { name: 'Tom', age: 18 } const { name, age } = person; console.log(name, age);
对象解构赋值是ES6新增特性之一,它可以让我们从对象中取出一些需要的值,赋给新变量,简化代码写法,提高开发效率。
2、模板字符串
const name = 'Tom'; const greeting = `hello, ${name}!`; console.log(greeting);
模板字符串可以嵌入变量,使用${}包含变量名,从而让字符串的拼接看起来更加简洁直观。
3、展开运算符
const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const arr = [...arr1, ...arr2];
展开运算符可以将一个数组中的每个元素拆开,使其成为函数参数,也可以将两个数组连接起来,相当于调用Array.concat()方法。
三、es6新增特性
1、Promise对象
const promise = new Promise((resolve, reject) => { setTimeout(() => { resolve('success'); //reject('error'); }, 1000); }); promise.then(result => { console.log(result); }).catch(error => { console.log(error); });
Promise是es6中一个用于处理异步操作的对象,它可以避免回调地狱的出现,可读性更好,使用上更为灵活的处理异步编程。
2、模块化
//export.js export function add(a, b) { return a + b; } //import.js import { add } from './export.js'; console.log(add(1, 2));
es6中引入了模块化的概念,可以使用export将模块中的某些方法或变量暴露出来,再使用import引入需要使用的方法或变量。
3、class类
class Animal { constructor(name, age) { this.name = name; this.age = age; } eat(food) { console.log(`${this.name} is eating ${food}`); } } const dog = new Animal('Tom', 3); console.log(dog.name); dog.eat('bone');
class是es6中新增的一个面向对象编程语言特性,可以用来定义类。class中的方法也可以使用extends关键字进行继承。
四、es6常用语法
1、Array.map()
const arr1 = [1, 2, 3]; const arr2 = arr1.map(item => item * 2); console.log(arr2); //[2, 4, 6]
Array.map()是es6中一个常用的数组操作方法,可以遍历数组中的每个元素并对其进行操作,返回操作后的新数组。
2、Array.filter()
const arr1 = [1, 2, 3]; const arr2 = arr1.filter(item => item > 1); console.log(arr2); //[2, 3]
Array.filter()是es6中一个常用的数组操作方法,可以筛选出符合条件的元素组成新的数组并返回。
3、Array.reduce()
const arr1 = [1, 2, 3]; const sum = arr1.reduce((prev, curr) => prev + curr, 0); console.log(sum); //6
Array.reduce()是es6中一个常用的数组操作方法,可以对数组中的所有元素执行一个函数,将其输出到累加器中,最终返回一个累加器的值。
五、es6语法规范
1、代码块
if (true) { console.log('true'); } else { console.log('false'); }
在使用代码块时应注意代码缩进的规范性,特别是在多重代码嵌套时,要注意使用缩进,符合代码阅读规范。
2、命名规范
//变量名的写法 const personName = 'Tom'; //常量名的写法 const PI = 3.14; //方法名的写法 function getUserName() {} //类名的写法 class Animal {}
在命名时,应注意符合规范,具有可读性,建议使用驼峰命名法。
3、注释规范
//单行注释 /*多行 注释*/
在编写代码时,应注意添加注释,有助于他人对代码的理解和维护。