2021校招准备工作(持续更新)

2021校招准备工作(持续更新)

JavaScript

学好JavaScript,至少把红宝书和犀牛书看三遍。

ES6的新语法

let声明的变量只在 let 命令所在的代码块内有效

let在代码块内有效,var在全局内有效

let只能声明一次,var可以声明多次

for循环适合使用let

for (var i = 0; i < 10; i++) {
  setTimeout(function(){
    console.log(i);
  })
}
// 输出十个 10
for (let j = 0; j < 10; j++) {
  setTimeout(function(){
    console.log(j);
  })
}
// 输出 0123456789

变量 i 是用 var 声明的,在全局范围内有效,所以全局中只有一个变量 i, 每次循环时,setTimeout 定时器里面的 i 指的是全局变量 i ,而循环里的十个 setTimeout 是在循环结束后才执行,所以此时的 i 都是 10。

变量 j 是用 let 声明的,当前的 j 只在本轮循环中有效,每次循环的 j 其实都是一个新的变量,所以 setTimeout 定时器里面的 j 其实是不同的变量,即最后输出 12345。

不存在变量提升

console.log(a);  //ReferenceError: a is not defined
let a = "apple";
 
console.log(b);  //undefined
var b = "banana";

const声明一个只读的常量,一旦声明,常量的值就不能改变

ES6 明确规定,代码块内如果存在 let 或者 const,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。

解构赋值

  • 数组模型的解构
  • 对象模型的解构

Symbol

ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。

ES6 数据类型除了 Number 、 String 、 Boolean 、 Object、 null 和 undefined ,还新增了 Symbol 。

Map与Set

Map对象保存键值对,Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。成员值总是唯一的。

Reflect 与 Proxy

Proxy 用于对编程语言编程,对外界访问进行过滤和改写。Reflect是为了代替Object操作对象提供的新API,比如异常情况下Object.defineProperty会抛出错误,而Reflect.defineProperty会返回false

数值二进制前缀0b/0B和八进制前缀0o/0O

数组

  • 数组创建:Array.of 将参数中所有值作为元素形成数组。
  • 转化数组:Array.from 将类数组对象或可迭代对象转化为数组。

Array.map() :创建一个新数组,其结果是该数组中的每个元素调用一次提供的函数后的返回值。

Array.forEach() :对数组的每个元素执行一次给定的函数。

Object.assign()合并对象

const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };

const returnedTarget = Object.assign(target, source);

console.log(target);
// expected output: Object { a: 1, b: 4, c: 5 }

console.log(returnedTarget);
// expected output: Object { a: 1, b: 4, c: 5 }

箭头函数

基本语法:

参数 => 函数体

使用场景:

为了将外部 this 传递到回调函数中。当需要维护一个this上下文的时候,就可以使用箭头函数。

Iterator迭代器 和 for...of循环

Iterator
  • 通过 Symbol.iterator 创建一个迭代器,指向当前数据结构的起始位置
  • 随后通过 next 方法进行向下迭代指向下一个位置, next 方法会返回当前位置的对象,对象包含了 value 和 done 两个属性, value 是当前属性的值, done 用于判断是否遍历结束
  • 当 done 为 true 时则遍历结束
const items = ["zero", "one", "two"];
const it = items[Symbol.iterator]();
 
it.next();
>{value: "zero", done: false}
it.next();
>{value: "one", done: false}
it.next();
>{value: "two", done: false}
it.next();
>{value: undefined, done: true}
#### ``for...of``循环

for…of 是 ES6 新引入的循环,用于替代 for…in 和 forEach() ,并且支持新的迭代协议。它可用于迭代常规的数据类型,如 Array 、 String 、 Map 和 Set 等等。

const nums = ["zero", "one", "two"];
 
for (let num of nums) {
  console.log(num);
}

Class 类

class作为对象的模版被引入,可以通过class关键字定义类。

class的本质是function。

模块化

export与import
/*-----export [test.js]-----*/
let myName = "Tom";
let myAge = 20;
let myfn = function(){
    return "My name is" + myName + "! I'm '" + myAge + "years old."
}
let myClass =  class myClass {
    static a = "yeah!";
}
export { myName, myAge, myfn, myClass }
 
/*-----import [xxx.js]-----*/
import { myName, myAge, myfn, myClass } from "./test.js";
console.log(myfn());// My name is Tom! I'm 20 years old.
console.log(myAge);// 20
console.log(myName);// Tom
console.log(myClass.a );// yeah!

Promise

Promise是一个对象,可以异步获取操作的信息。

Promise 异步操作有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。除了异步操作的结果,任何其他操作都无法改变这个状态。

then 方法

then 方法接收两个函数作为参数,第一个参数是 Promise 执行成功时的回调,第二个参数是 Promise 执行失败时的回调,两个函数只会有一个被调用。

在 JavaScript 事件队列的当前运行完成之前,回调函数永远不会被调用。

Generator/yield 用于异步编程

Decorator修饰器

许多面向对象的语言都有修饰器(Decorator)函数,用来修改类的行为。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值