1. 前端面试知识点(1)
1.1 ES6和JS的关系
ECMAScript 6是规范,JS是对于这个规范的实现,TS是JS的超集。
babel是转码器,作用是把ES6转为浏览器识别的ES5。
1.2 var和let、const的区别
- let、const不存在变量提升,并且在同一个作用域下不能重复定义相同的一个变量名称
- let、const有着严格的作用域,属于块级作用域
- var存在预解析,可以变量提升
- var属于函数作用域,作用在整个函数体内,以function来分割
- let属于块级作用域,以{ }来分割
1.3 let和const的区别
- const声明一个只读的常量,一旦定义常量的值,就不能进行修改,可以保护全局变量不受污染
const i
会报错误信息,因为const一旦定义不能只声明不赋值,一定要初始化
1.4 箭头函数
箭头函数有人也称之为语法糖,它简化了函数的定义
let f = v => v; //ES6写法
//等同于
var f = function(v){ //ES5写法
return v;
}
let f = (n1,n2) => n1 + n2; //ES6写法
//等同于
var f = function(n1,n2){ //ES5写法
return n1 + n2;
}
let f = (n1,n2) => ({a:n1,b:n2}); //ES6写法
//等同于
var f = function(n1,n2){ //ES5写法
return {a:n1,b:n2};
}
var a = arr.filter(item => item > 10); //ES6写法
//等同于
var a = arr.filter(function(item){ //ES5写法
return item > 10
})
1.5 ES6中set、map数据结构
- set 类似于数组,且内部成员是唯一的
var arr = [1,2,3,4,4,5,1,2,5,4];
var s2 = new Set(arr);
console.log(s2);
// 输出 s2 = {1,2,3,4,5}
例如数组去重,去重返回的还是数组
var arr = [1,2,3,4,4,5,1,2,5,4];
var s3 = [...new Set(arr)]; //'...'是ES6中的扩展运算符
console.log(s3);
//输出 s3 = [1,2,3,4,5];
- map 类似于对象,以键值对的方式进行存储
let m = new Map();
m.set('name','小李').set('age',18).set('sex','男'); //必须以键值对形式存储
// 也可以用以下方法进行set存储
let m = new Map([['name','小李'],['age',18],['sex','男']]);
未完待续…