ES
在 ES6 中定义一个对象
class Person{
strict info={
name:”李白”,
age:18
}
}
Var p1=new Person()
基本知识点
原文链接:https://blog.csdn.net/caijunfen/article/details/81001752
1. var let const
let,const 具有块级作用域,不具有变量提升
const 用于不能被重新赋值的变量
2. 箭头函数
我们经常要给回调函数给一个父级的 this
常用办法就是 var self = this 定义一个变量接住他
使用 箭头函数,this 将不会受到影响,可以直接用 this 调用父级的 this
3. 字符串
includes:
const string = 'food';
const substring = 'foo';
console.log(string.includes(substring));
返回的是布尔值。
string.repeat(str,count)
如果 string.length < count 即插入 str 到 count == string.length 为止
4. 模板字符串
const name = 'Tiger';
const age = 13;
console.log(`My cat is named ${name} and is ${age} years old.`);
5.解构
结构数组:
let [a, b, c, d] = [1, 2, 3, 4];
console.log(a);
console.log(b);
结构对象:
var luke = { occupation: 'jedi', father: 'anakin' };
var occupation = luke.occupation;
var father = luke.father;
-------------------------------------------------------------
let luke = { occupation: 'jedi', father: 'anakin' };
let {occupation, father} = luke;
console.log(occupation);
console.log(father);
6.模块
暴露对象:
function sumThree(a, b, c) {
return a + b + c;
}
export { sumThree };
引入:
import { sumThree } from 'math/addition';
7.参数
es6 支持设置默认值:
function addTwoNumbers(x=0, y=0) {
return x + y;
}
8.rest 参数
处理不定数目参数:
function logArguments(...args) {
for (let arg of args) {
console.log(arg);
}
}
9.展开操作
可以展示数组:
Math.max(...[-1, 100, 9001, -32]);
let cities = ['San Francisco', 'Los Angeles'];
let places = ['Miami', ...cities, 'Chicago']; // ['Miami', 'San Francisco', 'Los Angeles',
'Chicago']
10.类
创造类:
class Person {
constructor(name, age, gender) {
this.name = name;
this.age
= age;
this.gender = gender;
}
incrementAge() {
this.age += 1;
}
}
11.Maps
可以理解成键值对
let map = new Map();
map.set('name', 'david');
map.get('name');
map.has('name');
12.Promises
远离回调地狱,可以转换成垂直代码
func1(value1)
.then(func2)
.then(func3)
.then(func4)
.then(func5, value5 => {
});
13.Generators
用同步的代码风格来写异步代码
function* genFunc() {
// (A)
console.log('First');
yield; //(B)
console.log('Second'); //(C)
}
面试题
本文链接:https://blog.csdn.net/yaocong1993/article/details/87956042
1、let、const 和 var 的区别
let 用于声明变量,const 声明常量。const 声明常量时,必须在声明的同时赋值;对普通常
量声明后不能再修改;对引用类型的常量,指向对象存储地址的指针,可以修改其中的内容。
let 和 const 不存在变量提升、重复声明变量、使用未经声明的变量(ES6 强制开启严格模式)
都会报错。var 有变量提升、可以重复声明变量。
let 和 const 只在块作用域中有效。
2、声明变量的方式
ES5:var a;
var b=1;
function add(a){}
ES6:let a;
let b=1;
const b=1;
class Point{}
import { foo } from 'my_module';
2、Object.assign()函数的作用及用法,举例说明
Object.assign 方法用于对象的合并,将源对象的所有可枚举属性,复制到目标对象。第一个
参数是目标对象,后面的参数都是源对象。如果目标对象与源对象或多个源对象有同名属性,
则后面的属性会覆盖前面的属性。
如果只有一个参数,Object.assign 会直接返回该参数。如果该参数不是对象,则会先转成对
象,然后返回。由于 undefined 和 null 无法转成对象,所以如果它们作为参数,就会报错。
如果非对象参数非首参数,那么处理规则有所不同。这些参数都会转成对象,如果无法转成
对象,就会跳过。这意味着,如果 undefined 和 null 不在首参数,就不会报错。数值、字符
串和布尔值,除了字符串会以数组形式,拷贝入目标对象,其它值都不会产生效果。
只拷贝源对象的自身属性,不拷贝继承属性,也不拷贝不可枚举的属性。
浅拷贝,而不是深拷贝,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个
对象的引用。
只能进行值的复制,如果要复制的值是一个取值函数,那么将求值后再复制。
深拷贝和浅拷贝
3、函数声明
const add=(a,b)=>{return a+b} // ES6
const add=(a,b)=>a+b // ES6
function add(a,b){return a+b;}
const add=function(a,b){return a+b};
箭头函数
Promise
4.使用解构赋值,实现两个变量的值的交换(编程题)。
答:
let a = 1;
let b = 2;
[a,b] = [b,a];
6.使用解构赋值,完成函数的参数默认值(编程题)。
function demo({name="王德发"}){
console.log(name);
}
7.利用数组推导,计算出数组 [1,2,3,4] 每一个元素的平方并组成新
的数组。(编程题)
var arr1 = [1, 2, 3, 4];
var arr2 = [for (i of arr1) i * i];
console.log(arr2);
8.使用模板字符串改写下面的代码。(ES5 to ES6 改写题)
let iam = "我是";
let name = "王德发";
let str = "大家好,"+iam+name+",多指教。";
改:
let iam = `我是`;
let name = `王德发`;
let str = `大家好,${iam+name},多指教。`;
9.用对象的简洁表示法改写下面的代码。(ES5 to ES6 改写题)